7

小白期货CTP程序化交易开发入门(二)--一个简单的交易策略

 3 years ago
source link: https://zhuanlan.zhihu.com/p/23132875
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

小白期货CTP程序化交易开发入门(二)--一个简单的交易策略

专注数字货币的程序化交易
在接触量化交易时,一开始接触的是网站平台,可以直接在上面写Python策略,也简单学了些Python,不过后面还是比较喜欢自己来写程序,而期货的方面,可以随时卖买,才决定专注在期货方面,不过当时还没上线期货的策略。

在前一节中有简单介绍了下Tick数据的获取,这边先介绍下策略的一些观念。

策略简单来说,就是交易的逻辑,比如开仓时机、平仓时机、持仓管理、风险管控等,一个策略就可以成为一个简单的交易系统。

对于程序化交易来说,开仓和平仓主要是靠技术指标的来实现的,指标可以是软件上常用的指标,如MACD、KDJ等,也可以自己通过一定的逻辑来制定的指标,当该指标满足某个条件,就开仓(如金叉),满足另一个条件,就做平仓(如死叉)。

持仓管理,即每次交易的仓位,有些是每次固定手数,而有些如海龟交易法则是分次加减仓。

举个简单的策略,如双均线策略,在MA5向上突破MA20的时候,买入开仓;在MA5向下击穿MA20的时候,卖出平仓。

对于信号点,都要采用数字化,这是初学者最难处理的问题,比如逻辑为突破前一次的最大值,如果看图,可能直接看出来,但是对于程序化交易来说,就要分解成,是突破过去多长时间的最大值,而这个时间是最不好定义的。

回到双均线策略,很多交易入门的人,都会看到网上,或者书上说的,金叉买入、死叉卖出,而且都是声称是必定会赚钱的方法,对于程序化交易来说,那就先来分析看看,这个策略真的能赚到钱吗?C#的判断逻辑代码如下:

注意,在每个K线未结束时,对应的指标如MA、MACD等都是一直在变动的,因此,只能针对前一K柱或更前面的K柱进行计算。在一开始接收CTP行情时,需要将数据转化为K线数据,保存到DataTable中,以便数据的即时处理。

针对rb1701合约,选择期间2016-07-20~2016-09-20期间进行回测(期间的选择要有代表性,不能选单纯的上涨行情或下跌行情,否则策略结果很好,实际可能也会很差),本次选择中7/20-8/24为上涨周期,8/25-9/20为下跌周期。

分别对1分钟和5分钟数据进行双均线系统回测,按每个点数10元,手续费每手6元(开仓+平仓),每次只开仓1手,计算如下:

其中,1分钟K线交易457次,手续费为2742元;5分钟K线交易94次,手续费为564元。

可以明显看在下跌过程中,双均线系统的收益很差(本策略只考虑简单的做多,未做空,有兴趣的可以自己试试)。从细节上来分析看,在上涨过程中明显可以赚到,而在振荡或下跌过程中,则会有较多的负收益信号。(箭头向上代表买入,箭头向下代表卖出)

实际交易中,还需要考虑滑点的问题,比如说,策略是按开盘价买入,而实际的过程中,可能一开盘,价格就被拉长,只能按更高的价格去做买入,所以在程序化的策略中,要考虑如按开盘价买入,而价格一直上涨,则要先做撤单,再重新报单买入;平仓也是。

关于策略问题,因本身也是小白,所以也只能是做这些简单的介绍。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK