一、程序化交易的编写㈠、交易模型编写规范和一般原则1、编辑平台支持的操作符2、编辑平台支持的函数⑴引用数据⑵金融统计⑶数理统计更多期货股票学习资料点击:⑷逻辑判断⑸数学运算更多期货股票学习资料点击:⑹时间函数⑺绘图8、level-2函数(只有嬴智版本支持)K2K2K2K2K2K2K2K2K2K2K2K2K2K2LM文件)”。
被引用的指标中不能存在引用其他指标语句。
被引用指标名称需以英文开头,可以是英文加数字形式,但不能出现汉字。
如:被引用指标名称可以是“MAA”、“MA1”,但不可以是“1MA”或“MA组合”。
B、文华码输入错误如沪铜1002合约文华码为2102,并不是1002,各合约文华码可在报价列表“文华码”抬头列或各合约K线图右上角合约名称后括号内查到。
同品种不同周期间调用数据时可不必填写文华码,但#IMPORT函数填写文华码位置需以空格代替,不可省略。
C、周期使用混乱目前跨周期函数只允许短周期引用长周期数据,如不能在日周期上引用分钟周期数据。
目前可供引用周期:MIN1、MIN3、MIN5、MIN10、MIN15、MIN30、HOUR1、HOUR3、HOUR8、DAY、WEEK、MONTH 。
⑵跨周期均线组合模型关键函数:#IMPORT,CROSS使用周期:三十分钟模型说明:日周期均线为多头排列时,三十分钟周期上只做多,不做空;日周期均线为空头排列时,三十分钟周期上只做空,不做多。
第一步:建立日周期均线指标“MAD”MA1:=MA(CLOSE,5);MA2:=MA(CLOSE,10);MA3:=MA(CLOSE,25);第二部:编写跨周期交易模型#IMPORT[ ,DAY,MAD] AS AM1:=;M2:=;M3:=;MA5:=MA(CLOSE,5);MA10:=MA(CLOSE,10);CROSS(MA5,MA10)&&M1>M2&&M2>M3,BK;CROSS(MA10,MA5),SP;CROSS(MA10,MA5)&&M1<M2&&M2<M3,SK;CROSS(MA5,MA10),BP;★以上模型源码内容仅供编写参考使用,如用于交易使用,风险自负⑶跨合约MACD模型关键函数:#IMPORT使用周期:五分钟模型说明:当沪铜指数(文华码2100)五分钟周期DIFF金叉DEA时,在沪铜1002合约上买平开;当沪铜指数(文华码2100)五分钟周期DIFF死叉DEA时,在沪铜1002合约上卖平开。
第一步:文华自带“MACD”指标,所以无需另新建指标。
第二步:编写跨合约交易模型#IMPORT[2100,MIN5,MACD] AS VARD:=;E:=;CROSS(D,E),BPK;CROSS(E,D),SPK;★以上模型源码内容仅供编写参考使用,如用于交易使用,风险自负容易犯的编写错误:所引用变量名称需与原指标变量名称相符,如:#IMPORT[2100,MIN5,MACD] AS VARD:=;编写跨合约模型前需确认原MACD指标中确实含有DIFF变量名称(确认方法:通过公式管理器找到原指标,打开查看);请注意原指标变量名称的大小写,如原指标变量名称为diff,则需要在引用时引用D:=; 而不是 D:=;5、头寸及信号记录模型编写示范⑴按资金比例下单模型关键函数:SETDEALPERCENT使用周期:五分钟模型说明:当满足开仓条件时按可用资金比例的30%下单。
SETDEALPERCENT;A:=VALUEWHEN(TIME=905,CLOSE);B:=VALUEWHEN(DATE<>REF(DATE,1),OPEN);A<B&&CROSS(CLOSE,B)&&TIME<1450,BK;(A>B&&CROSS(B,CLOSE))||TIME>=1450,SP;A>B&&CROSS(B,CLOSE)&&TIME<1450,SK;(A<B&&CROSS(CLOSE,B))||TIME>=1450,BP;★以上模型源码内容仅供编写参考使用,如用于交易使用,风险自负⑵资金权益模型关键函数:TRD_CAPITAL,TRD_ASSETS,SAR使用周期:十五分钟模型说明:只有当可用资金占总权益50%以上时满足价格上/下突破止损点才执行开仓条件,否则不予执行。
SARLINE:=ABS(SAR(4,,);A:=TAD_CAPITAL/TRD_ASSETS;CROSS(CLOSE,SARLINE)&&A>,BK;CROSS(SARLINE,CLOSE),SP;CROSS(SARLINE,CLOSE)&&A>,SK;CROSS(CLOSE,SARLINE),BP;★以上模型源码内容仅供编写参考使用,如用于交易使用,风险自负⑶信号记录模型关键函数:BKPRICE ,SKPRICE使用周期:五分钟模型说明:突破4个周期最高/最低价开仓,获利15个点以上平仓。
CLOSE>=REF(HHV(HIGH,4),1),BK;CLOSE-BKPRICE>15,SP;CLOSE<=REF(LLV(LOW,4),1),SK;SKPRICE-CLOSE>15,BP;★以上模型源码内容仅供编写参考使用,如用于交易使用,风险自负6、LEVEL-2模型编写示范⑴LEVEL-2盘口模型关键函数:L2_BPTIMES,L2_BKTIMES,L2_SPTIMES,L2_SKTIMES使用周期:一分钟模型说明:创5个周期最高/最低价时统计周期内多/空开平仓次数确定是否开仓。
CS1:=L2_BPTIMES;CS2:=L2_BKTIMES;CS3:=L2_SKTIMES;CS4:=L2_SPTIMES;MA1:=MA(CLOSE,5);CS2+CS4>CS1+CS3&&HIGH>=HHV(HIGH,M),BK;CROSS(REF(MA1,1),LOW),SP;CS2+CS4<CS1+CS3&&LOW<=LLV(LOW,M),SK;CROSS(HIGH,REF(MA1,1)),BP;★以上模型源码内容仅供编写参考使用,如用于交易使用,风险自负⑵LEVEL-2量能模型关键函数:L2_ASKACCOUNT, L2_BIDACCOUNT使用周期:一分钟模型说明:周期内卖主动次数大于周期内买主动次数并且收阳,平空仓并反手开多;周期内买主动次数大于周期内卖主动次数并且收阴,平多仓并反手开空。
L2_ASKACCOUNT>L2_BIDACCOUNT&&CLOSE>OPEN,BPK;L2_BIDACCOUNT>L2_ASKACCOUNT&&CLOSE<OPEN,SPK;★以上模型源码内容仅供编写参考使用,如用于交易使用,风险自负⑶LEVEL-2秒周期时间模型关键函数:L2_BIDBIGTURNOVER,L2_ASKBIGTURNOVER,L2_ASKBIGCOUNT,L2_BIDBIGCOUNT,L2_ASKBIGENTR ASTCOUNT,L2_BIDBIGENTRASTCOUNT,TIME使用周期:十五秒模型说明:14点58分之前由周期内多/空头大单成交额及周期内多/空头平仓次数对比决定是否开仓;通过买1及卖1委托大量次数对比决定是否平仓,不留隔夜单。
L2_BIDBIGTURNOVER>L2_ASKBIGTURNOVER&&L2_ASKBIGCOUNT>L2_BIDBIGCOUNT&&I SUP&&TIME<145800,BK;L2_ASKBIGENTRASTCOUNT>L2_BIDBIGENTRASTCOUNT||TIME>145800,SP;L2_BIDBIGTURNOVER<L2_ASKBIGTURNOVER&&L2_ASKBIGCOUNT<L2_BIDBIGCOUNT&&I SUP&&TIME<145800,SK;L2_ASKBIGENTRASTCOUNT<L2_BIDBIGENTRASTCOUNT||TIME>145800,BP;★以上模型源码内容仅供编写参考使用,如用于交易使用,风险自负⑷LEVEL-2 TICK模型关键函数:SETDEALVOL,L2_TICK_DATA,BKPRICE,SKPRICE使用周期:TICK模型说明:模型每次下单手数为3手,当盘面总买量大于卖量且为主动买时,买开仓;当盘面总买量小于卖量且为主动卖是,卖开仓;盈利20点以上或亏损5点以上平仓出场。
SETDEALVOL(3);L2_TICK_DATA('tbidvol')>L2_TICK_DATA('taskvol')&&L2_TICK_DATA('activi ty')=0,BK;CLOSE-BKPRICE>20||CLOSE-BKPRICE<-5,SP;L2_TICK_DATA('tbidvol')<L2_TICK_DATA('taskvol')&&L2_TICK_DATA('activi ty')=1,SK;SKPRICE-CLOSE>20||SKPRICE-CLOSE<-5,BP;★以上模型源码内容仅供编写参考使用,如用于交易使用,风险自负7、套利交易模型编写示范⑴如何编制简单价差类型的套利模型?CROSS(300,CLOSE),BKSK; //CLOSE为两个品种的价差。
当价差小于300时,买入开仓前一品种,卖出开仓后一品种CROSS(CLOSE,500),SPBP;//当价差大于500时,卖出平仓前一品种,买入平仓后一品种CROSS(CLOSE,600),SKBK;//当价差大于600时,卖出开仓前一品种,买入开仓后一品种CROSS(400,CLOSE),BPSP;//当价差小于400时,买入平仓前一品种,卖出平仓后一品种////内为文字说明,编写模型时不用写出★以上模型源码内容仅供编写参考使用,如用于交易使用,风险自负⑵如何编制技术指标的套利模型?DIFF := EMA(CLOSE,12) - EMA(CLOSE,26);DEA := EMA(DIFF,9);MACD:=2*(DIFF-DEA);MACD>0,BKSK;MACD<0,SPBP;★以上模型源码内容仅供编写参考使用,如用于交易使用,风险自负⑶如何编制组合类型的套利模型?RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;D:=SMA(K,M2,1);J:=3*K-2*D;//以上为KDJ公式CLOSE<300&&CROSS(K,D),BKSK;//当价差小于300并且K上穿D时,买入开仓前一品种,卖出开仓后一品种CROSS(CLOSE,500)||CROSS(D,K),SPBP;//当价差上穿500或者D上穿K时,卖出平仓前一品种,买入平仓后一品种CLOSE>600&&CROSS(D,K),SKBK;//当价差大于600并且D上穿K时,卖出开仓前一品种,买入开仓后一品种CROSS(400,CLOSE)||CROSS(K,D),BPSP;//当价差下穿400或者K上穿D时,买入平仓前一品种,卖出平仓后一品种★以上模型源码内容仅供编写参考使用,如用于交易使用,风险自负8、常见编写错误★以下模型源码内容仅供编写参考使用,如用于交易使用,风险自负⑴不允许使用交易指令作为变量名称。