关键词:
KDJ随机指标策略
策略介绍
KDJ指标又叫随机指标,是一种相当新颖、实用的技术分析指标,它起先用于期货市场的分析,后被广泛用于股市的中短期趋势分析,是期货和股票市场上最常用的技术分析工具。
随机指标KDJ一般是用于股票分析的统计体系,根据统计学原理,通过一个特定的周期(常为9日、9周等)内出现过的最高价、最低价及最后一个计算周期的收盘价及这三者之间的比例关系,来计算最后一个计算周期的未成熟随机值RSV,然后根据平滑移动平均线的方法来计算K值、D值与J值,并绘成曲线图来研判股票走势。适合趋势分析。
计算公式
(1)N日的RSV值(未成熟随机指标)
RSV(n)=(Cn-Ln)÷(Hn-Ln)×100
(2)计算K值
K = 2/3 * 前一日K 值+ 1/3 * 当日RSV
(3)计算D值
D = 2/3 * 前一日D值+ 1/3 * 当日K值
(4)计算J值
J = 3 * D – 2 * K
其中,Cn为第n日收盘价;Ln为n日内的最低价;Hn为n日内的最高价。
当没有前一日的K值或D值时,用50来代替。
使用方法
由KDJ指标的公式我们可以看出,K值和D值一定位于0到100之间。根据KDJ的取值,可将其划分为几个区域,即超买区、超卖区和徘徊区。按一般划分标准,K、D、J这三值在20以下为超卖区,是买入信号;K、D、J这三值在80以上为超买区,是卖出信号;K、D、J这三值在20-80之间为徘徊区,宜观望。
从变化趋势上看,K值比D值变化要快,而J值最快。我们可以从KDJ三条线的走势上判断行情。
本策略在D<20, K线和D线同时上升,且K线从下向上穿过D线时,全仓买入;当 D>80, K线和D线同时下降,且K线从上向下穿过D线时,全仓卖出。
优点
KDJ指标在计算中考虑了计算周期内的最高价、最低价,兼顾了股价波动中的随机振幅,因而人们认为随机指标更真实地反映股价的波动,其提示作用更加明显。
缺点
(1) 在短期波动剧烈或者瞬间行情幅度太大时,使用KD值交叉讯号买卖,经常发生买在高点、卖在低点的窘境。
(2) 极强或者极弱的行情,会造成指标在超买或超卖区内上下徘徊,反复震荡,出现来回金叉死叉的钝化现象,此时KDJ指标的状态让投资者无法继续按照买卖标准继续使用。
KDJ指标较为适用于震荡的行情,通过对超买超卖的判断以及价格走势的分析来产生交易信号。这里使用30分钟频率来回测,所以回看周期不宜过大,否则会有很大的滞后性。
在急速的上涨和下跌中反应的都很慢,甚至出现的高买低卖的现象。所以在使用KDJ指标时,要结合其他指标一起使用,对行情有所判断,不能盲目交易。
总结
KDJ指标利用一段时间的最高价、最低价以及收盘价,绘制出了3条参考线。利用这三条线,可以有很多种不同的使用方法。KDJ比较适合在中短期的震荡行情中使用,而在单边行情或是急剧的大幅震荡中效果不佳,使用者需要结合其他指标对行情进行判断,再考虑择机使用。
代码
# !/usr/bin/env python # -*- coding: utf-8 -*- # 策略代码总共分为三大部分,1)PARAMS变量 2)initialize函数 3)handle_data函数 # 请根据指示阅读。或者直接点击运行回测按钮,进行测试,查看策略效果。 # 策略名称:KDJ指标策略 # 策略详细介绍:https://wequant.io/study/strategy.kdj.html # 关键词:随机指标、中短期。 # 方法: # 1)通过特定周期内的最高价、最低价、收盘价以及移动平均线法计算KDJ值; # 2)用KDJ判断超买超卖线,超买则卖出,超卖则买入。 import numpy as np import talib # 阅读1,首次阅读可跳过: # PARAMS用于设定程序参数,回测的起始时间、结束时间、滑点误差、初始资金和持仓。 # 可以仿照格式修改,基本都能运行。如果想了解详情请参考新手学堂的API文档。 PARAMS = { "start_time": "2017-02-01 00:00:00", # 回测起始时间 "end_time": "2017-08-01 00:00:00", # 回测结束时间 "slippage": 0.003, # 此处"slippage"包含佣金(千二)+交易滑点(千一) "account_initial": {"huobi_cny_cash": 100000, "huobi_cny_btc": 0}, # 设置账户初始状态 } # 阅读2,遇到不明白的变量可以跳过,需要的时候回来查阅: # initialize函数是两大核心函数之一(另一个是handle_data),用于初始化策略变量。 # 策略变量包含:必填变量,以及非必填(用户自己方便使用)的变量 def initialize(context): # 设置回测频率, 可选:"1m", "5m", "15m", "30m", "60m", "4h", "1d", "1w" context.frequency = "30m" # 设置回测基准, 比特币:"huobi_cny_btc", 莱特币:"huobi_cny_ltc", 以太坊:"huobi_cny_eth" context.benchmark = "huobi_cny_btc" # 设置回测标的, 比特币:"huobi_cny_btc", 莱特币:"huobi_cny_ltc", 以太坊:"huobi_cny_eth" context.security = "huobi_cny_btc" # 设置策略的参数 # 快线回看周期为9 context.user_data.fastk_period = 9 # 慢线回看周期为3 context.user_data.slowk_period = 3 context.user_data.slowd_period = 3 # 使用简单平均 context.user_data.slowk_matype = 0 # 每个frequency读取历史数据的bar数 context.user_data.longest_history = 100 # 超买信号线 context.user_data.over_buy_signal = 80 # 超卖信号线 context.user_data.over_sell_signal = 20 # 至此initialize函数定义完毕。 # 阅读3,策略核心逻辑: # handle_data函数定义了策略的执行逻辑,按照frequency生成的bar依次读取并执行策略逻辑,直至程序结束。 # handle_data和bar的详细说明,请参考新手学堂的解释文档。 def handle_data(context): # 获取历史数据, 取后longest_history根bar hist = context.data.get_price(context.security, count=context.user_data.longest_history, frequency=context.frequency) if len(hist.index) < context.user_data.longest_history: context.log.warn("bar的数量不足, 等待下一根bar...") return # 最高价 high_prices = np.array(hist["high"]) # 最低价 low_prices = np.array(hist["low"]) # 收盘价 close_prices = np.array(hist["close"]) # matype: 0=SMA, 1=EMA, 2=WMA, 3=DEMA, 4=TEMA, 5=TRIMA, 6=KAMA, 7=MAMA, 8=T3 (Default=SMA) # 用talib计算K,D两条线 K, D = talib.STOCH(high_prices, low_prices, close_prices, fastk_period=context.user_data.fastk_period, slowk_matype=context.user_data.slowk_matype, slowk_period=context.user_data.slowk_period, slowd_period=context.user_data.slowd_period) current_k_value = K[-1] current_d_value = D[-1] previous_k_value = K[-2] previous_d_value = D[-2] long_signal_triggered = False short_signal_triggered = False context.log.info("当前 K = %s, D = %s; 前一周期 K = %s, D = %s" % (current_k_value, current_d_value, previous_k_value, previous_d_value)) # 生成买入/卖出信号 # 当D < 超卖线, K线和D线同时上升,且K线从下向上穿过D线时,买入 if current_d_value < context.user_data.over_sell_signal and current_d_value > previous_d_value and current_k_value > previous_k_value and previous_k_value < previous_d_value and current_k_value > current_d_value: long_signal_triggered = True # 当D > 超买线, K线和D线同时下降,且K线从上向下穿过D线时,卖出 elif current_d_value > context.user_data.over_buy_signal and current_d_value < previous_d_value and current_k_value < previous_k_value and previous_k_value > previous_d_value and current_k_value < current_d_value: short_signal_triggered = True # 有卖出信号,卖出全部仓位 if short_signal_triggered: if context.account.huobi_cny_btc >= HUOBI_CNY_BTC_MIN_ORDER_QUANTITY: context.log.info("产生卖出信号") # 若持有仓位,则全仓卖出 if context.account.huobi_cny_btc >= HUOBI_CNY_BTC_MIN_ORDER_QUANTITY: context.log.info("正在卖出 %s" % context.security) context.log.info("卖出数量为 %s" % context.account.huobi_cny_btc) context.order.sell(context.security, quantity=str(context.account.huobi_cny_btc)) else: context.log.info("仓位不足,无法卖出") # 有买入信号,全仓买入 elif long_signal_triggered: context.log.info("产生买入信号") if context.account.huobi_cny_cash >= HUOBI_CNY_BTC_MIN_ORDER_CASH_AMOUNT: context.log.info("正在买入 %s" % context.security) context.log.info("下单金额为 %s 元" % context.account.huobi_cny_cash) context.order.buy(context.security, cash_amount=str(context.account.huobi_cny_cash)) else: context.log.info("现金不足,无法下单") else: context.log.info("无交易信号,进入下一根bar")
15m
30m
60m
4h
1d
wequant交易策略—简单均线
简单双均线策略(SimpleMovingAverage)策略介绍简单双均线策略,通过一短一长(一快一慢)两个回看时间窗口收盘价的简单移动平均绘制两条均线,利用均线的交叉来跟踪价格的趋势。这里说的简单是指在求平均值的时候采用的是算... 查看详情
wequant交易策略—atr
ATR(真实波幅均值)策略策略介绍ATR(averagetruerange,真实波幅均值),是用来衡量一段时间内价格的真实的平均波动范围,ATR不是一个领先指标,但是它测量最重要的市场参数之一——价格波动。ATR主要应用于了解股价的震荡... 查看详情
wequant交易策略—ema指标
策略名称:EMA指标策略关键词:指数移动平均、双均线、动态止损。方法:1)用快慢两条指数移动平均线的交叉作为买入卖出信号;2)快线自下而上穿过慢线,买入;自上而下穿过慢线,卖出;3)持仓期间计算净值的回撤,当... 查看详情
wequant交易策略—5日均线
简单的价格突破策略。当前价格超过最近5个收盘价的均价,则全仓买入;低于均价,则全仓卖出 代码#简单的价格突破策略。当前价格超过最近5个收盘价的均价,则全仓买入;低于均价,则全仓卖出#PARAMS用于设定程序参数,... 查看详情
量化交易准备资料-短线策略
一、KDJ指标相关:快速确认线K:K>90定义为超买,K<10定义为超卖慢速主干线D:D>80定义为超买,D<20定义为超卖方向敏感线J:J>90连续n天(3,4,5)有短期头部之嫌 ... 查看详情
ajpfx平台:02.15日内交易策略
...阻力看前期高点28500附近,低位支撑看28000点整数关口,交易思路上低多为 查看详情
ajpfx平台:02.21日内交易策略
...继续走高,上方阻力看多空分水岭29000点整数关口。今日交易思路:趋势上顺势看多,以 查看详情
ajpfx平台:03.29日内交易策略
AJPFX恒指:恒指昨日趋势呈震荡上行最高走到上方28862附近承压下行,目前来看四小时线MA5收线在下方28750附近形成短期支撑位,小时线来看KDJ有上行迹象,日内上方需关注28850附近压制位,下方需关注28500附近支撑位,今日操作... 查看详情
ajpfx平台:03.27日内交易策略
AJPFX恒指:恒指昨日趋势呈震荡上行最高走到上方28711附近承压下行,目前来看四小时线MA5收线在下方28587附近形成短期支撑位,1小时线来看KDJ有下行迹象,日内上方需关注28714附近压制位,下方需关注28250附近支撑位,今日操作... 查看详情
ajpfx平台:03.20日内交易策略
...近,KDJ三线位于超买区,看中线多头力量预计持续走强,交易思路上,回调做多为主!恒指1小时K线图& 查看详情
ajpfx平台:02.19日内交易策略
AJPFX恒指:恒指日线上看,昨日恒指触及上行趋势线后受到支撑大幅反弹,上方阻力依旧关注前日高点28500附近,目前恒指走势背离,若持续高位宽幅整理高点未破,预计会有较大幅度回调走势。四小时上看,经过上周冲高回落... 查看详情
ajpfx平台:03.14日内交易策略
AJPFX恒指:恒指上个交易日走势上冲到上方最高点是28966,下方跌到最低点位是28710。低开以后先进行了短周期的空头调整,而后维持了多头运行。目前日线上看,昨日K线收线收了根下影线稍长的阴线,下跌跌穿10日均线,最后收... 查看详情
ajpfx平台:03.06日内交易策略
AJPFX恒指:恒指上个交易日走势上冲到上方最高点是28989,下方跌到最低点位是28617。受A股市场提振,昨日恒指日内全线走多,美股晚间收跌,尾盘价格有所回撤,但整体多头未被打破!盘面上分析,K线昨日收阳,跌到下方10日... 查看详情
ajpfx平台:03.21日内交易策略
AJPFX恒指:恒指上个交易日走势上冲到上方最高点是29630,下方跌到最低点位是29261。昨天整体趋势偏空震荡,晚间尾盘直接跌下百点,昨日美股涨跌不一,道指收跌逾140点,银行股领跌。导致恒指进行空头调整,目前日线上看,... 查看详情
ajpfx平台:03.22日内交易策略
AJPFX恒指:恒指上个交易日走势上冲到上方最高点是29477,下方跌到最低点位是29000附近。昨日恒指高开震荡,日内进行了空头的回撤,晚间恒指受美股及道指纳指影响,进行了回调,盘面上看,目前日线上看,昨日K线收线收了... 查看详情
如何用java实现股票的自动化交易
1、目前,中国股市中,股票自动化交易简称自动交易或机器交易,是投资策略家将自己的交易策略系统化了的电脑程序。这种电脑程序能够代替人在互联网上进行股票、期货、黄金、外汇等证券的交易,故称智能自动化交易。2... 查看详情
帮编写做金字塔策略公式通达信选股公式代写长短龙行kdj副图指标公式
飞狐kdj通道指标公式帮编写做金字塔策略公式、通达信选股公式代写、长短龙行KDJ副图指标公式飞狐龙行KDJ副图指标源码原理解析RSV赋值:(收盘价-7日内最低价的最低值)/(7日内最高价的最高值-7日内最低价的最低值)*100输出短K:RSV... 查看详情
交易策略
交易策略=====================https://www.zhihu.com/question/341345227/answer/1277779638链接:https://www.zhihu.com/question/341345227/answer/1277779638一、心态上,先做好被锤的准备。这不是一句废话。走出社会多年,才深刻理解到,从小被教育的“端正... 查看详情