全球市场空头情绪仍然很浓重。截至收盘,上证指数 -1.83%,深圳指数 -1.70%,今日小幅高开后,第二次冲锋时被日线的5日均线给压制住了,掉头大跌!那么针对最近的极端行情,用什么技术分析方法,进行决策交易比较合理呢?这就是接下来要进行分享的 “多周期研判”,机械交易。
一、多周期研判进行决策交易,也称跨周期交易。是通过某个品种,采用两个及以上的K线周期进行研判的交易模式。例如,我们将股指期货 IF2003合约,将分成4个周期来进行交易,分别是 2小时、1小时、15分钟、1分钟。

多周期交易最常用的分析步骤:
1.大周期研判趋势,为定势!例如:2小时的多头趋势
2.小周期寻找适合自己交易系统的“关键点”进行交易。例如:15分钟背离,回调买入等。
示意图:

当然这仅仅是一个简单的示意图,其中还有很多的点没有展现出来。
多周期交易最大的优势:
1.顺大势,避免站错多空阵营。这一点很重要,首先做为趋势交易者来说,判断当前趋势是多头趋势还是空头趋势非常重要。但这里要提醒一点,至少要有两个周期,分别是交易周期和研判周期,如果没有确定交易周期,就无法确定你到底要做哪个周期的趋势!

2.显微镜,如果将大周期比喻成放大镜,那么小周期便是显微镜。当确定了大势到底是多头阵营还是空头阵营后,应该切换至小周期进行仔细观察其构造,例如:k线形态、浪型、指标背离等细节,跟随大趋势,伺机而动。

以上,就是对多周期分析概念、方法、优势进行简单的介绍。接下来,将分享跨周期的算法及如何利用python语言进行分析和跨周期策略的编写。
二、跨周期的算法。跨周期的算法并不难,只要理解了k线的合成规则就能轻松掌握。
一般来讲,我们都会将多个周期的指标值进行叠加在自己的主交易周期上,这样做既可以及时看清当前是多头阵营还是空头阵营,还可以捕捉到小周期中的k线形态、浪型、指标背离等细节变化。
因此,要实现这种效果,就必须遵循以下公式:
1.首先,我们应该要计算出小周期中需要多少根k线,才能算出大周期指标的一点的值。
大周期均线参数 * 大周期 = 总共k线数
2.得到了总共的k线数,就可以计算出小周期内的切序长度。
总分钟数 / 小周期 = 小周期内切序长度
3.例如:1分钟k线上,获取5分钟周期的20均线。
5分钟20均线
20 * 5 = 100分钟
100 / 1 = 100根
因此,需要1分钟周期的 200根K线才能计算出大周期的一个点均线值。然后,按照这样的长度,进行滚动求值。
效果展示:

5分钟周期20均线

1分钟获取5分钟周期20均线

1分钟获取5分钟周期均线叠加效果
三、跨周期策略编写。这一部分,带大家如何通过多周期进行跨周期策略的编写,策略仅为讲解实现过程,并没有做过多的优化,因此效果并不是很好。
1.策略逻辑:
(1)当5分钟周期收盘价大于2小时周期的20均线,判定为多头趋势。5分钟如果均线金叉,开多。
(2)5分钟如果均线死叉,平多。空头相反。
2.代码编写:
(1)导入相应的包。

from tqsdk import TqApi,TqSim,TqBacktest,TargetPosTask
from datetime import date
import NJ_Finance as nj
from 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进行代码的编写。跨周期的主要目的,是为了确定趋势然后在小周期进行顺势进行操作,这样对正确率有很大的提高。
不过,如果按照这样的方法进行分析的话,由于均线具有严重的滞后性,因此某些时候会漏掉大行情的起始部分,没关系,不能患得患失,所谓舍得,有舍才有得。
如果觉得不错,欢迎关注点赞,转发哦~!更多干货尽在“牛角问答”。