期货交易模型编写经典教程.docx

上传人:b****8 文档编号:29270537 上传时间:2023-07-21 格式:DOCX 页数:32 大小:29.49KB
下载 相关 举报
期货交易模型编写经典教程.docx_第1页
第1页 / 共32页
期货交易模型编写经典教程.docx_第2页
第2页 / 共32页
期货交易模型编写经典教程.docx_第3页
第3页 / 共32页
期货交易模型编写经典教程.docx_第4页
第4页 / 共32页
期货交易模型编写经典教程.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

期货交易模型编写经典教程.docx

《期货交易模型编写经典教程.docx》由会员分享,可在线阅读,更多相关《期货交易模型编写经典教程.docx(32页珍藏版)》请在冰豆网上搜索。

期货交易模型编写经典教程.docx

期货交易模型编写经典教程

一、程序化交易的编写

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

1、编辑平台支持的操作符

操作符

意义

加法

CLOSE+OPEN表示求收盘价及开盘价的和。

减法

CLOSE-OPEN表示求收盘价及开盘价的差。

*

乘法

CLOSE*OPEN表示求收盘价及开盘价的积。

/

除法

CLOSE/OPEN表示求收盘价及开盘价的商。

AND

与<并且>,也可简写为&&

OR

或<或者>,也可简写为||

>

大于

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

<

小于

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

>=

大于等于

<=

小于等于

<>

不等于

=

等于

=

只定义一个局部变量

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

TMP1:

=/2;

:

MA;

上面的公式的第一个语句定义了一个局部变量TMP1,在下面一行中引用了这个局部变量,但是要注意的是这个公式在画图的时候只画了第二条语句MA10所求出的结果。

相反下面这个公式则需要画出两条线,第一条是自己定义的均价线,同时显示了均价的名称为AVP,第二条线是均价的简单移动平均线。

AVP:

/2;

MA;

声明了一个变量,

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

2、编辑平台支持的函数

⑴引用数据

AVPRICE

引用均价<在盘后对于国三个期货交易所指结算价>

SETTLE

引用结算价<只有在日线周期盘后才能引用当日的结算价>

CLOSE

引用收盘价<在盘中指最新价>,也可简写为C

HIGH

引用最高价,也可简写为H。

LOW

引用最低价,也可简写为L。

OPEN

引用开盘价,也可简写为O。

OPI

引用持仓量

REF

引用X在N个周期前的值

例:

REF;表示引用当前周期前第5个周期的收盘价

REFX

引用N个周期后的数据。

〔N为大于等于1的整数『未来函数』

例:

REFX;表示引用自当前周期后第5个周期的收盘价

VOL

引用成交量,也可简写为V。

GETPRICE

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

例:

GETPRICE<1209>;返回文华码为1209的合约品种的最新价。

PARAM

[参数名称,最小值,最大值,缺省值]

在源码中定义参数。

例:

PARAM[N,1,100,12]

MAN:

MA;

表示参数为N,最小值为1,最大值为100,缺省值为12.

#IMPORT[CODE,PERIOD,FORMULA]ASVAR〔Mytrader2009和Myadvisor〔赢智支持

#IMPORT[CODE,PERIOD,FORMULA]ASVAR;

CODE文华码PERIOD周期FORMULA引用模型名

VAR 定义变量名

例子:

#IMPORT[1205,MIN5,TEST]ASM1005

意思是引用[豆粕1005]五分钟图上指标[TEST.FML]的数据

使用的方法:

如当前存在一个指标TEST.FML

//TEST.FML

CL:

=CLOSE;

OP:

=OPEN;

我想在新建的指标TEST1中引用[豆粕1005]五分钟周期上指标[TEST.FML]的数据

可以如下编写TEST1指标

//TEST1.FML

#IMPORT[1205,MIN5,TEST]ASVARTEST

DD:

VARTEST.CL;

DF:

VARTEST.OP;

引用的约束

1.只能引用.FML文件

2.只能引用如下周期MIN1MIN3MIN5MIN10MIN15MIN30HOUR1HOUR3HOUR8DAYWEEKMONTH

3.只能短周期引用长周期比如不能日线周期上加载引用了分钟数据的指标。

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

⑵金融统计

BACKSET

若X条件成立,则将当前位置到N周期前的数值设为1。

『未来函数』

例:

BACKSETOPEN,3>;表示当K线收阳时,自当前位置到3周期前的数值设为1

BARSLAST

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

COUNT

表示统计在N周期满足X条件的周期数。

如果N为0则表示从已申请到的数据的第一天开始算起。

例:

WR:

=-100*-CLOSE>/-LLV>;COUNT80,5>;表示统计在5个周期满足WR>80的次数

DMA

返回X的动态移动平均,其中A为常数,并且必须介于0及1之间。

计算方法:

DMA=DMA*<1-A>+X*A其中DMA为第天的DMA值。

EMA

表示求X在N周期的平滑移动平均。

〔指数加权

计算方法:

EMA=[2*X+*EMA>]/其中EMA>为第天的EMA值

EMA2

表示求X在N周期的加权平均。

〔线性加权

计算方法:

EMA2=*X1+*X2+...+1*XN>/++...+1>,X0表示本周期值,X1表示上一周期值...

HHV

得到X在N周期的最高值,如果N=0,则从本地数据的第一个有效周期开始算起。

例:

HHV;求13个周期的最高价的最大值。

HHVBARS

得到X在N周期的最高值位置到当前的周期数。

如果N=0,则从本地数据的第一个有效周期开始算起。

例:

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

LLV

得到X在N周期的最小值,如果N=0,则从本地数据的第一个有效周期开始算起。

例:

LLV;表示求25个周期最低价的最小值

LLVBARS

得到X在N周期的最小值的位置到当前的周期数。

如果N=0则从本地数据的第一个有效周期开始算起。

例:

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

MA

求X在N周期的简单移动平均。

计算方法:

MA=/5求A在5个周期的简单移动平均

ZIGZAG

之字转向,当X变化量超过P时转向,当N取1,P为百分比数;当N取0,P为价位差值绝对值。

『未来函数』

例:

ZIGZAG;表示最高价的10%的之字转向

ZIGZAG,100,0>;表示34个周期最高价均线的100个价位的之字转向

PEAK

取得ZIGZAG前M个波峰的值。

其中X为数据,P为转折值〔如果N为1,这个值为百分比数,否则为价位差值绝对值,M为大于等于1的整数。

『未来函数』

例:

PEAK;表示最高价的10%的之字转向的上一个波峰的数值;

PEAK,100,1,0>;表示34个周期最高价均线的100个价位的之字转向的上一个波峰的数值

PEAKBARS

取得ZIGZAG前M个波峰到当前周期的周期数。

其中X为数据,P为转折值〔如果N为1,这个值为百分比数,否则为价位差值绝对值,M为大于等于1的整数。

『未来函数』

例:

PEAKBARS;表示最高价的10%的之字转向的上一个波峰到当前的周期数

PEAKBARS,100,1,0>;表示34个周期最高价均线的100个价位的之字转向的上一个波峰到当前的周期数

TROUGH

取得ZIGZAG前M个波谷的值。

其中X为数据,P为转折值〔如果N为1,这个值为百分比数,否则为价位差值绝对值,M为大于等于1的整数。

『未来函数』

例:

TROUGH;表示最低价的10%的之字转向的上一个波谷的数值

TROUGH,100,1,0>;表示34个周期最低价均线的100个价位的之字转向的上一个波谷的数值

TROUGHBARS

取得ZIGZAG前M个波谷到当前周期的周期数。

其中X为数据,P为转折值〔如果N为1,这个值为百分比数,否则为价位差值绝对值,M为大于等于1的整数。

『未来函数』

TROUGH;表示最低价的10%的之字转向的上一个波谷到当前的周期数

TROUGH,100,1,0>;表示34个周期最低价均线的100个价位的之字转向的上一个波谷到当前的周期数

SAR

得到抛物转向值。

N为计算周期,Step为步长,Max为极值。

〔系统函数,计算步骤后台自动完成

例:

SAR<17,0.03,0.3>;表示计算17个周期抛物转向,步长为3%,极限值为30%

SMA

得到X在N个周期的移动平均,M为权重〔M为常数。

计算方法:

SMA=SMA*/N+X*M/N

SUM

得到X在N周期的总和,如果N=0,则从第一个有效周期开始算起。

例:

SUM;表示统计10周期的成交量总和

SUMBARS

得到X向前累加直到大于A时的周期数。

TRMA

求X在N周期的三角移动平均。

TSMA

求X在N周期的时间序列移动平均。

计算方法:

TSMA=FOCAST+SLOPE

⑶数理统计

AVEDEV

求X在N周期的平均绝对偏差。

DEVSQ

数据偏差平方和。

FORCAST

得到X的N周期线性回归预测值。

例:

FORCAST;表示求5周期线性回归预测

SLOPE

得到X在N周期的线性回归的斜率

例:

SLOPE;表示求5周期线性回归线的斜率

STD

得到X在N周期的标准差

STDP

得到X在N周期的总体标准差

VAR

得到X在N周期的样本方差

VARP

得到X在N周期的总体样本方差

数理统计举例说明:

设一个数列,数列中数据的总个数为N,以今天〔2005-10-14五天的A0605收盘价为例,N就为5。

数列的容为:

{2766,2805,2814,2886,2885}。

1、算术平均值MA

数据总和除以总个数N。

<2766+2805+2814+2886+2885>/5=2831.20。

可以用公式MA,从今天的值上看出。

2、偏差:

每个数据,减去算术平均值的结果。

2766-2831.20=-65.2,2805-2831.20=-26.2,2814-2831.20=-17.2,2886-2831.20=54.8,2885-2831.20=53.8,各偏差相加,应该是等于0的。

3、平均绝对偏差AVEDEV

将偏差的绝对值相加,除以总个数N。

<65.2+26.2+17.2+54.8+53.8>/5=43.44。

4、数据偏差平方和DEVSQ

将偏差的平方相加。

<-65.2>²+<-26.2>²+<-17.2>²+<54.8>²+<53.8>²=11130.80。

5、总体样本方差VARP

将偏差的平方相加,总和除以总个数N。

用公式可以这样算:

<-65.2>²+<-26.2>²+<-17.2>²+<54.8>²+<53.8>²/5=2226.16。

6、样本方差VAR

是总体方差的N/倍。

2226.16*5/<5-1>=2782.70估算样本方差,总比总体样本方差大一点,当N够大时,两者趋于相等。

7、总体标准差STDP

方差的开方。

[<-65.2>²+<-26.2>²+<-17.2>²+<54.8>²+<53.8>²/5]½=47.18。

8、标准差STD

估算样本方差的开方。

[2226.16*5/<5-1>]½=52.75同样,估算标准差也比总体标准差大一点,当N够大时,两者趋于相等。

⑷逻辑判断

BETWEEN

判断条件"A位于B及C之间"是否成立,如果条件成立则返回1,否则返回0

例:

BETWEEN;

表示收盘价介于5日均线与40日均线之间。

CROSS

表示X上穿Y。

例:

CROSS>;

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

EXIST

判断N个周期是否有满足条件COND的情况发生。

例:

EXISTREF,10>;

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

EVERY

判断过去N个周期是否一直满足条件COND。

例:

EVERYOPEN,5>;表示5个周期一直是阳线

LAST

判断过去N1到N2周期是否一直满足条件COND。

例:

LASTOPEN,10,5>;

表示从过去第10个周期到第5个周期一直是阳线

LONGCROSS

如果A在前N个周期都小于B,本周期上穿B,则返回1。

否则返回0。

例:

LONGCROSS,20>;

表示收盘线在10日均线之下持续20周期后从下向上穿过10日均线。

NOFILTER

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

〔仅适用于交易模型的过滤

交易模型公式后加"NOFILTER;"是指不需要过滤,出现任何交易指令都会执行。

公式后不加"NOFILTER;"是指当连续出现同方向的交易指令时,系统只显示出第一个交易指令,其他交易指令自动被过滤。

ISDOWN

判断该周期是否收阴。

ISEQUAL

判断该周期是否平盘。

ISUP

判断该周期是否收阳。

ISLASTBAR

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

VALUEWHEN

当条件COND满足时,取当时的DATA的值,否则取得前面一个满足条件COND的值。

例:

VALUEWHENREF,HIGH>;

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

⑸数学运算

ABS

求X的绝对值

例:

ABS>;返回抛物转向SAR<17,0.03,0.3>的绝对值。

ACOS

求X的反余弦值

ASIN

求X的反正弦值

ATAN

求X的反正切值

COS

返回X的余弦值

EXP

返回e的X次幂

CEILING

向上舍入,返回沿X数值增大方向最接近的整数。

FLOOR

向下舍入,返回沿X数值减小方向最接近的整数。

INTPART

取X的整数部分,返回沿X绝对值减小方向最接近的整数。

LN

得到X的自然对数,以e为底的对数。

例:

LN;求开盘价的自然对数。

LOG

得到X的常用对数,取得X的以10为底的对数。

例:

LOG;求开盘价的以10为底的对数。

MAX

求A,B中的较大者。

例:

MAX;

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

MIN

求A,B中的较小者。

例:

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

MOD

返回A对B得到模。

例:

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

NOT

当X为0时返回1,否则返回0。

例:

NOT;表示该周期对应的时间不是9:

05:

30AM。

POW

得到A的B次幂。

例:

POW;求得收盘价的2次方。

REVERSE

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

例:

REVERSE;返回-LOW。

SGN

得到X的符号,如果X>0则返回1,如果X<0则返回-1,否则返回0。

SIN

得到X的正弦值。

SQRT

得到X的平方根。

例:

SQRT;收盘价的平方根。

SQUARE

得到X的平方。

例:

SQUARE;收盘价的平方。

TAN

得到X的正切值。

⑹时间函数

BARPOS

取得当前K线的位置。

DATE

取得当前周期的日数〔700101-341231。

DAY

取得当前周期的日数〔1-31。

HOUR

取得当前周期的小时数〔0-23。

MINUTE

取得当前周期的分钟数〔0-59。

MONTH

取得当前周期的月数〔1-12。

TIME

取得当前周期的时间数〔0-2359,

秒级周期返回值围为:

0-235959。

WEEKDAY

取得当前周期的星期数〔0-6。

YEAR

取得当前周期的年数〔1970-2034。

⑺绘图

DRAWLINE

当条件C1及C2均满足时,从P1画直线到P2,颜色为COLOR。

例:

DRAWLINECLOSE,CLOSE,COLORCYAN>;表示当收盘价大于18日均线并且小于5日均线时,从开盘价画青色直线到收盘价。

DRAWTEXT

表示当条件C满足时在P上写TEXT文字。

例:

DRAWTEXT&&REF*1.1;表示连续两日收阴并且成交量比前一日至少多10%时,在最低价上写"注"字。

DRAWSL

COLOR>

画斜线,当条件COND满足时,从DATA开始以每个周期相差SLOPE个点的斜率画斜线,划线长度为LEN个周期,EXPAND为线段的延长方式〔0:

不延伸;1:

向左延伸;2:

向右延伸;3:

双向延伸。

例:

DRAWSL,LOW,5,3,2,COLORRED>;表示当前最低价等于50周期的最小值时,从当前最小值开始以每隔5个点的斜率画长度为3个周期向右延伸的斜线,颜色为红色

DRAWNUMBER

画数字。

当条件COND满足时,在DATA位置写数字NUMBER〔为数组,精度为PRECISION〔小数点后有几位数字。

例:

DRAWNUMBER1.08,HIGH,/OPEN*100,2,COLORRED>;表示当日涨幅大于8%时在最高价位置显示涨幅<相对开盘价的百分比>。

FILLRGN

填充区域,当条件COND满足时,填充DATA1及DATA2包围的区域。

例:

FILLRGNMA10,MA5,MA10,COLORRED>;表示MA5>MA10时以红色填充MA5和MA10之间的区域。

POLYLINE

画折线,当条件COND满足时,连接各个DATA点。

例:

POLYLINE=HHV,CLOSE,COLORRED>;表示在收盘价创100天新高点之间画折线。

PARTLINE

同POLYLINE。

例:

PARTLINEREF,HIGH,COLORRED>;表示当期最高价大于前期最高价用红色绘制最高价连线线段。

STICKLINE

如果条件C满足时,从P1到P2画柱线,颜色为Color,如果Empty取1,则为空心柱;如果Empty取0,则为实心柱。

例:

STICKLINE0,OPEN,CLOSE,COLORCYAN,0>;表示当开盘价大于收盘价时,从开盘价到收盘价画青色的实心柱,即K线阴线的实体部分。

VERTLINE

画垂直线,当条件COND满足时,画垂直线。

例:

VERTLINE=HHV,COLORRED>;表示在价格创30天新高时画垂直线。

RGB

自定义颜色函数。

R,G,B的数值围都在0~255之间,例:

RGB<225,225,225>表示白色

COLORSTICK

画彩色柱线

VOLUMESTICK

画成交量线

BAMBOOLINE

画竹线

CIRCLEDOT

画圆

OPISTICK

画持仓量柱线

8、level-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返回周期平均总买量。

L2_ASKAVVOL

周期平均总卖量。

用法:

L2_ASKAVVOL返回周期平均总卖量。

L2_ASKAVPRICE

周期卖盘加全平均价。

用法:

L2_ASKAVPRICE返回卖盘加全平均价。

L2_BIDAVPRICE

周期买盘加全平均价。

用法:

L2_BIDAVPRICE返回买盘加全平均价。

L2_ASKBIGTURNOVER

周期空头大单成交额。

用法:

L2_ASKBIGTURNOVER返回空头大单成交额。

L2_BIDBIGTURNOVER

周期多头大单成交额。

用法:

L2_BIDBIGTURNOVER返回多头大单成交额。

L2_ASKBIGCOUNT

周期空头大单成交次数。

用法:

L2_ASKBIGCOUNT返回周期空头大单成交次数。

L2_BIDBIGCOUNT

周期多头大单成交次数。

用法:

L2_BIDBIGCOUNT返回周期多头大单成交次数。

L2_TOTALTURNOVER

周期总成交额。

用法:

L2_TOTALTURNOVER返回总成交额。

L2_ASKBIGENTRASTCOUNT

周期卖1委托明细大量次数。

用法:

L2_ASKBIGENTRASTCOUN

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1