全球市场看跌情绪仍然非常强烈。截至收盘,上证指数 -1.83%,深圳指数 -1.70%,今日小幅高开后,第二次冲锋时受到日线5日均线压制,掉头大跌!那么,针对近期的极端行情,采用哪些技术分析方法来使决策交易更加合理呢?这就是接下来要分享的“多周期判断”,机械交易。
一、多周期研判进行决策交易,也称跨周期交易。是一种交易模式,通过两个或多个k线周期来判断某个品种。例如,股指期货的IF2003合约将按4个周期进行交易,即2小时、1小时、15分钟和1分钟。
多周期交易最常用的分析步骤:
1.在一个大周期内研究判断趋势,这是固定的趋势!例如:2小时看涨趋势
2.寻找适合自己交易系统的“要点”进行小周期交易。比如:15分钟背离,回调买入等。
示意图:
当然,这只是一个简单的示意图,还有很多点没有显示出来。
多周期交易最大的优势:
1.顺应大势,避免站错多空阵营。这一点非常重要。首先,作为趋势交易者,判断当前趋势是多头趋势还是空头趋势是非常重要的。但这里提醒一下,至少要有两个周期,即交易周期和研判周期。交易周期没确定,就不能确定自己要做哪个周期!
2.显微镜,如果把大周期比作放大镜,那么小周期就是显微镜。在确定大趋势是多头阵营还是空头阵营后,要切换到小周期仔细观察其结构,如k线形态、波浪形态、指标背离等细节。顺应大势,伺机而动。
以上是对多周期分析的概念、方法和优点的简单介绍。接下来,将分享跨周期的算法及如何利用python语言进行分析和跨周期策略的编写。
二、跨周期的算法。's跨周期算法并不难,只要你了解k线的构成规律,你就能轻松掌握它。
一般来说,我们会在自己的主交易周期上叠加多个周期的指标值。这样做,不仅可以及时看出当前是多头阵营还是空头阵营,还可以捕捉到小周周期内k线形态、波浪形态、指标背离等细节变化。
因此,要实现这种效果,就必须遵循以下公式:
1.首先要计算小周期周期需要多少根k线才能算出大周期指数一个点的价值。
大周期移动平均线参数*大周期=k线总数2。如果得到k线总数,就可以计算出小周期内的切线长度。
总分钟数/次要周期=次要周期中内部序列的长度
/code>3.例如:1分钟k线上,获取5分钟周期的20均线。
5分钟20均线20 * 5 = 100分钟100 / 1 = 100根
因此,需要1分钟周期的 200根K线才能计算出大周期的一个点均线值。然后,按照这样的长度,进行滚动求值。
效果展示:
三、跨周期策略编写。这一部分,带大家如何通过多周期进行跨周期策略的编写,策略仅为讲解实现过程,并没有做过多的优化,因此效果并不是很好。
1.策略逻辑:
(1)当5分钟周期收盘价大于2小时周期的20均线,判定为多头趋势。5分钟如果均线金叉,开多。
(2)5分钟如果均线死叉,平多。空头相反。
2.代码编写:
(1)导入相应的包。
from tqsdk import TqApi,TqSim,TqBacktest,TargetPosTaskfrom datetime import dateimport NJ_Finance as njfrom tqsdk.ta import MA
(2)设置参数变量。
class k_trading(): "tqsdk 跨周期案例" def __init__(self): self.symbol = "CFFEX.IF2003" # "SHFE.rb2005" self.length = 5 # 小周期 self.k_length = 120 # 大周期 self.Position_flag = 0 # 开平标志,控制开平顺序 self.api = TqApi(TqSim(), backtest=TqBacktest(start_dt=date(2019, 12, 1), end_dt=date(2020, 3, 18)), web_gui=True) # 回测账户、区间设置 self.klines = self.api.get_kline_serial(self.symbol,60*self.length,8000) self.target_pos = TargetPosTask(self.api, self.symbol) # 目标持仓 self.ma20 = 0 self.ma30 = 0
(3)开仓平仓部分,这一部分将使用牛角财经官方 模块 NJ_Finance 中的 k_ma() 方法进行跨周期均线的计算,关注头条号私聊作者即可领取。
def trading(self): while True: self.api.wait_update() self.klines = nj.k_ma(self.klines, self.length, self.k_length, 20) self.ma5 = MA(self.klines, 5) self.ma20 = MA(self.klines, 20) self.klines["ma5"] = self.ma5.ma self.klines["ma20"] = self.ma20.ma if self.api.is_changing(self.klines.iloc[-1],'datetime'): "如果当前无持仓" if self.Position_flag == 0: if self.klines['close'].iloc[-1] > self.klines['k_ma20'].iloc[-1]: if self.klines.ma5.iloc[-1]>self.klines.ma20.iloc[-1] and self.klines.ma5.iloc[-2] <= \ self.klines.ma20.iloc[-2]: self.target_pos.set_target_volume(1) self.Position_flag = 1 "如果当前持有多仓" if self.Position_flag == 1: if self.klines.ma5.iloc[-1] < self.klines.ma20.iloc[-1] and self.klines.ma5.iloc[-2] >= \ self.klines.ma20.iloc[-2]: self.target_pos.set_target_volume(0) self.Position_flag = 0
(4)策略回测。
标的:股指IF2003
周期:5分钟
回测资金:1000000
回测区间:2019-12-1 至 2020-3-18
案例只回测多头。
回测细节:
回测结果:
最近的股指行情中,价格大部分处于2小时的20均线以下,此时短线不宜做多,因按照顺空头趋势,反弹做空的方法进行操作。
总结:
文章主要讲解如何利用多周期对股指期货进行分析,并且分享了如何利用python进行代码的编写。跨周期的主要目的,是为了确定趋势然后在小周期进行顺势进行操作,这样对正确率有很大的提高。
不过,如果按照这样的方法进行分析的话,由于均线具有严重的滞后性,因此某些时候会漏掉大行情的起始部分,没关系,不能患得患失,所谓舍得,有舍才有得。
如果觉得不错,欢迎关注点赞,转发哦~!更多干货尽在“牛角问答”。