基于平台的程序化交易模型实现方式

发布时间:2021-01-04 16:47 作者: 周杨 投资咨询资格号Z0015971 阅读次数:

徽商期货有限责任公司

投资咨询业务资格

皖证监函字【2013】280号

周杨  量化分析师

从业资格号:F3047853

投资咨询资格号:Z0015971

成文日期:2020.12.22

摘要

    程序化交易拥有许多无可比拟优点,比如:可以避免交易的情绪化、提高交易决策的效率、一定程度的分散交易风险、降低人工交易的成本等。这些优点所对应的都是大多数交易者日常交易中经常需要面对的问题。如果能够设计研发出一套可以稳定盈利的程序化交易模型,那么无疑可以使我们的交易事半功倍。但是程序化交易对于大多数投资者来说,可能显得很陌生。我们普通的投资者朋友如何实现简易的程序化模型?实现的步骤又是怎样的?请听下文娓娓道来。


一、浅析程序化交易

    近年来程序化交易在国内股票及商品市场愈发火热,无论是个人投资者还是机构投资者都热衷于把自己的交易思想通过计算机语言表达,在市场中实现。最早的程序化交易可以追溯到1975年,当时有一批精通计算机技术的交易者,把掌握的计算机技术运用于股票市场,让交易的下单过程实现了自动化。

    程序化交易发展至今已经有40余年,最初的纽约证券交易所对于程序化交易的定义为任何一笔包含超过15种股票并且总市值超过100万美元的交易都可视为程序化交易。但是随着时代的发展与计算机技术的进步,学术界目前并没有对程序化交易形成一个统一的定义。国内通常所说的程序化交易主要是指应用计算机技术,依据一定的交易思想形成交易规则,并构建交易策略,实现自动下单的交易过程,对于程序化交易的定义更注重于交易过程实现和下单功能实现的自动性,类似于通常我们所说的量化交易,强调交易执行层面的客观性、可测量性、可复现性,而狭义上的程序化交易仅仅是指通过计算机程序辅助完成交易的一种交易方式,强调的是策略实现手段上的自动执行,更多的类似于一种下单工具。当然今天我们要说的是广义上的程序化交易。

二、程序化交易系统的开发

    程序化交易系统的开发一般要遵循一定的流程,大体上分为策略思想的构建、策略数据的获取、策略功能的实现,每个流程都要确保不出差错,最终的程序化交易系统才能稳定的运行。

(一)策略思想的构建

    程序化模型最终的运行效果很大程度上取决于模型的策略思想,无论你的代码架构怎么设计,参数如何优化,最终都绕不开交易逻辑,所以我们开发程序化交易系统的第一步,也是影响策略效果的关键一步就是策略思想的构建。构建策略思想首先要明确策略的运行周期,也就是我要做多大级别K线,不同级别的K线,日内的K线数量是不同的,K线数据差别也很大,所以首先要明确周期;其次就是策略的类型,趋势追踪策略、通道突破策略、回归策略、震荡策略等等,明确了策略的类型以后,我们就可以搭建策略的框架,搭建的策略框架大体可以从以下几种途径获取:

1.经典的交易理论

    我们耳熟能详的一些交易系统比如:海龟交易法则、布林通道系统等;我们常见的一些交易指标比如:CCI指标、MACD指标、KDJ指标、RSI指标等;书中经典的理论比如:艾略特波浪理论、道氏理论、缠论等;这些指标和理论系统,有的具有具体的应用场景,那么我们可以尽力去实现它,有的只有指标,这时候我们需要根据指标所表达的意思来构建信号体系,完成自动化交易的实现。比如我们常见的MACD指标实际上仅仅只有图形,并没有信号,这时候就需要我们加入信号系统,根据指标的含义实现买卖交易。



    如上图所示,图2为没加入买卖信号的MACD指标,仅仅是在图中显示了MACD的几条参数线,而图3加入了买卖信号点,那么当条件满足以后,就会出现交易信号,系统也会根据信号完成自动化交易。当然也有一些经典的系统,里面不但含有参数指标,还有信号系统,有明确的进出场、止盈止损,加减仓体系,那么我们就可以根据这些条件来实现我们的交易系统。如下图就是海龟交易系统的简单演示效果。



2.基本面信息量化

    这种方式主要是依据对于基本面相关信息的收集和挖掘,推演出后期行情的走势。比如到港量数据、运输量数据、压榨量数据、以及一些宏观方面的用电量、价格指数等数据,建立相关的模型,预期后市行情的演变。这种策略的框架丰富多样,策略的开发者大多认为逻辑可行,相关数据确实能准确的预测未来的价格走势,对于指标的运算并没有严格的标准,主要依赖于设计的计算模型。

3.交易经验总结

    市场上除了程序化交易之外,还有主观交易,这些主观交易主要依赖的就是个人交易经验的日积月累,特别是在国内,目前市场中占据大多数还是主观交易,那么在这些主观交易者之中也有很多投资交易的佼佼者,他们有着自己的一套交易体系,所以这些人的交易思路就成为了很多程序化交易开发人员的参考对象,依据这些交易经验来开发策略。

(二)策略数据的获取

    因为这里介绍的主要是基于平台的策略实现,所以我们的数据主要是依赖于平台,在程序化交易平台上运用相关的函数来调取对应的数据。比如我们可以通过open close high low来分别调取K线的开盘价、收盘价、最高价、最低价这些基础数据。还有一些高阶的数据则需要我们对基础的数据来进行运算加工,比如:如何获取20日均线的数据?我们只需要对每日的收盘价进行移动平均处理,这样就可以得到,具体的操作如下:

  MA20=AverageFC(close,20)

   上式即为20日均线的一个定义计算公式,AverageFC为计算移动平均的函数,这个函数含有两个参数,第一个参数为计算的数值,第二个参数为计算的周期。那么整个计算公式的意思即为MA20等于以收盘价(close)计算的周期为20的移动平均的值,即为20日均线的数值。

我们运用函数调取基础数据,再通过运算函数对调取的基础数据加工运算,就能获取一系列复杂的数据。

(三)策略功能的实现

在构建好交易思想,抓取到交易数据以后,我们就要去实现预期的交易功能,那么就需要依靠代码去实现,不同的平台代码公式的结构差异明显,我们需要针对不同的平台设计自己的代码,大部分平台代码的结构都是按照定义参数和变量、基础数据的加工和处理,逻辑条件运算的流程,以下为MACD指标的代码为例,在编写MACD指标之前,我们先要清楚MACD的指标含义。MACD指标有三条线:1.MACDvalue为收盘价的12日移动平均与26日移动平均的差值;2.AvgMACD为MACDvalue的9日移动平均;3.MACDDiff为MACDvalue和AvgMACD的差值,即MACD红绿柱。明白了含义以后,我们就可以去平台上实现,具体的代码如下:

Vars

NumericSeries MACDValue;

Numeric AvgMACD;

Numeric MACDDiff;

Begin

MACDValue = XAverage( Close, 12 ) - XAverage( Close, 26 ) ;

AvgMACD = XAverage(MACDValue,9);

MACDDiff = MACDValue - AvgMACD;

PlotNumeric("MACD",MACDValue);

PlotNumeric("MACDAvg",AvgMACD);

If (MACDDiff >= 0)

PlotNumeric("MACDDiff",MACDDiff,0,Red);

Else

PlotNumeric("MACDDiff",MACDDiff,0,Green);

PlotNumeric("零线",0); 

End

    代码中先定义变量,前面我们在介绍MACD含义的时候已经说明MACD指标含有三条线,每条线对应一个数值,因此含有三个变量,定义完变量以后就是变量的赋值,对抓取的基础数据进行处理,最后就是在图表中的表达,把MACDvalue、AvgMACD、MACDDiff画到K线图上,这样我们就能在K线图表中实现MACD指标了。

    程序化交易是依赖计算机对数据的处理,因此反应速度相对较快,并且在交易下单时可以一定程度的减少延时,这样可以更高效的对信号做出判断和处理,从而提高了工作效率。还有一点非常重要,程序化交易不会像人脑一样感觉到疲惫,也就是说交易人需要休息,但是程序化交易不用。因此当我们的交易思想成熟,且可以量化的前提下,把主观交易转变为程序化交易也是一种不错的交易选择。


【免责申明】本报告所载信息我们认为是由可靠来源取得或编制,徽商期货并不保证报告所载信息或数据的准确性、有效性或完整性。本报告观点不应视为对任何期货商品交易的直接依据。未经徽商期货授权,任何人不得以任何形式将本报告内容全部或部分发布、复制。




0条评论

最新评论
购买须知

价格:
0.00
备注: