关键词不能为空

当前您在: 主页 > 英语 >

文华期货自动化交易模型编写教程

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-11 17:33
tags:

-

2021年2月11日发(作者:commissioning)



一、



程序化交易的编写



㈠、交易模型编写规范和一般原则



1


、编辑平台支持的操作符



操作符







*



/



AND



OR



>



<



>=



<=



<>



=




=



意义



加法



减法



乘法



除法




(< /p>


并且


)


,也可简写为

&&




(


或者


),


也可简写为


||



大于



小于



大于等于



小于等于





CLOSE



OPEN


表示求收盘价及开盘价的和。



CLOSE



OPEN


表示求收盘价及开盘价的差。



CLOSE*OPEN


表示求收盘价及开盘价的积。



CLOSE/OPEN


表示求收盘价及开盘价的商。




CLOSE>OPEN


表示判断当前周期是否收阳。



CLOSE=OPEN


表示判断当前周期是否平盘。




不等于



等于



只定义一个局部变量



(


这个变量在画图时是不画的


)





声明了一个变量,



TMP1:=(OPEN+CLOSE)/2;


:MA(TMP1,10);


上面的公式的第一个语句定义 了一个局部


在下面一行中引用了这个局部变


在画图时画出它并且 按这个名字显


变量


TMP1



示。



量,


但是要注意 的是这个公式在画图的时候


只画了第二条语句


MA10


所求出的结果。



相反下面这个公式则需要画出 两条线,


第一


条是自己定义的均价线,


同时显示了均价的


名称为


AVP,


第二 条线是均价的简单移动平


均线。



AVP:(OPEN+CLOSE)/2;



MA(AVP,10);



2


、编辑平台支持的函数



⑴引用数据



AVPRICE



引用均价

< p>
(


在盘后对于国内三个期货


交易所指结算价


)



SETTLE



引用结算价


(


只有在日线周期盘后才< /p>


能引用当日的结算价


)



CLOSE



引用收盘价


(


在盘中指最新价


)


,也可


简写为


C



HIGH



LOW



OPEN



OPI



REF(X,N)



引用最高价,也可简写为


H




引用最低价,也可简写为


L




引用开盘价,也可简写为


O




引用持仓量



引用

X



N


个周期前的值




:REF(CLOSE,5);


表示引用当前周期


前第


5


个周 期的收盘价



REFX(X,N)


< /p>


引用


N


个周期后的数据。



N


为大于等



1


的整数)


『未来函数』



例:


REFX(CLOSE,5);


表 示引用自当前


周期后第


5


个周期的收盘 价



VOL



GETPRICE(N)



引用成交量,也可简写为


V




根据文华码取出某一品种的最新价。



例:


GETPRICE(1209);


返回文华码为

< p>
1209


的合约品种的最新价。



PARAM


在源码中定义参数。


< /p>


[


参数名称,最小值,最


例:

< p>
PARAM[N,1,100,12]


大值,缺省值


]



MAN:MA(CLOSE,N);


表示参数为


N



最小值为


1

< p>


最大值为


100


,缺省 值为


12.



#IMPORT


#IMPORT[CODE,PERIOD,FORMULA]AS


[CODE,PERIOD,FORMULA]


VAR;


AS


VAR



Mytrader2009


CODE


文华码


PERIOD


周期


FORMULA



Myadvisor


(赢智)


引用模型名



持)



VAR



定义变量名



例子:



#IMPORT


[1205,MIN5,TEST]


AS


M1005


意思是引用


[

< p>
豆粕


1005]


五分钟图上


指标


[]


的数据



使用的方法:



如当前存在一个指标



能引用


.FML


文件



2.


只能引用如下周期


MIN1


MIN3


MIN5


MIN10


MIN15


MIN30


HOUR1


HOUR3


HOUR8 DAY WEEK MONTH < /p>


3.


只能短周期引用长周期比如不能日


线 周期上加载引用了分钟数据的指


标。



4.


被引用的指标中不能存在引用






⑵金融统计



BACKSET(X,N)




X


条件成立


,


则将当 前位置到


N


周期前的数值设为


1



『未来函数』



例 :


BACKSET(CLOSE>OPEN,3);


表示当


K


线收阳时,


自当前位置到


3


周期


前的数值设为


1



BARSLAST(X)



COUNT(X,N)



求上一次条件成立到当前的周期数。



表示统计在


N


周期内满足


X

< p>
条件的周期数。


如果


N



0


则表示从已申请


到的数据的第一天开 始算起。





WR:=-100*(HHV(HIGH,N)-CLOSE)/(HHV(HIGH,N)-LLV(LOW ,N));


COUNT(WR>80,5);


表示统计在


5


个周期内满足


WR>80


的次数




DMA(X,A)



返回


X


的动态移动平均,其中


A


为常数,并且必须介于


0



1


之间。



计算方法:


D MA(N)=DMA(N-1)*(1-A)+X(N)*A


其中

DMA(N-1)


为第


(N-1)


天的


DMA


值。



EMA(X,N)



表示求

< p>
X



N


周期内的平滑移动 平均。


(指数加权)







< br>EMA(X,N)=[2*X+(N-1)*EMA(X,(N-1))]/(N+1)




EMA(X,(N-1))


为第


(N-1)


天的


EMA




EMA2(X,N)



表示求


X



N


周期内的加权平 均。


(线性加权)







EMA2(X,N)=(N*X0+(N-1)*X1+(N-2)*X2+...+1*XN)/(N+( N-1)+(N-2)+..


.+1),X0


表示本周期值,< /p>


X1


表示上一周期值


...



HHV(X,N)



得到


X



N


周期内 的最高值,如果


N



0


,则从本地数据的第一个有效


周期开始算起。



例:


HHV(HIGH,13);



13


个周期内的最高价的最大值。




HHVBARS(X,N)



得到


X



N


周期内的最高值位置到当前的周期数。如果


N=0


,则从本地


数据的第一个有效周期开始算起。



例:


HHVBARS(VOL,0);


求历史成交量最大的周期到当前的周期数



LLV(X,N)



得到


X



N


周期内的最小值,如 果


N=0


,则从本地数据的第一个有效周


期开始算起。



例:


LLV(LOW ,25);


表示求


25


个周期内最低价 的最小值



LLVBARS(X,N)



得到


X



N< /p>


周期内的最小值的位置到当前的周期数。


如果

N=0


则从本地


数据的第一个有效周期开始算起。



例:


LLVBARS(VOL,0);


求历史成交量最小的周期到当前的周期数



MA(X,N)




X



N


周期内的简单移动平均 。



计算方法:


MA=(A1+A2+A3+A4+A5)/5 < /p>



A



5


个周期内的简单移动平均



ZIGZAG(X,P,N)



之字 转向


,



X


变 化量超过


P


时转向


,

< br>当


N



1,P

< br>为百分比数


;



N



0,P


为价位差值绝对值。


『未来函数』



例:


ZIGZAG( HIGH,10,1);


表示最高价的


10%

< br>的之字转向



ZIGZAG(MA(HIGH,34), 100,0);


表示


34


个周期内最高 价均线的


100


个价


位的之字转向




PEAK(X,P,M,N)



取得


ZIGZAG

< br>前


M


个波峰的值。


其中


X


为数据,


P


为转折值


(如果


N



1



这个值为百分比数,否则为价位差值绝对值)



M


为大于等于


1

< p>
的整数。


『未来函数』



例:


PEAK(HIGH,10,1,1);


表示最高价的


10%


的之字转向的上一个波峰的


数值


;



PEAK(MA(HIGH,34) ,100,1,0);


表示


34


个周期 内最高价均线的


100


个价


位的之字转 向的上一个波峰的数值




PEAKBARS(X,P,M,N)



取得


ZIGZAG



M


个波峰到当前周期的周期数。其中


X


为数据,


P


为转


折值(如果


N



1


,这个值为百分比数,否则为价位 差值绝对值)



M


为大于等于


1


的整数。


『未来函数』



例:


PEAKBARS(HIGH,10,1,1);


表示最高价的


10%


的之字转向的上一个波


峰到当前的周期数



PEAKBAR S(MA(HIGH,34),100,1,0);


表示


34< /p>


个周期内最高价均线的


100


个价位的之 字转向的上一个波峰到当前的周期数




TROUGH(X,P,M,N)



取 得


ZIGZAG



M

< br>个波谷的值。


其中


X


为数据,< /p>


P


为转折值


(如果


N



1



这 个值为百分比数,否则为价位差值绝对值)



M


为大于等于


1


的整数。


『未来 函数』



例:


TROUGH(LOW, 10,1,1);


表示最低价的


10%


的之字转向的上一个波谷


的数值



TROUGH (MA(LOW,34),100,1,0);


表示


34


个周期内最低价均线的


100



价位的之字转向的上一个波谷的数值




TROUGHBARS(X,P,M,


取得


ZIGZAG



M


个波谷到当前周期的周期数。其中


X


为数据,


P


为转


N)



折值(如果


N



1< /p>


,这个值为百分比数,否则为价位差值绝对值)



M


为大于等于


1


的整数。


『未来函数』



TROUGH(LOW,1 0,1,1);


表示最低价的


10%


的 之字转向的上一个波谷到当


前的周期数



TROUGH (MA(LOW,34),100,1,0);


表示


34


个周期内最低价均线的


100



价位的之字转向的上一个波谷到当前的周期数




SAR(N,Step,Max)



得 到抛物转向值。


N


为计算周期


,Ste p


为步长


,Max


为极值。

< p>
(系统函数,


计算步骤后台自动完成)



例:


SAR(17,,;


表示计算


17


个周期抛物转向,


步长为


3%



极限值为


30%



SMA(X,N,M)


< p>
得到


X



N


个周期内的移动平均,


M


为权重(

< br>M


为常数)




计算方法:


SMA(N)=SMA(N-1)*(N-M)/N+X(N)*M /N



SUM(X,N)



得到


X



N

< p>
周期内的总和,如果


N=0


,则从第一个有效周期 开始算起。




: SUM(VOL, 10);


表示统计


10


周期内的成交量 总和




SUMBARS(X,A)



TRMA(X,N)



TSMA(X,N)



得到

< p>
X


向前累加直到大于


A


时 的周期数。




X



N


周期内的三角移动平均。< /p>





X



N


周期内的时间序列移动平均。

< p>


计算方法:


TSMA(X,N)= FOCAST(X,N)+SLOPE(X,N)




⑶数理统计



AVEDEV(X,N)



DEVSQ(X,N)



FORCAST(X,N)




X



N


周期内的平均 绝对偏差。



数据偏差平方和。



得到


X



N


周期线性回归预测值。



< br>:FORCAST(CLOSE,5);


表示求


5


周期线性回归预测



SLOPE(X,N)



得到


X



N


周期内的线性回 归的斜率




:SLOPE(CLOS E,5);


表示求


5


周期线性回归线的 斜率



STD(X,N)



STDP(X,N)



VAR(X,N)



VARP(X,N)



得到

< p>
X



N


周期内的标准差< /p>



得到


X



N


周期内的总体标准差


< br>得到


X



N

周期内的样本方差



得到


X



N


周期内的总体样本方差

< br>


数理统计举例说明:



设一个 数列,数列中数据的总个数为


N


,以今天(

2005-10-14


)五天


内的


A0605


收盘价为例,


N


就为


5



数列的内容为:



2766



2805



2814



2886



2885





1








MA(CLOSE,5)












N



(2766+2805+2814+2886+2885)/5=




可以用公式


MA(CLOSE,5),


从今天


的值上看出。



2


、偏差:每个数据,减去算术平均值的结果。< /p>


=



=, =, =, =,



偏差相加,应该是等于


0


的。



3


< br>平均绝对偏差


AVEDEV(X,N)



将偏差的绝对值相加,


除以总个数


N

< br>。



++++/5=



< br>4



数据偏差平方和


DEVSQ (X,N)



将偏差的平方相加。



?+


?+


?+


?+


?=。



5



总体样本方差


VARP(X,N )



将偏差的平方相加,


总和除以总个 数


N



用公式可以这样算:

< p>


?+ ?+ ?+ ?+ ?/5=。



6


、样本方差


VAR(X,N)


:是总体方差的


N/(N-1)


倍。


*5/(5-1)=


估算


样本方差,总比总体样本 方差大一点,当


N


够大时,两者趋于相等。


7


、总体标准差


STDP(X, N)


:方差的开方。



[?+ ?+ ?+ ?+ ?/5]?=。



8


、标 准差


STD(X,N)


:估算样本方差的开方。


[*5/(5-


1)]?= 同样,


估算标准差也比 总体标准差大一点,当


N


够大时,两者趋于相等。



更多期货股票学习资料点击:




⑷逻辑判断



BETWEEN(A,B,C)



判断 条件“A


位于


B


C


之间”是否成立,如果条件成立则返


< br>1(yes),


否则返回


0(no)



例:


BETWEEN(CLO SE,MA5,MA40);



表示收盘价介于


5


日均线与


40


日均线之间。



CROSS(X,Y)


< p>
表示


X


上穿


Y

< p>



例:


CROSS(C LOSE,MA(CLOSE,5));



表示收盘线从下方向 上穿过


5


日均线



EXIST(COND,N)



判断< /p>


N


个周期内是否有满足条件


COND


的情况发生。



例:


EXIST(CLOSE>REF(HIGH,1),10);


表示


10


个周期中是否存在收盘价大于前一个周期的最高价



EVERY(COND,N)



判断过去


N


个周期内是否一直满足条件


COND




例:


EVERY(CLOSE>OPEN,5);


表示


5


个周期内一直是阳线



LAST(COND,N1,N2)



判断过去


N1



N2

< br>周期内是否一直满足条件


COND



例:


LAST(CLOSE>OPEN,10,5);< /p>



表示从过去第


10

个周期到第


5


个周期内一直是阳线



LONGCROSS(A,B,N)



如果


A


在前


N


个周期内都小于


B



本周期上穿


B



则返回


1




则返回


0


。例:


LONGCROSS(CLOSE,MA(CLOSE,10) ,20);



表示收盘线在


10


日均线之下持续


20


周期后从下向上穿过


10


日均线。



NOFILTER



交易模型买卖指令 信号过滤函数。


(仅适用于交易模型的过滤)



交易模型公式后加“NOFILTER;”是指不需要过滤,出现任何


交易指令 都会执行。公式后不加“NOFILTER;”是指当连续出


现同方向的交易指令时,系 统只显示出第一个交易指令,其他


交易指令自动被过滤。



ISDOWN



ISEQUAL



ISUP



ISLASTBAR



VALUEWHEN(COND,DATA)



判断该周期是否收阴。



判断该周期是否平盘。



判断该周期是否收阳。



判断当前周期 是否为最后一根


K


线。



当条件


COND


满足时,取当时的

< br>DATA


的值,否则取得前面一个


满足条件


COND


的值。



例:


VALUEWHEN(HIGH>REF(HIGH,5),HIGH);

< br>


表示当前最高价大于前五个周期最高价的最大值时返回当前

最高价。



⑸数学运算



ABS(X)




X


的绝对值



例:


ABS(SAR(17,,);


返 回抛物转向


SAR(17,,


的绝对值。



ACOS(X)



ASIN(X)



ATAN(X)



COS(X)



EXP(X)



CEILING(X)



FLOOR(X)



INTPART(X)



LN(X)




X


的反余弦值



< br>X


的反正弦值




X


的反正切值



返回


X


的余弦值



返回< /p>


e



X


次幂



向上舍入,返回沿


X

数值增大方向最接近的整数。



向下舍入,返回沿


X


数值减小方向最接近的整数。




X


的整数部分,返回沿


X


绝对值减小方向最接近的整数。



得到


X


的自然对数,以


e

< br>为底的对数。



例:


LN(OP EN);


求开盘价的自然对数。



LOG(X)



得到

< br>X


的常用对数,取得


X


的以


10


为底的对数。



例:


LOG(OPEN);


求开盘价的以

10


为底的对数。



MAX(A,B)




A,B


中的较大者。



例:


MAX(CLOSE- OPEN,0);



表示若收盘价大于开盘价返回它们的差值, 否则返回


0




MIN(A,B)




A,B


中的较小者。



例:< /p>


MIN(OPEN,CLOSE);


返回开盘价和收盘价中的较小 值。



MOD(A,B)


< p>
返回


A



B


得到模。



例:


MOD(C LOSE,OPEN);


收盘价除以开盘价所得余数



NOT(X)



X



0


时返回

1,


否则返回


0






NOT(TIME=0 90530);













9:05:30AM




POW(A,B)



得到

< p>
A



B


次幂。

< p>


例:


POW(CLOSE,2);


求得收盘价的


2


次方。



REVERSE(X)



取反,返回符号相反的数值。



例:< /p>


REVERSE(LOW);


返回


-LO W




SGN(X)



得到

< br>X


的符号,如果


X>0


则返回< /p>


1,


如果


X<0


则返回-


1


,否则


返回


0




SIN(X)



SQRT(X)



得到


X


的正弦值。



得到


X


的平方根。



例:< /p>


SQRT(CLOSE);


收盘价的平方根。


SQUARE(X)



得到


X


的平方。



例:


SQUARE(CLOSE);


收盘价的平方。



TAN(X)



得到


X


的正切值。



更多期货股票学习资料点击:





⑹时间函数



BARPOS



取得当前


K


线的位置。











< br>DATE




700101-3 41231





DAY



HOUR



MINUTE



取得当前周期的日数(


1-31





取得当前周期的小时数(


0-23


)< /p>




取得当前周期的分钟数(

< p>
0-59





MONTH



取得当前周期的月数(< /p>


1-12





取得当前周期的时间数(


0-2359





TIME



秒级周期返回值范围为:< /p>


0-235959




WEEKDAY



YEAR



取得当前周期的星期数(< /p>


0-6




< /p>


取得当前周期的年数(


1970-2034






⑺绘图



DRAWLINE(C1,P1,C2,P2,COLOR)



当条件


C1



C2


均满足时,从


P1


画直线到


P2



颜色为


COL OR






DRAWLINE(MA18<


CLOSE,OPEN,MA5 >CLOSE,CLOSE,COLORCYAN);



示当收盘价大于


18


日均线并且小于


5


日均线时,


从开盘价画青色直线到收盘价。




DRAWTEXT(C,P,TEXT)


< br>表示当条件


C


满足时在


P


上写


TEXT


文字。





DRAWTEXT(CLOSE<


OPEN&&REF(CLOSE,1)<


REF(OPEN,1)


&&REF(VOL,1)*<


VOL,LOW,'



');


表示连续两日收阴并且成交量比前一日至少多


10%

< br>时,在最低价上写“注”字。




DRAWSL(COND,DATA,SLOPE,LEN,EXPAND,


画斜线,当条件


COND


满足时,从

< p>
DATA


开始以每


COLOR)

< br>


个周期相差


SLOPE


个点的 斜率画斜线,划线长度



LEN


个周期 ,


EXPAND


为线段的延长方式(


0



不延伸;


1:


向左延伸;


2:


向右延伸;


3



双向延伸)



< /p>




DRAWSL(LOW=LLV(L OW,50),LOW,5,3,2,COLORRED)


;


表示当前最低价等于


50


周期内的最小值时,

< br>从


当前最小值开始以每隔


5


个点 的斜率画长度为


3


个周期向右延伸的斜线,颜色为红色




DRAWNUMBER

< br>(COND,DATA,NUMBER,PRECISION,COLOR)


< /p>


画数字。当条件


COND


满足时,在


DATA


位置写数



NUMBER


(为数组)


,精度为


P RECISION


(小数点


后有几位数字)





DRAWNUMBER(CLOSE/OPEN>,HIGH,(CLOSE- OPEN)/O


PEN*100,2,COLORRED);


表示当日涨幅大于


8%



在最高价位置 显示涨幅


(


相对开盘价的百分比


)





FILLRGN


(COND,DATA1,DATA2,COLOR)



填充区域,当条件


COND


满足时,填充


DATA1



DATA2

< br>包围的区域。



例:


FILLR GN(MA5>MA10,MA5,MA10,COLORRED);




MA5>MA10


时以红色填充

< br>MA5



MA10


之间的区


域。




POLYLINE


(COND,DATA,COLOR)



画折线,


当条件


COND


满足时,< /p>


连接各个


DATA


点。

< br>




POLYLINE(CL OSE>=HHV(CLOSE,100),CLOSE,COLOR


RED);


表示在收盘价创


100


天新高点之间画折< /p>


线。




PARTLINE


(COND,DATA,COLOR)




POLYLINE



< p>



PARTLINE(HIGH>REF(HI GH,1),HIGH,COLORRED);


表示当期最高价大于前期最高价用红色 绘制最高


价连线线段。




STICKLINE


如果条件


C


满足时,从


P1



P2


画柱线,颜色为


(C,P1,P2,Color,Empt y)



Color,


如果


Empty



1



则为空心柱;


如果


Empty

< br>取


0


,则为实心柱。





STICKLINE(OPEN- CLOSE>0,OPEN,CLOSE,COLORCYA


N,0);


表示当开盘价大于收盘价时,从开盘价到


收盘价画青色的实心柱,

< p>


K


线阴线的实体部分。




VERTLINE


(COND,COLOR)



画垂直线 ,当条件


COND


满足时,画垂直线。



例:


VERTLINE(HIGH>=HHV(HIGH,30 ),COLORRED);


表示在价格创


30


天新高时画垂直线。




RGB(R,G,B)



自定义颜色函数。



R,G,B





< p>




0~255





< p>


RGB(225,225,225)


表示白色< /p>



COLORSTICK



VOLUMESTICK



BAMBOOLINE



CIRCLEDOT



OPISTICK



画彩色柱线




画成交量线




画竹线




画圆




画持仓量柱线





8



lev el-2


函数(只有嬴智版本支持)




周期内多头平仓次数。



L2_BPTIMES



用法:


L2_BPTIMES


返回多头平仓次数。



周期内多头开仓次数。



L2_BKTIMES



用法:


L2_BKTIMES


返回多头开仓次数。



L2_SPTIMES



周期内空头平仓次数。



用法:


L2_BPTIMES


返回空头平仓次数。



周期内空头开仓次数。



L2_SKTIMES



用法:


L2_SKTIMES


返回空头开仓次数。



周期内卖主动次数。



L2_ASKACCOUNT



用法:


L2_ASKACCOUNT


返回卖主动次数。



周期内买主动次数。



L2_BIDACCOUNT



用法:


L2_BIDACCOUNT


返回买主动次数。



周期内平均总买量。



L2_BIDAVVOL



用法:


L2_BIDAVVOL


返回周期内平均总买量。

< br>


周期内平均总卖量。



L2_ASKAVVOL



用法:


L2_ASKAVVOL


返回周期内平均总卖量。

< br>


周期内卖盘加全平均价。



L2_ASKAVPRICE



用法:


L2_ASKAVPRICE


返回卖盘加全平均价。

< p>


周期内买盘加全平均价。



L2_BIDAVPRICE



用法:


L2_BIDAVPRICE


返回买盘加全平均价。

< p>


周期内空头大单成交额。



L2_ASKBIGTURNOVER



用法:


L2_ASKBIGTURNOVER


返回空头大单成 交额。



周期内多头大单成交额。



L2_BIDBIGTURNOVER



用法:


L2_BIDBIGTURNOVER


返回多头大单成 交额。



周期内空头大单成交次数。



L2_ASKBIGCOUNT



用法 :


L2_ASKBIGCOUNT


返回周期内空头大单成交次< /p>


数。



周期内多头大单成交次数。



L2_BIDBIGCOUNT



用法 :


L2_BIDBIGCOUNT


返回周期内多头大单成交次< /p>

-


-


-


-


-


-


-


-



本文更新与2021-02-11 17:33,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/637835.html

文华期货自动化交易模型编写教程的相关文章