您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 程序化交易周六下午培训
文华财经研究部课程内容一、模型的基本结构和跨指标模型的编写二、跨周期模型的编写MY语言的编写基于文华财经wh3平台中。通过本节课的学习,了解文华公式编写平台的基本函数与语法,设计自己的指标和程序化交易策略模型,实现全自动的委托发单交易。指标指能够绘出图线但不发交易指令的公式。指标是一个技术分析范畴的概念。交易模型:指能够发出BK、SP等交易指令,模型还包含下单方向,交易手数,止盈止损等与交易、资金使用相关的参数设置。交易模型是一个交易范畴的概念。交易指令:指交易模型自动发出的下单委托指令,可以不经过投资者确认直接下单,也可以等待投资者回车确认再下单。交易指令在K线图上以不同颜色和形状的箭头来代表。交易指令是一个程序化交易范畴的概念。理解一下名词:RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;K:SMA(RSV,M1,1);D:SMA(K,M2,1);J:3*K-2*D;用指标监测行情:K线上穿D线RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;K:SMA(RSV,M1,1);D:SMA(K,M2,1);J:3*K-2*D;//以下是加入的交易指令CROSS(K,D),BK;//K向上穿越D,发出买开交易指令CROSS(J,100),SP;//J向上穿越100,发出卖平交易指令CROSS(D,K),SK;//K向下穿越D,发出卖开交易指令CROSS(0,J),BP;//J向下穿越0,发出买平交易指令AUTOFILTER;MYlanguage编写语法MYlanguage操作符1、定义变量名称变量名称不能相互重复;不能与参数名重复;不能与函数名重复;2、半角输入法的大写状态;3、每个语句应该以分号结束;命名参数模型源码A:(O+C)/2;B:CO;//判断是否收阳;满足条件返回1,否则返回0D:TIME=0900&&CO;//用于多条件逻辑关系SETTLE引用结算价REF(X,N)引用X在N个周期前的值MA(X,N)求X在N周期内的简单移动平均。定义变量:当根K线最高价;结算价:15周期收盘价均线(显示定义);REF(HH,1);REF(MA15,1);HH:=H;S:=SETTLE;MA15:MA(C,15);衍生:当前K线的前一个周期最高价;当前K线的前一个周期15均线;在编写前,需要将交易思想清晰量化后,通过语言函数编写完成交易模型基本结构1.定义需要的每个变量2.交易条件+交易指令MA5:=MA(C,5);MA10:=MA(C,10);CROSS(MA5,MA10),BK;CROSS(MA10,MA5),SP;CROSS(MA10,MA5),SK;CROSS(MA5,MA10),BP;定义思路中涉及到的变量交易条件,写入交易指令均线上穿平空做多,均线下穿平多做空;CROSS(MA5,MA10),BPK;CROSS(MA10,MA5),SPK;具体细化思路:5日均线上穿10日均线,平空做多;5日均线下穿10日均线,平多做空;关键词:多个交易条件1:以均线结合KD交叉指标为例:2:练习编写:MACD、KDJ指标模型。MA5:=MA(C,5);MA10:=MA(C,10);MA5MA10,BK;//5日均线大于10日均线买入。MA5MA10,SP;//10日均线大于5日均线卖出。——》模型中加入KD指标思路:均线模型DIFF:=EMA(CLOSE,SHORT)-EMA(CLOSE,LONG);DEA:=EMA(DIFF,N);MACD:=2*(DIFF-DEA);RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;K:=SMA(RSV,M1,1);D:=SMA(K,M1,1);J:=3*K-2*D;(CROSS(K,D)&&J30)||(CROSS(DIFF,DEA)&&MACD1),BK;(CROSS(D,K)&&REF(J,1)70)||(CROSS(DEA,DIFF)&&MACD-1),SP;(CROSS(D,K)&&J70)||(CROSS(DEA,DIFF)&&MACD-1),SK;(CROSS(K,D)&&REF(J,1)30)||(CROSS(DIFF,DEA)&&MACD1),BP;AUTOFILTER;总结:多条件下用“()”明确逻辑关系跨周期函数介绍引用某品种在某个周期上加载了某个指标的数据。用法:#IMPORT[CODE,PERIOD,FORMULA]ASVAR引用CODE所对应的合约PERIOD周期下指标FORMULA的数据。CODE文华码,PERIOD周期,FORMULA引用指标名,VAR定义变量名跨周期跨合约模型的编写规则1.只能引用如下周期:MIN1MIN3MIN5MIN10MIN15MIN30HOUR1DAYWEEKMONTH2.只能短周期引用长周期3.被引用的指标中不能存在引用4.如果不写文华码,默认引用当前合约,也可以直接写合约代码如:rb12015.FORMULA引用指标名,只能引用除数字、或者数字开头的名称之外的名称。例同一合约不同周期的数据调用要求当日均线出现多头排列时,5分钟KD线金叉,做多。当日均线出现空头排列时,5分钟KD线死叉,做空。先建立一个指标名称AAAMA5:=MA(C,5);MA10:=MA(C,10);MA30:=MA(C,30);在建立你的模型#IMPORT[,DAY,AAA]ASVARDM5:=VAR.MA5;DM10:=VAR.MA10;DM30:=VAR.MA30;RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;K:SMA(RSV,M1,1);D:SMA(K,M2,1);J:3*K-2*D;DM5DM10&&DM10DM30&&CROSS(K,D),BPK;DM5DM10&&DM10DM30&&CROSS(D,K),SPK;AUTOFILTER;30分钟周期上,当前面一根MA5大于MA10,并且5分钟周期上,MA5上穿MA10,做多。30分钟周期上,当前面一根MA5大于MA10,并且5分钟周期上,MA5下穿MA10,做空。尾盘平仓例同一合约不同周期的数据调用要求先建立一个指标名称AAARMA5:=REF(MA(C,5),1);RMA10:=REF(MA(C,10),1);在建立你的模型#IMPORT[,MIN30,AAA]ASVARDM5:=VAR.RMA5;DM10:=VAR.RMA10;MA5:=MA(C,5);MA10:=MA(C,10);DM5DM10&&CROSS(MA5,MA10)&&TIME1450,BK;(DM5DM10&&CROSS(MA10,MA5))||TIME=1450,SP;DM5DM10&&CROSS(MA10,MA5)&&TIME1450,SK;(DM5DM10&&CROSS(MA5,MA10))||TIME=1450,BP;AUTOFILTER;画线函数实例1:趋势线函数:用法:TRENDLINES(COND1,DATA1,COND2,DATA2);要求:1.突破5周期均线与30周期均线金叉k线最高点和20周期均线与60周期均线金叉k线最高点直接的连线,平空做多。2.突破5周期均线与30周期均线死叉k线最低点和20周期均线与60周期均线死叉k线最低点直接的连线,平多做空。实例源码:MA5:=MA(C,5);MA20:=MA(C,20);MA30:=MA(C,30);MA60:=MA(C,60);TMP1:=TRENDLINES(CROSS(MA5,MA30),H,CROSS(MA20,MA60),H);TMP2:=TRENDLINES(CROSS(MA30,MA5),L,CROSS(MA60,MA20),L);HTMP1&&CMA30,BPK;LTMP2&&CMA30,SPK;AUTOFILTER;画线函数实例2:水平线函数:用法:HORIZONTALLINE(COND,DATA);要求:1.突破前期5周期均线与60周期均线金叉k线最高点,平空做多。2.突破前期5周期均线与60周期均线死叉k线最低点,平多做空。实例源码:MA5:=MA(C,5);MA60:=MA(C,60);SPXH:HORIZONTALLINE(CROSS(MA5,MA60),H);SPXL:HORIZONTALLINE(CROSS(MA5,MA60),L);EVERY(HSPXH,5),BPK;EVERY(LSPXL,5),SPK;AUTOFILTER;课程内容一、头寸函数介绍二、资金管理,止盈止损模型的编写思路及案例三、使用资金管理,止盈止损模型需要注意的问题常用头寸函数介绍ISLASTBK判断上一个交易信号是否是BK。用法:ISLASTBK如果上一个交易信号是BK则返回1否则返回0ISLASTSK判断上一个交易信号是否是SK。用法:ISLASTSK如果上一个交易信号是SK则返回1,否则返回0BARSBK上一次买开信号位置用法:BARSBK返回上一次买开仓距离当前k线的k线数。BARSBK上一次买开信号位置用法:BARSBK返回上一次买开仓距离当前k线的k线数。BKPRICE买开信号位置的买开信号价位。用法:BKPRICE返回最近一次模型买开位置的买开信号价位。例如:BKPRICE-CLOSE60,SP;//如果买开价位比当前价位高出60,且买开价位存在,卖平仓请注意当模型存在连续多个开仓信号(加仓)的情况下,该函数返回的是最后一次开仓信号的价格,而不是开仓均价。注:BKPRICE只在加载之后的K线上才返回信号价位。效果测试中该函数返回信号位置的收盘价SKPRICE卖开信号位置的卖开信号价位用法:SKPRICE返回最近一次模型卖开位置的卖开信号价位。例如:CLOSE-SKPRICE60&&SKPRICE0,BP;//如果当前价位高出卖开价位60,且卖开价位存在,买平仓请注意当模型存在连续多个开仓信号(加仓)的情况下,该函数返回的是最后一次开仓信号的价格,而不是开仓均价。注:SKPRICE只在加载之后的K线上才返回信号价位。效果测试中该函数返回信号位置的收盘价MONEY虚拟资金余额用法:MONEY返回虚拟资金余额。注意与未来函数同时使用ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等可能会导致误差。MARGIN合约保证金用法:MARGIN返回当前合约的保证金比率(用户启动模组时设置的)。注意与未来函数同时使用ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等可能会导致误差。PROFIT虚拟逐笔浮盈用法:PROFIT返回当前的虚拟逐笔浮动盈亏。注意与未来函数同时使用ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等可能会导致误差。SETDEALPERCENT设置下单的虚拟资金使用比例用法:SETDEALPERCENT(fPercent)表示每次按资金的fPercent(范围1~100)下单。例子:SETDEALPERCENT(20);//每次按资金比例的%20下单注:应该与AUTOFILTER函数同时使用BUYVOL模型虚拟多头持仓用法:BUYVOL返回模型虚拟多头持仓。注意与未来函数同时使用ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等可能会导致误差。SELLVOL模型虚拟空头持仓用法:SELLVOL返回模型虚拟空头持仓。注意与未来函数同时使用ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEA
本文标题:程序化交易周六下午培训
链接地址:https://www.777doc.com/doc-3440037 .html