C5-程序化交易系统开发过程.pptx
《C5-程序化交易系统开发过程.pptx》由会员分享,可在线阅读,更多相关《C5-程序化交易系统开发过程.pptx(79页珍藏版)》请在沃文网上搜索。
1、u一个成功的程序化交易系统的开发是一个包括信息收集、交易策略的制定、交易策略的程序化、交易策略系统的检验和优化等环节有机构成的一个系统动态过程。u每一个环节相互制约,不可忽略。5.15.1 系统开发过程概述系统开发过程概述信息收集阶段系统设计阶段系统开发阶段系统评价阶段系统优化阶段系统编程调试系统编程调试编程语言程序编辑程序调试策略选择和设计策略选择和设计趋势跟踪策略逆趋势跟踪策略反转策略平台突破策略套利策略组合策略风险控制策略系统定位系统定位选择交易市场选择交易商品选择开发平台选择检验期间系统验证评估系统验证评估历史回测效果评估修改完善系统优化系统优化确定变量优化参数修改完善图5-1程序化交
2、易系统开发的动态过程u在进行程序化交易策略系统开发之前,我们必须进行深入的调查研究,进行大量的相关信息收集和分析,以决定程序化交易的市场和商品。u同时还必须为交易策略系统的检验准备数据。5.25.2 信息收集分析信息收集分析u开发交易策略的第一步是选择买卖标的市场和商品,即找出适合做程序化交易的商品。选择市场和商品需要考虑以下问题:5.2.15.2.1买卖标的市场和商品选择买卖标的市场和商品选择1)1)选择流动性较好的商品选择流动性较好的商品n流动性高的市场是一个交易者能以较低的交易成本迅速完成交易,而对价格产生较小影响的市场。市场参与者多、交易活跃的市场,开仓和平仓可以顺利进行,并且可以自己
3、可预期的价格买卖所需的数量,而不会对市场价格形成大的冲击。n而交易量小,流动性差的商品,由于买卖报价差比较大,每档报价的申报订单量少,以市价下单时,往往会以上限价成交。平仓时也有可能发生需要以比预期更低的价格下单的情况,交易费用较高。n因次,程序化交易必须选择交易量大,流动性强的商品作为标的商品。u宽度宽度是指交易价格和市价的背离,用买卖报价价差来衡量。n买卖报价价差=卖出报价(askprice)-买入报价(bidprice)n价差越小,说明交易市场的竞争越激烈,因而市场的效率越高,流动性越强。u深度深度反映的是不会影响现行价格的市场交易量,通常用最优买价和最优卖价报价的申报数量来反映。其计算
4、公式为:n深度=最优买报价对应申买数量+最优卖报价对应申卖数量u弹性弹性是指交易引起的价格波动恢复均衡的速度,目前似乎还没有共同认可的较好度量方法,通常是观察债券交易后恢复正常市场状态(买卖差价、交易量)的速度。n其重要性在于,它刻划了市场的潜在深度,这一点单纯从当前成交量很难看出来。3一般交易商品的流动性可以市场的宽度、深度和弹性一般交易商品的流动性可以市场的宽度、深度和弹性来度量。来度量。2)2)波动性大的商品波动性大的商品u波动性(Volatilty)就是市场波动的幅度。市场要有一定程度的波动才会有交易机会,而抓住这样的机会才能创出收益。u所以,程序化交易要选取具有足够波动性的市场和商品
5、。判断波动性的方法有单纯的测量一定时间段内最高价和最低价幅度的方法、平均K线的最高价和最低价幅度的方法、利用过去波动性的方法等多种方法。3)3)交易费用低的商品交易费用低的商品u交易次数达到一定程度时,在全部盈亏里交易费用所占的比重和负担也会增加。因此交易次数越多,选择交易费用较低的市场和商品就会越有利。交易费用包含了手续费、税款等明确的费用,以及很多隐性费用。u程序化交易里的隐性费用被称为滑价滑价,是指在买卖信号中发生的价格和实际成交价格之间的差价。如上所述,越是流动性不大或频繁快速涨跌的商品,滑价越大,实际获得的收益会比系统报告上的收益越小,而亏损也会越大。因此报价差比较大的商品不适合做程
6、序化交易。u除了流动性,报价单位的大小也是影响滑价的重要因素。波动性相同的两个商品中,一个商品的报价单位比较小,另外一个商品的报价单位比较大,这时报价单位较小商品的滑价会比较小。u纽约证券交易所成立于1792年。最初,报价单位是根据股票票面价值的8定价的。1915年,定价基准从票面价值的百分比调整为美元,即增量为 18美元。2001年1月29日,纽约证券交易所对在其上市的所有股票采用十进制报价交易规则,所有股票不论其股价大小,均采用1美分为最小报价单位。u中国两大证券交易所均以0.01元人民币为最小报价单位。中国金融期货交易所的沪深300指数期货的最小报价单位为0.2点,每点为人民币300元,
7、最小报价单位相当于人民币60元。因此,即使在流动性最强的主力合约,在价格波动最小的时候,以对手价成交的最小滑价即为60元。5.2.25.2.2模拟检验数据选择模拟检验数据选择u程序化交易策略系统程序编制出来后,必须用大量的历史数据来验证其策略,看其程序编制是否准确表达了其策略设计思想;检验其策略设计能否满足在该商品上进行程序化交易盈利和风险控制的基本要求,以及对该策略进行优化改进等。(1)(1)事后回溯测试所需的长期资料事后回溯测试所需的长期资料u事后回溯测试所需的数据,期间越长越好,并且最好是尽可能包含更多的市场变化形态。测试交易策略时,要用上升、下跌、横盘整理等所有趋势都包含的长期数据来测
8、试才会有较高的可信度。u偶尔测试数日或数个月的数据后,如果产生很好的收益,也会有把这个交易策略直接应用在市场的情况发生。但是,这些短期内能创出高收益的交易策略,如果用长期数据来测试,就会发现剩下的时间段里大部分都是亏损为主。其主要原因就是测试期间没有包括足够多的市场价格变动形态,其策略的普遍适用性较差。进行事后回溯测试时需要特别注意的一点,就是进行事后回溯测试时需要特别注意的一点,就是不能不能对全部期间做事后回溯测试对全部期间做事后回溯测试。u因为如果对包含近期数据的全部数据进行事后回溯测试的话,无法验证出所开发交易策略的未来获利可能性等。因此,进行事后回溯测试时,在全部数据中留下近期数据,要
9、对这些数据进行测试。n例如,假设有10年的数据,那么留下最近4年的数据,只对过去6年的数据进行事后回溯测试和最优化。而最近4年的资料,可作为最终验证未来获利可能性的前向分析(forwardanalysis)数据来使用。(2)(2)连续资料连续资料u期货具有最后交易日,因此不具备数据的连续性。测试交易策略,要尽可能用长期数据来进行。但是期货由于有最终交易日,所以单独一个月份合约的数据并不充分。因此就会产生把其他不同月份的数据连接起来的必要性。连续期货数据是把未平仓合约数量最大的商品连接起来,编制连续性的数据。u利用连续期货指数进行程序化交易时,如果是当日交易策略,则没有其他问题。但是,如果是隔夜
10、交易,在持仓状态下未成交合约的月份发生变化时,次日开始商品也会变更,因此要确认未平仓合约的月份是否发生变化,并据此通过手动下单来更新持仓,移仓换月。(3)(3)禁止使用分钟线、禁止使用分钟线、TickTick线的日均缺口补充资料线的日均缺口补充资料u“分钟线,Tick线的日均缺口补充”是指分钟线或Tick线里的前日收盘价和当日市价之间的差距以其比例补充并消除缺口。利用分钟线或Tick线进行买卖时,如果前日收盘价和当日市价之间产生缺口,会发生指标的连续性消失的问题。而通过缺口补充可以实现指标的连续性,因此对于分秒必争的图表分析来说是最适合的方法。u但是,在程序化交易里以最后交易日的价格为基准,之
11、前的数据值会全部被补充,所以每次日期变更时过去的信号的位置也可能会变更,而且由此过去的亏损又会每天变更。因此对交易策略无法进行正确的评价。所以,在程序化交易里要利用不补充缺口的数据来测试交易策略并进行买卖。5.35.3程序化交易系统的构成程序化交易系统的构成u程序化交易的核心交易策略程序需要用户自己开发。尽管一些交易平台软件已经提供了一些简单的交易模块供用户调用,但它们通常是比较简单的,不完整的。u用户必须有针对性的开发其最适用的程序化交易策略程序,且必须针对特定的市场、商品和投资者需求来进行开发。程序化交易策略系统程序化交易策略系统变量定义模块:定义外部参数、定义变量(数值型、逻辑型、字符型
12、)数据处理模块:所有数据在此处理,计算各种关系、条件交易决策模块:进行各种设定条件的比较判断交易执行模块:执行开仓、平仓等命令风险控制模块:对系统持仓风险进行实时评估,并采取相应对策控制风险图图5-2 5-2 程序化交易系统的功能模块程序化交易系统的功能模块5.3.15.3.1变量定义模块变量定义模块u作为计算机自动化交易程序,必须对大量的信息进行接收、储存和处理,并在此基础上形成交易决策和执行。要进行有效的信息接收、储存和处理,系统必须首先对相关的信息进行分类,并对相关的变量或参数进行定义,以便计算机系统为其留出相应的储存空间,建立相应的索引并进行相关的信息处理。u因此,所有的程序化交易程序
13、的基础模块就是变量定义模块。变量定义包括外部参数(常量)和内部变量两类。变量定义包括外部参数(常量)和内部变量两类。u外部参数外部参数全部为数值型。nInput:A1(10),A2(30);u内部变量内部变量则可以区分为数值型、字符型和逻辑型三种类型。又可分为单一变量、数组变量等类型。n单一变量lVar:X1(0),X2(“”),X3(false);n数组变量lArray:Y110(0),Y22,5(“”);n整个程序中所使用的参数和变量都必须在该模块中进行定义。没有定义的任何参数和变量都不能够在程序里面赋值或引用。u每一种计算机语言都多变量的定义方式、格式和命令等有自己的规定。在EasyLa
14、nguage里则是采用Input命令定义外部参数,用Variable命令定义变量。Array命令定义数组变量。5.3.25.3.2数据处理模块数据处理模块u数据处理模块是交易策略程序的核心模块之一。程序化交易的决策是建立在一定的决策模型之上的。而任何决策模型都必须对一系列的基础数据进行计算处理,对变量进行赋值,对各种决策条件进行计算和分析。u比如,移动均线金死叉交易策略,首先必须对交易商品价格计算短期和长期移动平均线,然后才能够对长期与短期均线进行动态比较,判断其是否发生交叉,是金叉还是死叉。因此。数据的处理是决策的基础。nMas=average(c,10);nMaL=average(c,20
15、);5.3.35.3.3交易决策模块交易决策模块u程序化交易系统的核心是交易决策。交易决策模块负责根据交易策略思想对已经计算处理的数据进行分析判断,是否符合策略思想确定的建仓、平仓条件,从而决定什么时候,以什么价格,多大规模,建立什么样的仓位(多仓或者空仓)或者平仓已有仓位。u这一部分功能对于交易策略系统最为重要,也最为复杂。交易策略的成功以否,一方面取决于交易策略思想是否适当,另一方面则取决于交易策略程序是否准确反映了其交易策略思想。nIfMaScrossoverMaLthenlBeginlend变量定义指标计算上升趋势区间震荡下降趋势开多仓移动平均线多头排列长期均线上升短期回荡平多仓短期超
16、卖平空开多短期超买平多开空移动平均线多头排列长期均线上升短期回荡移动平均线空头排列长期均线下降短期回升开空仓平空仓风险评估风险适度趋势未变继续持仓超风险趋势未定止损平仓超风险趋势改变反手盈利评估未达盈利目标继续持仓已达盈利目标回落平仓形态识别交易决策模块交易决策模块数据处理模块数据处理模块风险控制模块风险控制模块变量定义模块变量定义模块交易执行模块交易执行模块u有的交易策略思想极为复杂,特别是多种交易策略的组合,其交易策略决策程序必然极为复杂。这就要求我们必须根据清晰的逻辑思路来编制程序。n如图5-3所示的交易策略系统,对于不同市场形态采取不同的交易策略,市场形态(上升趋势、下降趋势和区间震荡
17、)的识别就成为正确交易决策的关键。在识别市场形态后,则根据不同交易策略条件的满足情况决定其开仓和平仓的行为。交易决策程序必须根据这种交易策略思路的交易决策程序必须根据这种交易策略思路的逻辑来编制程序逻辑来编制程序5.3.45.3.4交易执行模块交易执行模块u交易执行模块负责执行交易决策模块发出的交易信号(命令)。n交易执行模块的命令既可以写在交易策略程序中,也可以在加载交易策略程序的图表上通过交易策略设置窗口进行设置。l包括交易策略的参数设置、信号图表显示、分割交易、费用/数量、强制平仓和买卖方式等。nIfMaScrossoverMaLthenBeginIfmarktposition=-1th
18、ensell(“金叉平空仓”)thisbaronclose;Buy(“金叉开多仓”)nextbaronopen;end5.3.55.3.5风险控制模块风险控制模块u风险控制是成功的程序化交易的关键。风险控制模块负责根据风险控制策略对程序化交易的持仓风险和账户资金进行管理和控制。u风险控制模块的基本任务为:n(1)需要对账户资金进行管理,确定其建仓的规模是否适当,以控制其账户面临的最大风险。n(2)必须对已经建立的仓位面临的风险进行实时评估,判断其是否达到策略允许的最大风险上限。n(3)对达到策略允许的最大风险上限的持仓采取必要措施进行平仓,包括减仓和清仓,以控制损失的进一步扩大。u例如:nSe
19、tStopContract;nSetstoploss(10);l策略在每份股票亏损10元时将平仓,如果持有1000股,则将亏损10*1000=10000元。5.3.65.3.6各模块之间的关系各模块之间的关系u作为一个完整的程序化交易策略系统,必须由以上5个方面的功能模块所构成。如图5-5所示,变量的定义和数据的处理是基础,交易决策和执行是核心,风险控制是关键。这些功能相互制约和相互依赖,构成一个完整的交易策略系统。这些功能对于一个成功的交易策略系统是缺一不可。u当然,这些功能是由单独的功能模块来实现,还是由一些综合的语句来实现都可以。但功能不能或缺。对于一些简单的交易策略,我们可以将多种功能
20、模块的功能,如指标的计算和判断、交易决策等放在一起,甚至可以放在一个程序语句里面来实现。如金叉买入,死叉卖出策略在如金叉买入,死叉卖出策略在EasyLanguageEasyLanguage可以用可以用2 2个语句来处理:个语句来处理:uIfAverage(c,5)CrossoverAverage(c,30)thenBuy(“金叉买进”)nextbaratmarket;uIfAverage(c,5)CrossunderAverage(c,30)thenSell(死叉卖出)nextbaratmarket;n但是,对于一些比较复杂的交易策略系统,如果像这样将数据处理、交易决策放在一个程序语句里面,该
21、语句就会十分冗长和复杂,策略整体关系不清。n另外,多次引用的指标也导致重复的计算,增加计算机处理量,降低处理速度。其三,也不利于引用变量的前期值。n因此,将主要的变量数据在进行交易决策判断之前集中进行处理,不仅有利于提高系统的运行速率,也使系统的逻辑更加清晰,便于策略程序的编辑。u以上两个语句可以改写为如图所示的功能模块组成的策略程序。显然,这是一个基本功能较为完善的简单交易策略程序。策略思想虽然简单,但基本的功能已经具备。/移动均线金死叉交易系统移动均线金死叉交易系统/变量定义模块变量定义模块Inputs:MTS(5),MTL(30);Var:MaS(0),MaL(0),GoldenCros
22、s(false),DeathCross(false);/数据处理模块数据处理模块MaS=Average(c,5);MaL=Average(c,30);GoldenCross=MasCrossoverMaL;DeathCross=MasCrossunderMaL;/交易决策模块交易决策模块IfGoldenCrossthenBuy(金叉买进金叉买进)nextbaratmarket;IfDeathCrossthenSell(死叉卖出死叉卖出)nextbaratmarket;/风险控制模块风险控制模块SetStopLoss(10);SetProfitTarget(20);5.4 5.4 交易策略的制定
23、交易策略的制定u如果买卖标的商品已选好,对于交易策略系统的构成有了初步的了解,下一个阶段就是交易策略的制定。要先决定对那种趋势的市场建立适合的交易策略,然后再制定如何进入市场、如何撤出市场的具体交易策略。u市场基本上可分为趋势市场、非趋势市场、波动性市场。但是无论是那个商品,都不会只显示一个市场特性。强势市场随着逐步回归理性,也会转为非趋势市场,并且走势平淡的价格也会有急涨或急跌的时候。因此每个商品都会不可避免的走出多种市场形态。5.4.15.4.1 交易策略类型交易策略类型u实际上,想做出在所有市场形态上都能获利的单个交易策略是很困难的。u因此,要选出最有可能盈利的市场走势为主要目标,开发符
24、合该市场走势的交易策略。(1)(1)趋势追踪型策略趋势追踪型策略u技术分析指标按大的范围可分为追随趋势的趋势追踪型指标和把市场走势限定在一定范围内试图分析过热及疲软领域的震荡(oscillator)指标。这两种指标可作为区分并制定趋势追踪型策略和逆趋势追踪型策略的基础。u趋势追踪型策略(TrendFollowingSystem)主要是利用移动平均线、MACD、Sonar、ADX、DMI、Parabolic、Trix等显示趋势的指标来制定。需要注意的是,虽然是利用趋势追踪型指标来制定的策略,但制定出来的策略未必一定是趋势追踪型策略。u例如,利用MACD线和MACD信号线的偏离,制定偏离收缩时买入
25、或卖出的交易策略时,低点买入、高点卖出的逆趋势追踪型策略也会被制作出来。因此,关键点在于指标的特性,而不是在指标。趋势追踪型策略的特点在于趋势追踪型策略的特点在于胜率低、平均盈亏比高胜率低、平均盈亏比高。u虽然胜率低、平均盈亏比高的趋势追踪型策略在横盘整理区间内发生频繁的虚假信号(whipsaw),但是趋势形成时会根据趋势方向来开仓,从而获利。u趋势追踪型策略的另一个特点是盈亏依赖于市场趋势盈亏依赖于市场趋势。因此设计趋势追踪型策略时,设计成不遗漏大趋势的这一点很重要。n如图5-5所示,趋势追踪策略抓住了6月开始的2段上升趋势,大赚一笔,但之前的震荡行情中买进卖出却导致亏损。(2)(2)逆趋势
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C5 程序化 交易系统 开发 过程