欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    金字塔决策交易系统—高级教程(XXXX修订版).docx

    • 资源ID:1866237       资源大小:1.55MB        全文页数:99页
    • 资源格式: DOCX        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    金字塔决策交易系统—高级教程(XXXX修订版).docx

    上海金之塔信息技术有限公司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 VBA 原理的隐喻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 TestReport 对象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.7策略编写调试与跟踪895.3.8API接口更多功能信息90第六章 自定义PEL函数916.1 使用VBA自定义PEL函数916.1.1自定义函数的格式916.1.2自定义函数的两种工作模式926.2 使用C+DLL扩展函数程序调用94第一章 金字塔的后台程序化交易金字塔提供功能性和扩展性更为强大的基于后台预警模式的程序化交易模式(后台程序化),可以在不影响用户前台图形操作的情况下,高效地与预警系统一起工作,实现自动交易。由于该模式运行在后台,不需要打开图表占用过多的资源,且只需最后一个周期的信号,所以原则上公式不做多余计算,效率高,便于对多个品种同一个策略进行轮循监控。从某种意义讲,后台程序化属于图表程序的深化,它的优点是更注重于策略的高效执行,更完美地实现策略的设计初衷。虽然后台程序化的功能强大,但用户切忌直接使用后台策略,而跳过学习图表程序化的过程。原因是在后台程序化中用户无法直接在图表上看到信号的整个出现过程,因此对用户的公式编写水平有一定的要求。其次,用户需要对金字塔的后台交易系统工作机理有比较深的了解,并且要对自己的公式系统有清晰的认识,这样一旦遇到问题也能及时找到原因。后台交易过程中,一旦遇到问题,需要客户掌握第八章后台程序化交易调试的技巧。以我们多年的经验来看,用户先将策略经测评、优化、图表实盘上运行后,再转化成后台策略,会取得非常好的效果。1.1后台程序化工作机理在初级教程中,我们介绍了基于虚拟数据技术的图表程序化交易。想必经过一段时间的学习,大家已将图表程序化运用的相当纯熟。不过当你进行实盘的时候,是否发现在某些情况下,例如碰到未成交单、未完全成交单、需要进行追撤单等更精细的下单操作时,图表程序化就束手无策了。这是由于图表基于虚拟数据的特性,无法与真实账户进行交互,虚拟数据的成交并不考虑实盘的的流动性情况,只要价格达到即成交。而实际情况可能并不是这样。另一方面,当图表程序化碰上多品种、多策略、或者较复杂的策略时,有时系统会显得相对较慢、不流畅。这是由于图表需要计算大量以往的历史数据进行判断操作,并在图表上进行输出。这消耗了相当多的资源。但实盘并不需要考虑历史曾经如何,实时交易需要考虑的是如何高效的执行,其实只需根据最后一根K线上的数据,来确定开平仓的动作。这也就是例如DYNAINFO等这些常数函数无法进行测评而实盘的公式确可以用的主要原因,因为DYNAINFO只有最新的一笔行情数据,而没有历史的序列数据。金字塔后台程序化也是这个道理,因为金字塔的后台程序化只注重交易,因此无法用来测评。总结一下,金字塔的后台程序化交易是金字塔很大的特色。从工作机制的角度看,后台程序化在沿用PEL语言体系的情况下,为用户创造了近似VB、C+才能达到的精细化、高效快捷程序化下单模式。因此它特别适合那些多周期、多策略、多品种的组合交易以及对效率要求较高的套利交易,为您的交易带来无与伦比的便捷。1.2 后台程序化交易函数金字塔的后台程序化交易只能在专业版及更高级的版本中使用,它可以运行在序列和逐K线两种模式,但是推荐序列模式运行,这样可以极大提高后台执行的效率。为了让用户更快的编写和熟悉金字塔的后台程序化交易,金字塔的程序化交易函数,前面都在交易系统函数名称前加 T 字母,比如BUY改为TBUY, 使用方法大致相同,用户仔细注意查看函数的使用说明。与图表交易系统函数不同的是,后台程序化交易的函数都使用实际的用户持仓和资金。让我们通过案例来学习后台程序化交易函数。例1:MA指标后台公式/中间变量MA3:MA(C,3);MA5:MA(C,5);/交易系统TBUY(CROSS(MA3,MA5),1,LMT,C); /按照最新价限价开多TSELL(CROSS(MA5,MA3),0,LMT,C);/按照最新价限价平多,0表示平掉全部持仓请注意TBUY和TSELL函数的参数出现了变化,真正的下单时,需要指定下单类型和价格的,否则系统会按照市价进行交易。 用以模拟交易的函数和真实交易的函数,大部分只是有了前面T字母差别,大部分的用以交易评测的交易系统,只要将交易函数部分前面加T字母即可解决,唯一区别最大的就是TBUY,TSELL,TBUYSHORT,TSELLSHORT 这4个函数与模拟交易用的函数区别较大,请仔细辨别。请注意后台程序化交易不能使用图表交易功能,且图表交易和后台交易的函数不能混用。交易控制符 THISCLOSE 在真实交易中被 LMT 等真实交易控制符所取代,金字塔的模拟交易控制符和真实交易控制符两者不能通用。金字塔的真实下单函数只支持LMT限价 MKT市价 STP止损 STPLMT限价止损 这4个交易控制符。真实下单交易函数,下单数量不再支持百分比模式。程序化交易的函数介绍:程序化交易系统之开多操作:用法:TBUY(COND,V,Type,P1,P2,AC,STOCK);表示当COND条件成立时,买入V股(手)当前品种,TYPE表示开仓类型,LMT限价 MKT市价 STP止损 STPLMT限价止损P1表示开仓价格,当TYPE为LMT和STP,STPLMT时为指定限价和止损价格,其他情况填0P2为止损限价,当TYPE为STPLMT时,必须指定P2的止损限价,其他情况填0,当P1止损价触发时按照P2价格止损操作.当TYPE参数省略时,为市价开仓。AC为帐户ID,为空时为系统默认帐户,否则将下单到指定帐户中STOCK为品种代码,比如'SH600215',为空或者不填时为当前品种后台程序化交易不能使用图表交易功能,且图表交易和后台交易的函数不能混用。例如,限价在图表中函数为Limit,后台为Lmt。市价在图表是函数Market,在后台是Mkt。例如:TBUY(C>O ,1000,LMT,C);表示收阳线则在本周期收盘价上买入1000股(手)。TBUY(C>0,1000,STP,CLOSE+0.2);表示收阳线则在本周期收盘价高于0.2元下1000股(手)止损单,当盘中价格到了触发价时按市价开仓止损.TBUY(C>0,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); 用法同上程序化交易系统之平空操作: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,持仓,Stopr,Price+NS); /止损BUY(开多平空条件 and 持仓=0,30%,market);SELL(开空平多条件 and 持仓>0,持仓,market);SELL(持仓>0,持仓,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”,以及交易类型的改动;并且程序化交易函数都是在后台运行,不能在图表中显示;交易数量不能用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);/交易系统TSELLSHORT(开多平空条件 and 持仓<0,t持仓,mkt);TSELLSHORT(持仓<0,持仓,Stp,Price+NS);TBUY(开多平空条件 and 持仓=0, KCS,mkt);TSELL(开空平多条件 and 持仓>0,持仓,mkt);TSELL(持仓>0,持仓,Stp,Price-NS);TBUYSHORT(开空平多条件 and 持仓=0, KCS,mkt);若想与交易模型完全一样,后句则需这样写:tSELLSHORT(ref(开多平空条件,1) and 持仓<0,t持仓,mkt);tSELLSHORT(持仓<0,持仓,Stp,Price+NS);tBUY(ref(开多平空条件,1) and 持仓=0, KCS,mkt);tSELL(ref(开空平多条件,1) and 持仓>0,t持仓,mkt);tSELL(持仓>0,持仓,Stp,Price-NS);tBUYSHORT(ref(开空平多条件,1) and 持仓=0, KCS,mkt);注意:在公式编辑中,点击 << 可弹出函数列表,可按类查找需要的函数,双击该函数将直接引入公式。公式中的蓝色字段为函数名,将鼠标放在未知的蓝色字段上,将看到该函数的描述和基本用法。1.3 后台套利模型范例基于后台程序化效率高、操作灵活的特性,用来处理对价格异常敏感的套利交易就非常合适了。以下我们选取了常见的集中情况作为范例。(1)简单价差类型的套利模型C1 为两个品种的价差。当价差小于 300 时,买入开仓前一品种RB05,卖出开仓后一品种RB03当价差大于500时,卖出平仓前一品种,买入平仓后一品种当价差大于 600 时,卖出开仓前一品种,买入开仓后一品种当价差小于400时,买入平仓前一品种,卖出平仓后一品种由于涉及到需要同时下单到不同的品种,这里直接使用后台程序化交易系统编写。/中间变量C1:= “RB05close”-“RB03close”;/交易系统TBUY(CROSS(300,C1),10, mkt,0,0,'','SQRB05');/开多TBUYSHORT(CROSS(300,C1),10,mkt, 0,0,'','SQRB03'); /开空TSELL(CROSS(C1,500),10,mkt, 0,0,'', 'SQRB05'); /平多TSELLSHORT(CROSS (C1,500),10,mkt, 0,0, '', 'SQRB03'); /平空TBUYSHORT(CROSS(C1,600),10,mkt, 0,0, '','SQRB05'); /开空TBUY(CROSS(C1,600),10, mkt, 0,0,'', 'SQRB03');/开多TSELLSHORT(CROSS (400,C1),10,mkt, 0,0, '', 'SQRB05'); /平空TSELL(CROSS (400,C1),10,mkt, 0,0, '', 'SQRB03'); /平多注意在后台程序化交易监控中,用户至少需要监控RB05或者RB03其中的一个。(2)如何编制技术指标的套利模型:/中间变量C1:= “RB05close”-“RB03close”;DIFF := EMA(C1,12) - EMA(C1,26); DEA := EMA(DIFF,9); MACD:=2*(DIFF-DEA); /交易条件平空开多条件 :=MACD>0; 平多开空条件 :=MACD<0; /交易系统TSELLSHORT(平多开空条件,10, mkt, 0,0, '', 'SQRB03'); /平空TBUY(平空开多条件,10,mkt, 0,0,'', 'SQRB05');/开多TSELL(平多开空条件,10, mkt, 0,0,'', 'SQRB05'); /平多TBUYSHORT(平空开多条件,10,mkt, 0,0, '', 'SQRB03'); /开空(3)如何编制技术指标的多账户模型:账户1:16801账户2:16802/中间变量DIFF := EMA(C,12) - EMA(C,26); DEA := EMA(DIFF,9); MACD:=2*(DIFF-DEA); /交易系统IF THOLDING<0 THEN BEGINTSELLSHORT(MACD>0 and THOLDING<0, THOLDING, mkt, 0,0,'16801'); /平空TSELLSHORT(MACD>0,10, mkt, 0,0, '16802'); /平空ENDIF THOLDING=0 THEN BEGINTBUY(MACD>0 and THOLDING=0,10,mkt, 0,0, '16801');/开多TBUY(MACD>0,10,mkt, 0,0, '16802');/开多ENDIF THOLDING>0 THEN BEGINTSELL(MACD<0 and THOLDING>0, THOLDING,10, mkt, 0,0,'16801'); /平多TSELL(MACD<0,10, mkt, 0,0,'16802'); /平多ENDIF THOLDING=0 THEN BEGINTBUYSHORT(MACD<0 and THOLDING=0,10,mkt, 0,0,'16801'); /开空TBUYSHORT(MACD<0,10,mkt, 0,0, '16802'); /开空END所有上述模型仅供参考,据此交易风险自负。更多范例请登陆 金字塔论坛策略发布区 http:/1.4 后台程序化的启用选择“交易后台程序化交易”或按Ctrl + A会出现图7.3本地预警交易。图1.41本地预警交易(1)选“新增条件”,将出现图7.4程序化条件设定图1.42程序化条件设定(2) 参数设置 第一步:首先,点“指标公式”,选择你的模型和使用周期;第二步:加入要监控的品种;第三步:其它各种设置,注意:打勾“允许程序化交易”,其中,可将“下单需手工确认”关闭,如勾选自定义分品种下单,会出现确认对话框,请用户详看出现的每一个提示确认对话框;设定“预警时间间隔”及“时间范围启用”;等等然后按“确认” ;最后点击“启动预警”。(3)在程序化交易过程中,用户可随时点击【监控】,观察系统运行情况,并可在信心爆棚时,手工加减仓干预。如图7.5程序化交易明细1.43程序化交易明细1.5 后台程序化的调试如前文所述,后台程序化需要用户对金字塔的后台交易系统工作机理有比较深的了解,并且要对自己的公式系统有清晰的认识,现在,我们就将讲解的后台自动交易的调试内容,这是每个后台自动交易编写用户所必须掌握的基本的能力要求,只有用户掌握了调试技巧,才能在金字塔的平台上做出有效而又符合要求的后台自动化交易模型。 供后台调试金字塔提供了两个函数 DEBUGOUT 和 DEBUGFILE,其中DEBUGOUT是只针对程序化交易使用,在Ctrl+A预警设置窗口点击“监控”按钮后的程序化交易监控窗口,将显示出当前每个品种的监控过程以及下单动作。图1.5DEBUGOUT函数的描述如下:DEBUGOUT(STR,NUM),STR为用户指定输出的一个行文字,NUM为用户指定的一个监控数字.例如:DEBUGOUT('当前资产为%.2f', TASSET),将在程序化交易的监控部分打印出来 "当前资产为1234.00",(假设当前的资产为1234)"%.2f"为一个打印的控制符号,系统会将他替换为指定的一个数字输出,%.2f为显示两位小数,%.0f则表示不显示小数.用户最常见的问题就是,从图表上看明明应该某个时间段应该是开平仓了,但是结果确没有反应,后台并没有按预计发出交易指令,这种情况用户一般需要基于下面原因考虑:(1)用于交易的品种历史数据是否补齐,因为金字塔的历史数据是基于点播模式补充的,处于后台交易的品种如果缺失数据将会导致交易信号出现不可预料的情况。(2)用户所选择的交易系统周期是否合理,预警监控间隔时间是否合理,甚至用户是否选中了“允许程序化交易”复选框。(3)用户的TBUY等交易指令在多帐户交易时,市价委托是否指定了交易价格,常见错误是用户认为指定MKT指令后就不用填写价格了,应该填0补充。比如:MA3:MA(C,3);MA5:MA(C,5);开多条件:= CROSS(MA3,MA5);平多条件:= CROSS(MA5,MA3);TBUY(开多条件,1,LMT,C); /按照最新价限价开多TSELL(平多条件,0,LMT,C); /按照最新价限价平多,0表示平掉全部持仓这样一个简单的公式,是否出现交易信号,完全取觉于BK和平多条件这两个变量的计算结果,只要这样MA3:MA(C,3);MA5:MA(C,5);开多条件:= CROSS(MA3,MA5);平多条件:= CROSS(MA5,MA3);DEBUGOUT(开多条件=%.0f,开多条件);DEBUGOUT(平多条件=%.0f,平多条件);TBUY(开多条件,1,LMT,C); /按照最新价限价开多TSELL(平多条件,0,LMT,C); /按照最新价限价平多,0表示平掉全部持仓这样用户就可以一直在程序化交易监控窗口看到整个变量在不断循环中的值变化了,给用户带来了调试的机会。但是上述的只表达了开多条件,平多条件这两个信号,可能并不能让用户最终找到问题原因,要找到,用户可能还得将MA3,MA5的变量值变化也打印输出,只要一直这样往上逐个筛选每个结果数据,就能最终找到问题的原因。金字塔的另一个非常重要函数DEBUGFILE,可以将调试日志记录文件中,方便用户查询更长的历史记录,如果用户不习惯使用DEBUGOUT的窗口输出模式,可以使用DEBUGFILE做输出,使用其他文本工具打开。另外,DEBUGFILE与DEBUGOUT不同之处在于他不限于一定运行在后台程序化交易环境中,DEBUGFILE描述如下:用法:DEBUGFILE(PATH,STR,NUM),PATH为用户的本地计算机路径,STR为用户指定输出的一个行文字,NUM为用户指定的一个监控数字.例如:DEBUGFILE('D:TEST.TXT','当前资产为%.2f',1234),将在程序化交易的监控部分输出到D:TEST.TXT文件, "当前资产为1234.00","%.2f"为一个打印的控制符号,系统会将他替换为指定的一个数字输出,%.2f为显示两位小数,%.0f则表示不显示小数。此外金字塔提供的另一个MSGOUT函数,通过在消息窗口自行输出字符串信息,也可以起到很好的调试作用。最后我们讲一下日志记录功能,此功能会记录下您本地所有的下单情况。如何启动记录日志:选择“交易”菜单->下单设置->程序化交易->将“记录下单日志”打勾。打勾的同时,会提醒您日志所保存的文件路径。在图表交易和后台自动交易的甚至手工下单的过程中,金字塔会将与交易有关的动作记录在内,便于用户查找和分析问题原因。1.6 后台程序化注意事项(1) 图表BUY等显示函数是不能放在后台做监控交易的,但是将"允许程序化交易"勾去掉后单独做预警是可以的。(2)只有少数的带T的后台交易函数允许使用在BUY前台图表交易策略中. Tholding, TAVGENTERPRICE,Taccount,Tasset,但是金字塔强烈不建议使用,因为这样会造成图表上的交易信号与实际的下单记录不符。(3)金字塔的后台交易部分,使用手工闪电下单的记录,将无法通过比如TENTERPRICE等与交易记录有关函数中得到结果,但可以通过程序化交易监控中的手工下单干预功能完成此项目的。(4)金字塔的后台交易,查询持仓和资产均为用户当前的实际数值,如果多个策略同时多一个品种或通一个帐户进行操作会产生相互干扰现象,解决办法就是通过使用交易系统使用虚拟持仓和资金,这样就完全可以避免这种共振现象,但是推荐高级用户使用,因为需要很多技巧需要处理。(5)用以图表显示的交易系统和后台程序化交易的交易指令函数,参数有明显的不同,用户不能简单的将BUY函数加个T就可以直接后台交易,使用前应该将鼠标放在TBUY函数上认真看看函数说明。同名交易系统函数与程序化交易函数的差别:函数意义前台图表交易模型后台交易系统开多BUYTBUY平多SELLTSELL开空BUYSHORTTBUYSHORT平空SELLSHORTTSELLSHORT其中TYPE:次周期限价LIMITREF(条件,1),LMTTYPE:本周期限价LIMITRLMTTYPE:次周期停损STOPREF(条件,1),STPTYPE:本周期停损STOPRSTPTYPE:次周期市价MARKETREF(条件,1),MKTTYPE:本周期市价MARKETRMKT开仓百分比30%KCS:= intpart(tasset*0.3/MULTIPLIER/close);语句语句T语句函数可在图表上显示不能在图表上显示总之,通过函数列表,了解他们的细微差别。第二章 图表交易和后台交易的主要区别和联系2.1 图表、交易函数的区别2.11 图表交易函数BUY 开多BUYSHORT 开空SELL 平多SELLSHORT 平空适用于图表程序式交易模式,本函数中可以设置下单条件、下单手数、下单价格等参数。这种交易函数优点在于可以将本交易函数套用到若干个循环逻辑判断语句中,对下单手数灵活设置,对下单价格灵活的掌控,与之配套使用的各类函数较多,因此能够用于实现较为复杂的交易模型;缺点是没有参数设置账户名、下单品种、只能运行在逐K线模式等。例2.1: BUY(vol/ref(vol,1)>3 AND CLOSE>OPEN , 1 ,LIMIT ,CLOSE );SELL(vol/ref(vol,1)>3 AND CLOSE<OPEN , 1 ,LIMIT ,CLOSE );例2.2: IF vol/ref(vol,1)>3 THEN BEGINBUY(CLOSE>OPEN , 1 ,LIMIT ,CLOSE );SELL(CLOSE<OPEN , 1 ,LIMIT ,CLOSE );END 其中LIMIT为限价委托交易控制符,新图表程序化交易可使用的交易控制符非常丰富,还有LIMITR;MARKET; NEXTHIGH; NEXTLOW; NEXTMID;NEXTOPEN; THISCLOSE;这些交易控制符的具体用法用户可以在公式编辑器左方的函数列表中找到。2.12 后台交易函数TBUY开多TBUYSHORT开空TSELL平多TSELLSHORT 平空适用于后台程序化交易模式,在图表交易函数的基础上又增加了关于下单账户、下单品种两个参数,对交易过程的控制能力进一步增强,本函数可以设置下单条件、下单手数、下单价格、下单账户、下单品种等参数。这种交易函数的优点在于可以适用于后台交易模式,对下单手数、价格和账户都可以做到精确控制,有大量的实时动态行情函数、后台函数等可以与之配套使用,基本所有的交易模型都可以通过后台交易模式来实现。例2.3:TBUY(vol/ref(vol,1)>3 AND CLOSE>OPEN ,1,LMT ,CLOSE ,0,351579 ,al02);TSELL(vol/ref(vol,1)>3 AND CLOSE<OPEN ,1,LMT ,CLOSE ,0,351579,al02);注意:限价委托交易控制符在后台程序化交易已由LMT取代,后台程序化交易由于是采用的真实持仓的方式工作,因此只有LMT;MKT;STP;LMTSTP这4个交易控制符,并且这些交易控制符不可混用,也就是后台的交易控制符不能用在图表的BUY函数中,同样图表的交易控制符不能用在TBUY中,后面的章节中我们还会对其用对照表方式进行详细的对比。2.3图表交易和后台交易的主要区别(1)适用交易模式不同图表交易函数用在图表程序化交易中;后台交易函数用于后台程序化交易中;(2)显示方式不同在使用时,需要在所看的当前品种分析K线图中调用出交易指标,调用后K线图中会显示买卖信号;后台交易函数使用时只会在后台静默的运行,不需要在当前所看的K线图中调用交易指标,因此在当前所看的K线图中不显示买卖信号; (3)启用和设置方式不同图表程序化交易的设置和启用界面位于菜单栏的“交易>图表程序化交易”选项。后台程序化交易的设置和启用界面位于菜单栏的“交易>后台程序化交易”选项。 (4)虚拟和真实的区别图表程序化交易采用的是虚拟持仓、虚拟资金等概念,各个买卖点以及中间过程返回给用户的持仓和资金是根据历史交易信号和相关初始化的数据计算得来,资金、费率等初始化数据是在指标编辑器中的“费率设置”中进行设置。后台程序化交易采用的是真实持仓、真实资金的概念,它们调用的是账户栏中真实的账户数据。 第三章 基于VBA的二次开发一个优秀的程序化交易软件不仅需要满足个人个性化的策略实现外,策略的执行也至关重要,俗话说:细节决定成败,前面章节我们都是介绍的使用金字塔内置的PEL脚本语言作为程序化交易使用,但是PEL终归还是为普通非计算机专业投资者准备的脚本语言,方便投资者学习和使用的同时,也带来了其自身存在的格式固化,运行不够灵活,效率不足等问题,是无法满足具有更多想法更多需求的程序化交易者的。在各种高级语言中,熟悉和精通VB的人无疑是最多的。著名的微软OFFICE办公软件中的二次开发也是使用的VBA。但是金字塔不仅仅是一个被广泛应用的金融分析软件,除了具有一般软件的数据处理、统计分析、图表功能外,最大的特点是集成了VBA 环境。并提供了VBA 的IDE 环境。可以应用金字塔的所有现有功能,例如其数据处理、图表绘制、数据库连接、内置函数等等。利用这些接口将极大的发挥我们专业程序化交易投资者的编程空间,使我们的交易系统具有强大的计算能力、扩展能力和生命力。3.1金字塔VBA与OFFICE VBA区别和联系尽管金字塔VBA与OFFICE VBA都是VBA,但是它们2个还是有些不同的地方,这里假设读者是熟悉OFFICE VBA的用户,如果你是VBA的初学者,那么可以不必理会这里的差别。金字塔的脚本引擎是VBS,与OFFICE的VBA主要区别在于变量无需声明就可以使用。金字塔软件的VBA系统是介于传统VBS与VBA之间的系统,支持VBA系统中才有的窗体,框架等等更多的对象,另外,语法上又兼容VBS。除了类模块外,所有的框架和窗体对象模块的数据都是公用的,框架和窗体之所以独立是因为方便用户编辑和管理,实际运行代码是合在一起的。比如你在框架或者窗体中定义了一个函数过程外的全局变量,实际上是所有VBS代码都可以调用的,在窗体框架对象中的过程名在其他窗体中调用也无需使用 窗体.过程名 这种方式,可以直接使用过程名。金字塔中的窗体与OFFICE其他组件的窗体在访问其内部控件时稍有不同,例如访问UserForm1窗体的Text1编辑控件,使其隐藏。代码如下: UserForm1_Text1.Visible = False除此之外,金字塔VBA与OFFICE VBA在IDE界面,使用方法和布局上,完全一致,如果读者熟悉OFFICE VBA的开发,那么就应该很快掌握金字塔VBA的开发。3.2 VBA 原理的隐喻VBA 的基本原理可通过下图做示意性解释。金字塔对象VBA代码VBAVBA 作为应用VBA 编写的代码和金字塔对象之间的一个桥梁,为2 者之间的调用提供支持,这种调用是通过COM 自动化实现的。例如我们的代码中一句代码,调用金字塔中一个对象的一个属性,那么这个过程大概是类似这样的:VBA 环境解释执行这句代码,如果发现对金字塔对象的调用,就通过COM 的方式调用这个对象,获取其属性,这样VBA 代码就可以和金字塔对象进行交互。3.3 VBA 简介要使用 VBA 进行数据处理,第一要熟悉VBA 的IDE 环境,知道如何进行代码书写,如何编写代码,设计窗体,创建类模块(对象),第二要熟悉VBA 的基本语法和。二者都是VBA 程序设计的基础,需要认真学习。VBA 语法不是一章就可以全部介绍完全的,本章介绍的内容是最基本和应该熟练掌握的内容,对于不熟悉或者不理解的内容可以在学习了后面的内容后再反过头来学习。有些内容需要反复练习和熟悉。对于VBA 语法和用法的很多内容可以随时通过查看帮助来获得相关信息。本章和下一章(金字塔 对象模型)的部分内容,特别是表格内的一些内容,没有必要完全记住,可以作为参考手册来使用。3.3.1VBA 及其IDE 初步本部分将对 VBA 及其开发环境IDE(集成开发环境)作一概略的介绍。VBA IDE 是进行程序设计和代码编写的地方,同一个金字塔共享同一IDE。文中会涉及到一些诸如对象、事件等部分读者可能不熟悉或不清楚的概念,对于此类问题可直接忽略之,因为在后面会有详细介绍。本部分也不是一个VBA 的参考文档,只是其语法、特征的快速浏览和介绍。(1)VBA 集成开发环境(IDE)的组成VBA 代码和金字塔文档文件是保存在一起的,可以通过点击“工具 宏 Visual Basic工程”打开VBA 的IDE 环境,进行程序设计和代码编写。图3-1Visual Basic IDE 环境图 3-1 为金字塔 VBA 的IDE 环境,缺省情况下,VBA IDE 环境上方为菜单和工具条(图 3-1),左侧窗口为工程资源管理器窗口,右侧最大的窗口为代码窗口。每一个金字塔文档文件,对应的VBA 工程都有4 类对象,包括:框架、窗体、模块和类模块(图 3-2)。这里的框架主要是金字塔运行时的技术分析图表,例如我们常见的K线走势分析图的框架对象,双击这些对象会打开代码窗口(图3-1 右侧窗口),在此窗口中可输入相关的代码,响应事件,例如框架的打开、关闭,窗格的激活、品种显示的修改、选择等(有关事件、金字塔 对象模型见后)。窗体对象代表了自定义对话框或界面,模块为自定义代码的载体,类模块则是以类或对象的方式编写代码的载体,关于各对象的具体含义和使用见后。在工程资源管理器窗口的右键菜单下,有添加用户窗体、模块、类模块的选项,也可以将已有的模块移除、导入和导出。注意:建议用户新建一个VBA工程来完成你的个性化VBA代码,尽量不要在默认的工程中添加,防止多个不同工程的代码相互干扰,您可以点击左侧工程资源窗口上的工具栏来新建一个VBA工程。(2)在 VBA IDE 下进行开发熟悉了 VBA 的IDE 环境后,我们来开发VBA 之旅的第一个程序。首先我们双击左侧工程资源管理器上的窗口的模块分类,然后双击“Macro”模块,打开宏模块代码编辑窗口(图3-3),然后选择

    注意事项

    本文(金字塔决策交易系统—高级教程(XXXX修订版).docx)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开