期货程序化自动交易教程.docx
《期货程序化自动交易教程.docx》由会员分享,可在线阅读,更多相关《期货程序化自动交易教程.docx(63页珍藏版)》请在冰豆网上搜索。
期货程序化自动交易教程
期货程序化自动交易教程
自动化交易教程
历经16年金融风雨,经历了全球市场所有商品的真实磨练
准确、迅速、无所不能是投资家的目标
自动化交易教程.................................................................................错误~未定义书签。
1.把交易思路告诉计算机---交易公式的创造.........................错误~未定义书签。
2.让公式跑起来---组装交易策略...........................................错误~未定义书签。
3.多种入仓方式---灵活使用先进的武器................................错误~未定义书签。
入仓.....................................................................................错误~未定义书签。
出仓.....................................................................................错误~未定义书签。
4.各取所需---价位驱动和时间驱动.......................................错误~未定义书签。
5.不可或缺的所见所得的创作手段---仿真测试......................错误~未定义书签。
6.图形化交易---手工和自动的完美结合,让机器完成团队的工作错误~未定义书签。
7.附录一博雅语言教材..........................................................错误~未定义书签。
Boya说明............................................................................错误~未定义书签。
变量、数组与序列变量.........................................................错误~未定义书签。
系统关键词、注释和说明.....................................................错误~未定义书签。
输入数据..............................................................................错误~未定义书签。
运算符、表达式和赋值.........................................................错误~未定义书签。
控制语句..............................................................................错误~未定义书签。
系统函数..............................................................................错误~未定义书签。
子程序.................................................................................错误~未定义书签。
隐含执行过程和自控循环.....................................................错误~未定义书签。
DLL方式.............................................................................错误~未定义书签。
举例.....................................................................................错误~未定义书签。
8.附录二多周期共振公式代码................................................错误~未定义书签。
1.把交易思路告诉计算机---交易公式的创造
交易者一般都有自己一套完备的交易思路,这套思路包括什么条件下开仓、什么条件下加仓、什么条件下平仓、什么条件下止盈止损等等。
如果要想把这套思路让计算机自动执行,必须得描述给计算机。
这个描述的手段有不少,最主要的手段就是创造交易公式。
创造好了交易公式,自动化的工作就完成的大部分。
本小节我们就以一个例子为代表,描述一下交易公式的创作过程,具体的语法大家参考附录一。
假设一个期货交易者,交易思路如下:
开多仓的条件:
1分钟5分钟15分钟的MACD的DIFF都高于MEA
平多仓的条件:
1分钟MACD的DIFF低于MEA
开空仓的条件:
1分钟5分钟15分钟的MACD的DIFF都低于MEA
平空仓的条件:
1分钟MACD的DIFF高于MEA
止盈的条件:
无
止损的条件:
5个步长动态止损
鉴于商品期货和大盘指数的对应关系,还希望平仓条件加入大盘的因素,比
如,大盘1分钟、5分钟均线向上也作为平空单的条件,1分钟、5分钟均线向下也
作为平多单的条件。
这个公式怎么创作呢?
为了高效,我们先创作两个子公式,一个MACD的公式,一个是大盘均线方向的描述的公式。
当然,MACD这个公式系统里有,我们不需再创
作,只是展示出来让大家看一下。
MACD的子公式:
//MACD的算法
DIFF=对数平均(收盘价,P1)-对数平均(收盘价,P2);
DEA=对数平均(DIFF,P3);
MACDV=2*(DIFF-DEA);
//三个输出
连线(DIFF,0);#outportdef("DIFF",0xff8040,1,1,1,0,0)
连线(DEA,0);#outportdef("DEA",0xff0080,1,1,1,0,0)
色棒线(MACDV,0);#outportdef("MACD",0x8080ff,1,1,1,0,0,2)
大盘方向的子公式,我们命名它叫”大盘方向”:
//加载上证指数的收盘价
a=加载数据(0,1,收盘价);
//求5周期均线
b=算术平均(a,5);
//判断均线的方向
d=0;
if(a>b&&b>前面的值(b,1))
d=1;
if(a
d=-1;
//把得到方向的数值输出
连线(d);#outportdef("Dir",0xff0000,1,1,1,0,0)
为什么要先创作这两个子公式,因为这两个部分要被多次引用,为了简洁方便,我们先写两个子公式。
从下面主公式的书写就可以看到这一点。
主公式(命名为多周期共振)代码:
//引用1分钟MACD的输出
DIF1=MACD(12,26,9).DIFF;#period(MIN1)
DEA1=MACD(12,26,9).DEA;#period(MIN1)
//引用5分钟MACD的输出
DIF5=MACD(12,26,9).DIFF;#period(MIN5)
DEA5=MACD(12,26,9).DEA;#period(MIN5)
//引用15分钟MACD的输出
DIF15=MACD(12,26,9).DIFF;#period(MIN15)
DEA15=MACD(12,26,9).DEA;#period(MIN15)
//引用大盘方向
DP1=大盘方向.Dir;#period(MIN1)
DP5=大盘方向.Dir;#period(MIN5)
大家看,MACD公式被引用了3次,大盘方向被引用了2次。
那现在我们就把上面
那个交易者的操盘思路描述一下:
//开多仓条件
bOcnd=DIF1>DEA1&&DIF5>DEA5&&DIF15>DEA15;
//平多仓条件
sCcnd=DIF1//开空仓条件
sOcnd=DIF1//平空仓条件
bCcnd=DIF1>DEA1||(DP1>0&&DP5>0);
//买开仓,使用系统隐含数量和价位策略
买开仓(bOcnd,0,0,1,0,0);
//卖开仓,使用系统隐含数量和价位策略
卖开仓(sOcnd,0,0,1,0,0);
if(bCcnd)
{
//得到空单仓位
scw=得到仓位(0,0,1,0);
//买平仓,也就是平空仓,使用系统隐含数量和价位策略
买平仓(scw>0,0,scw,1,0,0);
}
if(sCcnd)
{
//得到多单仓位
bcw=得到仓位(0,0,0,0);
//卖平仓,也就是平多仓,使用系统隐含数量和价位策略
买平仓(bcw>0,0,bcw,1,0,0);
}
到此为止,这个公式就基本描述完了。
这个思路基本上都是使用的价格趋势类指标作为决策的依据,这类指标有随价格变化而变化的属性,原则上讲不能做到料敌机先,所以存在交易信号的来回变化的问题,一些朋友希望用在每根K线结束的时候再发出信号,还有,一旦有了仓位,在一个价格区间内不要来回交易,突破指定的2个步长的价格带,再做平仓和反手的操作,怎么改写,下面改写过的公式作为附件2供大家参考,这里只简单截图如下:
基于该投资者的止盈止损比较简单,5个步长动态止损,这个系统设置很容易实现,故就不在公式里编写了。
这个例子虽然简单,但是书写起来还是需要一定的编程技术,投资家平台另外提供了一个图形化的公式创造环境,不熟悉编程语言编写的朋友,可以尝试使用这个图形化平台。
2.让公式跑起来---组装交易策略
如果想让自动跑起来,怎么办,那就要把交易公式组装成一个交易策略,主要要
指定监控哪些品种,止盈止损的设定,仓位的隐含信息设定等等。
我们还是举例说
明,还是以上面的公式为例。
交易策略只需组装一次,以后每次交易直接登入交易系统就行了。
组装成交易策略的步骤如下:
1.打开巫师选股平台
2.指定筛选范围,也就是设定同时监控几个合约:
3.指定使用的公式和跟踪的周期
设定完范围后,按“下一步”,指定交易公式。
设置周期为5秒钟。
为什么要这么短的周期,因为对提高利润率很有帮助。
确定后,再按”下一步”,设定选股结果直接到交易平台和多空都做。
之后保存选股方案到”多周期共振.sel”,如下图:
4.打开交易平台,配置并生成交易策略:
用热键ALD+D或者工具条上的图标或者菜单,打开交易平台,如下图:
按下设置按钮,进行交易策略配置,如下:
指定入仓方案为”多周期共振.sel”并填写完其他的选项后,确认返回即可。
因为我
们的公式中,既有入仓也有出仓,所以,出仓方案可以空置。
如果出仓和入仓使用独
立的方案,那就都需要填写。
我们也可以把这些所有的设置保存为一个交易策略,比如
叫”多周期共振.tpc”,以备切换策略的时候,方便调用。
确定返回后,登入交易系统,
自动交易就开始了。
当然,没必要每次打开系统都配置交易策略,软件打开后可直接登入交易系统,
登入的时候,总是隐含调入最后一次使用的交易策略。
登入交易系统后,监控将在后台运行,和界面上任何操作互不影响。
当然,界面的
图形也可以自动或者手工下单,这个后面再介绍。
本节只是介绍了价位驱动方式的自动交易方法,投资家还有多种入仓的方式,这
些内容将在下一节介绍,进入下一节之前,先给大家介绍几个概念。
仓
指的是和该平台连接的交易系统持有的所有品种,包括股票、期货、股指期货、权证、外汇、期权等所有金融品种。
入仓
是指向仓内输送满足条件的金融品种,也就是买入和开仓的过程。
出仓
是指向将仓内满足条件的金融品种卖出或平仓。
选股方案和预警方案
是多层投资家公式的组合。
这些公式可以是不同的理念,不同的周期。
方案有一个监控或者选择的范围,比如可以是监控所有A股,也可是以监控所有的期货主力合约,也可以只监控一个股指期货品种。
选股方案和预警方案可以通用,选
结尾,预警方案文件名以“.war”结尾,两种文件可以互股方案文件名以“.sel”
换。
两者都存放在plan目录下.
价位驱动实时选股平台
是投资家多层次选股平台,每笔价位到达时都会实时检测是否有满足方案的品种出现,如果有满足买入或卖出条件的品种出现,则提示或者自动送入交易平台(入仓)。
价位驱动实时预警平台
是投资家多层次监控预警平台,每笔价位到达时都会实时检测是否有满足方案的品种出现,如果有满足买入或卖出条件的品种出现,则提示或者自动出仓。
时间驱动选股平台
是投资家多层次选股平台,不是每笔价位到达都驱动选股,而是一定时间间隔筛选一次,时间间隔可以设定。
其公式的选股范围的设定和价位驱动平台类似。
本平台可以运行多个而不像价位驱动只能运行一个。
和价位驱动一样,品种一旦选出,则提示或者自动送入交易平台(入仓)。
这种方案的文件名是“.tds”结尾,他和“.sel”可以互相转换。
Tds文件和sel文件一样,存放在plan目录下.,选股巫师
设计筛选方案,手工运行方案的筛选工具。
画线告警
所画之线大都可以设置穿越告警,穿越告警之时,也可以形成入仓的动作。
价位告警
所设置价位告警满足时,也可以形成入仓的动作。
短线精灵
单公式(非多层)价位驱动的实时监控工具,每笔价位到达时都会公式运行。
如果有满足买入或卖出条件的品种出现,则提示或者自动送入交易平台(入仓)。
公式直接入仓
通过公式平台里的四个函数(买开仓、卖开仓、买平仓、卖平仓),也可以直接从公式入仓。
手工操作
是手工入仓或出仓。
交易策略
是指平台的整个交易配置的总和,包括出入仓方案,止盈止损方法,多空隐含量,登录需要暂停与否等等交易参数。
交易策略文件名以“.tpc”结尾,从放在config目录下.
3.多种入仓方式---灵活使用先进的武器
投资家的自动交易平台是一个功能强大的平台,也是一个经过多年验证和考验的平
台,支持多种多个入仓和出仓的方式。
投资家自动交易的体系结构如下图所示:
时间驱动选时间驱动选股价位驱动实时股选股平台N平台平台1
画线预警价位告警
图表公式手工操作
手工确认环节(可省略)
价位驱动预警
止盈止损监控方案
持仓等数据库
柜台接口
入仓
入仓的方法有以下几个:
价位驱动实时选股平台、时间驱动实时选股平台、短线精灵、选股巫师、画线预警、价位告警。
当然还有手工下单,比如输入一些压力支撑位或者阻力位的买卖单。
1.价位驱动实时选股平台
此平台已经在上一节里介绍过,故从略。
2.时间驱动实时选股平台
如下图所示,“工具”菜单可以调出相应功能。
3.短线精灵
如下图所示,“工具”菜单可以调出相应功能。
4.选股巫师
如果选股巫师选择了“结果到交易平台”,那么每次手工选股,最后的结果都会
入仓。
5.画线预警
所画之线大都可以设置穿越告警,穿越告警之时,也可以形成入仓的动作。
首先需要在画的线上设置告警(具体设置方法是在线条之上点鼠标右键,通过菜单实现),如下图:
如果希望价格上穿或者下穿次线条的时候,给出买入卖出的动作,还需要在画笔属性里面选中相应选项,如下图。
注意,“穿越告警线到交易平台”和“交易结束再给交易信号”可以针对某个线段独立设置,线段之间互不干扰,但是最后一个的属性将作为隐含属性被记忆。
当“交易结束再给交易信号”设置之时,信号如果在周期结束之时仍然是穿越状态,才会发出指令。
但是交易之外的系统的告警并不受此限制。
6.价位预警
当价位告警满足条件是,也可以作为入仓的条件。
价位告警的设置在系统菜单里。
每
条价位告警可以单独设置是不是触发下单,每条之间各自独立,互不干扰。
如下图所
示。
出仓
出仓的方法可以有以下几个:
价位驱动实时预警方案,止盈止损,手工干预。
1.价位驱动实时预警方案
和价位驱动实时选股方案入仓相似,只不过它所监控的范围不是固定死的,而是随着
持仓的变化而动态变化,始终监控持仓内容,如果有满足条件的品种,马上出仓,如
果需要手工确认,则放入确认队列。
2.止盈止损
系统开启止盈止损原则后,一旦满足条件,自动出仓。
系统的止盈止损原则在交易系
统的设置里面完成设置。
如下图。
3.手工干预
在双击键为交易状态时(子窗菜单之双击鼠标左键下单),打开交易平台后,在
任何子窗双击鼠标左键,调出下单对话框。
快捷键下单:
i.点击某品种(可以是报价窗口,技术分析、单品种等任何窗口中的品种),然
后Alt+C,则可以平掉本品种所有的开仓或者卖出该品种。
Alt+B是买开仓,
Alt+S是卖开仓。
ii.双击交易平台的持仓列表和历史交易列表可以手工开平仓iii.Alt+M可以调出手工下单界面进行下单操作
iv.Alt+T可以以指定价位调出手工下单界面进行下单操作
v.Alt+W撤掉所有挂单,Shift+B\Shift+S\Shift+O\Shift+C分别是撤掉所有的买
单,卖单,开仓单,平仓单。
vi.Alt+K是平掉所有仓位,Shift+K\Ctrl+K分别是平掉所有多单和空单。
等等。
vii.Shift+T是反手所有多单,Ctrl+T是反手所有空单。
4.各取所需---价位驱动和时间驱动
所谓价位驱动,就是每一笔数据到达都要驱动平台筛选一次。
对一些激烈变化的品种,每天大概有几万笔的数据,比如橡胶合约就是如此。
于自动交易而言,我们当然希望尽可能抓到起点,如果使用隔一段时间筛选一次,而不是每笔价位都筛选,那么可能漏掉很大利润或者造成很大损失。
因为很多激烈品种的价格变动可能在几十秒之间就已经完成了大部分内容。
所以价位驱动是利润提升的不可缺少的手段。
一个好的交易公式,不仅要检测大周期的数据,也要检测tick等这样最基本的数据,这样才能
见微知著,做好自动交易。
当然,对于股票等T+1以上的商品而言,价位驱动是不太必要的,因为股价的变化要慢得多,这时候,时间驱动可能又成了合适的选择。
所以根据自己的需求,使用不同的入仓方法,才是正确的自动交易之道。
比如对于对冲基金而言,可以用时间驱动大范围筛选股票,用价位驱动完成对变化快的商品的筛选,比如股指期货。
这样,各种方案在一台机器上就可以运行,各取
完成利润的最大化。
所需,
投资家同时支持价位驱动方式和时间驱动方式,他们都可以是多层次筛选,同时都可以跟踪多个品种,跟踪数目可以上万个。
5.不可或缺的所见所得的创作手段---仿真测试
要想创造一个收益好的交易公式,需要反复的验证,这就需要测试,我们当然不能只有在实盘中测试,我们需要加快研究周期,进行非现场测试,也就是非交易过程中测试,并且要知道准确的测试结果。
一个自动交易软件,有测试的功能不难,难得是结果准确,和实际跑的结果相差无几。
要想做到这一点,必须有仿真测试才成。
还是以第一节的例子公式作为讲解的对象。
比如多周期共振,一般的交易软件,涉及到多周期的情况(如果能够的话),测试的结果必然效果很好,比如我们先不加仿真测试的指令,以橡胶商品为例,测试一下它的收益,你会看到,一天操作了3次,收益居然到了6%,如下图。
但是如果加上仿真测试又如何呢,只剩下3%多了。
请看下图:
所谓的仿真测试,就是在测试的过程中,重建当时的交易过程,这里面各个周期的数据都需要重建,不同品种的数据也需要重建。
换句话讲,它就是要搭建当时真实的交易过程,以保证测试的结果准确。
仿真测试虽然比较费时,但是也是秒级的,总比经历真实的交易要快得多。
能不能进行仿真测试,是一个创作环境好不好的重要标志。
6.图形化交易---手工和自动的完美结合,让机器完成团队的工作
人性的优点很多,但是缺点也不少。
在期货市场,恐惧、贪婪等缺点都会转化成亏损,并且往往是大亏,不是经常听说“辛辛苦苦又一年,一夜回到解放前”吗,100次的成功,可能让一次亏损全部葬送。
分析、研究、决策如果这三个行为都由一个人来完成,那么除非这个人非常有天分,否则,往往会上演“千里江陵一日还”的悲剧。
没有自动交易以前,为了能稳定赚钱,分析、研究、决策三个行为都是要不同人负责,形成一个团队,这样,胜算的机会大大增长。
但是,对于中小户而言,因为成本的问题,不可能形成团队。
还好,现在有了自动交易,纪律的部分可以交给计算机来完成,这样,稳定赚钱的可能性大大增加了。
那怎么做到呢,那就是设置好止损方案,启动自动交易,就可以放心的下单了,换句话说,在图表上去交易,让自动和手工结合一下。
话又说回来,即使一个自动方案编写完了,也不可能一下把任何交易的情况都包容进入,人看到的机会,公式可能没考虑到,这很正常。
当然,我们可以继续完善公式。
在公式止盈止损完备的情况下,即使所有机会不是都抓住,也可以用人工的方式放心下单,来补偿公式暂时的入仓策略的不足,危险到来时,让自动方案自动止损,这样,也能达到机器能坚决执行纪律的要求。
让机器完成执行纪律的工作,交易起来也可以从容的多。
如何做到在图表上自动下单呢,下面我们来说明一下:
在子窗菜单上,有一个菜单选项,“双击鼠标左键下单”,如果此菜单被选中,那么,在任何窗口上,在交易系统打开的情况下,双击鼠标左键,都会调出下单对话框。
并隐含填写买卖开平价位和数量等的选项。
如下图:
“双击鼠标左键下单”选择也可以在工具条上操作,见下图:
投资家双击鼠标左键下单的窗口可以是以下窗口:
技术分析窗口
报价窗口
单品种报价窗口
买卖队列窗口
传统盯盘窗口
填写隐含交易参数的原则是:
(高于现价的,填卖,低于的,填买。
1
2(有相反方向仓位的,填平仓,否则,填开仓。
3(在图表上,拾取鼠标所在价位,如果无意义,填最新价。
4(在买卖队列和单品种报价以及报价窗口的价位位置上,填写拾取的价位。
该对话框中,“埋单在本机”不是直接下单到交易所,而是埋单在本机,当价位到达时候,自动再下到交易所。
在技术分析窗口,大家也可以也看到历史交易的情况,以及需要确认的单子,如图所
示,真正做到在图表上交易。
鼠标双击需要确认的小图标,还可以在图标上确认下单。
如下图:
另外,挂单(未成交单)也会在图标上显示,也可以通过双击进行撤单操作。
轻松拖动挂单的图标,可以完成重新挂单改变价位的操作,一切都可以图形化,方便直观快捷。
如下图:
7.附录一博雅语言教材
Boya说明
Boya语言是在C语言上基础上发展而来。
虽然不包括C语言的全集,但是在和金融证券的结合上有所扩充,除了具有速度快捷,效率高等优点外