《金字塔决策交易系统—高级教程(XXXX修订版)》由会员分享,可在线阅读,更多相关《金字塔决策交易系统—高级教程(XXXX修订版)(99页珍藏版)》请在金锄头文库上搜索。
1、上海金之塔信息技术有限公司2016金字塔决策交易系统高级教程l 本教程主要介绍金字塔的后台程序化交易,VBA、C+二次开发的编程。目录目录2第一章 金字塔的后台程序化交易11.1后台程序化工作机理11.2 后台程序化交易函数21.3 后台套利模型范例51.4 后台程序化的启用71.5 后台程序化的调试81.6 后台程序化注意事项10第二章 图表交易和后台交易的主要区别和联系122.1 图表、交易函数的区别122.11 图表交易函数122.12 后台交易函数122.3图表交易和后台交易的主要区别13第三章 基于VBA的二次开发143.1金字塔VBA与OFFICE VBA区别和联系143.2 VB
2、A 原理的隐喻143.3 VBA 简介153.3.1VBA 及其IDE 初步153.3.2模块、函数和过程183.3.3数据类型和变量203.3.4VBA 语言基础233.3.5用户窗体293.4金字塔的对象模型333.4.1Application 对象343.4.2Order 对象363.4.3MarketData 对象453.4.4 ReportData对象493.4.5 HistoryData 对象503.4.6 Document对象523.4.7 Frame 对象543.4.8 Grid对象563.4.9 Formula 对象623.4.10 NetWork 对象633.4.11 Te
3、stReport 对象65第四章 VBA实用范例754.1 跨期套利交易范例754.2 金字塔VBA指标调用数据库教程764.2.1数据库的准备工作(vba使用数据库首先我们需要连接数据库)764.2.2 数据库操作方法(具体代码和注释)77第五章 基于C+二次开发855.1使用金字塔C+ API开发策略的优势855.2金字塔的C+ API与主程序的组织结构865.3金字塔的接口范例下载与简要说明865.3.1 API接口报价行情订阅865.3.2报价行情变化通知875.3.3获取指定市场全部合约报价875.3.4历史数据的获取875.3.5下单委托指令885.3.6订单状态推送回报885.3
4、.7策略编写调试与跟踪895.3.8API接口更多功能信息90第六章 自定义PEL函数916.1 使用VBA自定义PEL函数916.1.1自定义函数的格式916.1.2自定义函数的两种工作模式926.2 使用C+DLL扩展函数程序调用94第一章 金字塔的后台程序化交易金字塔提供功能性和扩展性更为强大的基于后台预警模式的程序化交易模式(后台程序化),可以在不影响用户前台图形操作的情况下,高效地与预警系统一起工作,实现自动交易。由于该模式运行在后台,不需要打开图表占用过多的资源,且只需最后一个周期的信号,所以原则上公式不做多余计算,效率高,便于对多个品种同一个策略进行轮循监控。从某种意义讲,后台程
5、序化属于图表程序的深化,它的优点是更注重于策略的高效执行,更完美地实现策略的设计初衷。虽然后台程序化的功能强大,但用户切忌直接使用后台策略,而跳过学习图表程序化的过程。原因是在后台程序化中用户无法直接在图表上看到信号的整个出现过程,因此对用户的公式编写水平有一定的要求。其次,用户需要对金字塔的后台交易系统工作机理有比较深的了解,并且要对自己的公式系统有清晰的认识,这样一旦遇到问题也能及时找到原因。后台交易过程中,一旦遇到问题,需要客户掌握第八章后台程序化交易调试的技巧。以我们多年的经验来看,用户先将策略经测评、优化、图表实盘上运行后,再转化成后台策略,会取得非常好的效果。1.1后台程序化工作机
6、理在初级教程中,我们介绍了基于虚拟数据技术的图表程序化交易。想必经过一段时间的学习,大家已将图表程序化运用的相当纯熟。不过当你进行实盘的时候,是否发现在某些情况下,例如碰到未成交单、未完全成交单、需要进行追撤单等更精细的下单操作时,图表程序化就束手无策了。这是由于图表基于虚拟数据的特性,无法与真实账户进行交互,虚拟数据的成交并不考虑实盘的的流动性情况,只要价格达到即成交。而实际情况可能并不是这样。另一方面,当图表程序化碰上多品种、多策略、或者较复杂的策略时,有时系统会显得相对较慢、不流畅。这是由于图表需要计算大量以往的历史数据进行判断操作,并在图表上进行输出。这消耗了相当多的资源。但实盘并不需
7、要考虑历史曾经如何,实时交易需要考虑的是如何高效的执行,其实只需根据最后一根K线上的数据,来确定开平仓的动作。这也就是例如DYNAINFO等这些常数函数无法进行测评而实盘的公式确可以用的主要原因,因为DYNAINFO只有最新的一笔行情数据,而没有历史的序列数据。金字塔后台程序化也是这个道理,因为金字塔的后台程序化只注重交易,因此无法用来测评。总结一下,金字塔的后台程序化交易是金字塔很大的特色。从工作机制的角度看,后台程序化在沿用PEL语言体系的情况下,为用户创造了近似VB、C+才能达到的精细化、高效快捷程序化下单模式。因此它特别适合那些多周期、多策略、多品种的组合交易以及对效率要求较高的套利交
8、易,为您的交易带来无与伦比的便捷。1.2 后台程序化交易函数金字塔的后台程序化交易只能在专业版及更高级的版本中使用,它可以运行在序列和逐K线两种模式,但是推荐序列模式运行,这样可以极大提高后台执行的效率。为了让用户更快的编写和熟悉金字塔的后台程序化交易,金字塔的程序化交易函数,前面都在交易系统函数名称前加 T 字母,比如BUY改为TBUY, 使用方法大致相同,用户仔细注意查看函数的使用说明。与图表交易系统函数不同的是,后台程序化交易的函数都使用实际的用户持仓和资金。让我们通过案例来学习后台程序化交易函数。例1:MA指标后台公式/中间变量MA3:MA(C,3);MA5:MA(C,5);/交易系统
9、TBUY(CROSS(MA3,MA5),1,LMT,C); /按照最新价限价开多TSELL(CROSS(MA5,MA3),0,LMT,C);/按照最新价限价平多,0表示平掉全部持仓请注意TBUY和TSELL函数的参数出现了变化,真正的下单时,需要指定下单类型和价格的,否则系统会按照市价进行交易。 用以模拟交易的函数和真实交易的函数,大部分只是有了前面T字母差别,大部分的用以交易评测的交易系统,只要将交易函数部分前面加T字母即可解决,唯一区别最大的就是TBUY,TSELL,TBUYSHORT,TSELLSHORT 这4个函数与模拟交易用的函数区别较大,请仔细辨别。请注意后台程序化交易不能使用图表
10、交易功能,且图表交易和后台交易的函数不能混用。交易控制符 THISCLOSE 在真实交易中被 LMT 等真实交易控制符所取代,金字塔的模拟交易控制符和真实交易控制符两者不能通用。金字塔的真实下单函数只支持LMT限价 MKT市价 STP止损 STPLMT限价止损 这4个交易控制符。真实下单交易函数,下单数量不再支持百分比模式。程序化交易的函数介绍:程序化交易系统之开多操作:用法:TBUY(COND,V,Type,P1,P2,AC,STOCK);表示当COND条件成立时,买入V股(手)当前品种,TYPE表示开仓类型,LMT限价 MKT市价 STP止损 STPLMT限价止损P1表示开仓价格,当TYP
11、E为LMT和STP,STPLMT时为指定限价和止损价格,其他情况填0P2为止损限价,当TYPE为STPLMT时,必须指定P2的止损限价,其他情况填0,当P1止损价触发时按照P2价格止损操作.当TYPE参数省略时,为市价开仓。AC为帐户ID,为空时为系统默认帐户,否则将下单到指定帐户中STOCK为品种代码,比如SH600215,为空或者不填时为当前品种后台程序化交易不能使用图表交易功能,且图表交易和后台交易的函数不能混用。例如,限价在图表中函数为Limit,后台为Lmt。市价在图表是函数Market,在后台是Mkt。例如:TBUY(CO ,1000,LMT,C);表示收阳线则在本周期收盘价上买入
12、1000股(手)。TBUY(C0,1000,STP,CLOSE+0.2);表示收阳线则在本周期收盘价高于0.2元下1000股(手)止损单,当盘中价格到了触发价时按市价开仓止损.TBUY(C0,1000,STPLMT,CLOSE+0.2,CLOSE);表示收阳线则在本周期收盘价高于0.2元下1000股(手)止损单,当盘中价格到了触发价时按CLOSE价格开仓止损。程序化交易系统之平多操作:TSELL(COND,V,Type,P1,P2,AC,STOCK); 用法同上程序化交易系统之开空操作:TBUYSHORT(COND,V,Type,P1,P2,AC,STOCK); 用法同上程序化交易系统之平空操
13、作:TSELLSHORT(COND,V,Type,P1,P2,AC,STOCK); 用法同上注意:程序化交易系统的函数中交易类型Type与交易测试系统的差别例2:唐奇安通道模型/中间变量input:N(20,5,100,1),NS(10,0,60,1);Price:=AVGENTERPRICE;/持仓价位/交易条件开多平空条件:=CROSS(H, hhv(ref(h,1),N);开空平多条件:=CROSS(llv(ref(l,1), N),L);/交易系统SELLSHORT(开多平空条件 and 持仓0,持仓,market);SELLSHORT(持仓0,持仓,market);SELL(持仓0,
14、持仓,Stopr,Price-NS);/止损BUYSHORT(开空平多条件 and 持仓=0,30%,market);/其他资产:asset,noaxis,colorgreen;持仓:HOLDING,LINETHICK0;总次数: TOTALTRADE,LINETHICK0;盈利:NUMWINTRADE,LINETHICK0;胜率:ROUNDS(100*PERCENTWIN,1),LINETHICK0;连亏:MAXSEQLOSS,LINETHICK0;连盈:MAXSEQWIN,LINETHICK0;将交易模型转换成程序化交易系统,主要是涉及交易系统函数的转化,即在交易系统函数前加“t”,以及交
15、易类型的改动;并且程序化交易函数都是在后台运行,不能在图表中显示;交易数量不能用30%的写法,只能用具体数量。因此,唐奇安通道模型转化为可程序化交易的系统:/中间变量input:N(20,0,60,1) ,NS(30,0,100,1);持仓:=tHOLDING,LINETHICK0;KCS:= intpart(tasset*0.3/(close*multiplier);/也表示30%的开仓数BUY1:=hhv(ref(h,1),N);SELL1:=llv(ref(l,1),N);Price:=tAVGENTERPRICE; /持仓价位/交易条件开多平空条件:=CROSS(H,BUY1);开空平多条件:=CROSS(SELL1,L);/交易系