60文华程序化交易使用指南.docx
- 文档编号:5781676
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:46
- 大小:294.45KB
60文华程序化交易使用指南.docx
《60文华程序化交易使用指南.docx》由会员分享,可在线阅读,更多相关《60文华程序化交易使用指南.docx(46页珍藏版)》请在冰豆网上搜索。
60文华程序化交易使用指南
文华程序化交易使用指南
目录
一、程序化交易的原理2
二、程序化交易的启用4
㈠、一键通版本程序化交易的启用:
4
1、启动交易软件4
2、启用交易模型(打开程序化交易窗口)5
3、设置相关参数7
㈡、Webstock版本程序化交易的启用8
1、启动交易软件8
2、启用交易模型(打开程序化交易窗口)9
3、设置相关参数12
三、程序化交易的编写14
㈠、交易模型编写规范和一般原则14
1、编辑平台支持的操作符14
2、编辑平台支持的函数15
⑴引用数据15
⑵金融统计16
⑶数理统计19
⑷逻辑判断20
⑸数学运算22
⑹时间函数23
⑺绘图24
3、编辑平台可以使用的常数26
4、编辑平台的语法27
5、编辑平台使用的交易指令27
6、快速入门28
(二)、交易模型编写示范和注意事项33
1、趋势类交易模型编写示范33
⑴均线类33
⑵通道类35
⑶其他类36
2、振荡类交易模型编写示范38
⑴主动买与主动卖模型38
⑵ROC(变动速率)与价格趋势变动背离:
39
⑶三减六日乖离模型:
40
3、日内交易模型编写示范40
⑴开盘价突破模型40
⑵开盘后前三十分钟最高最低价突破模型41
⑶单均线模型。
42
4、套利交易模型编写示范42
5、常见编写错误43
一、程序化交易的原理
“程序化交易”为文华财经和金仕达/恒生联合开发。
原理图如下:
图1
从以上原理图可以看出,程序化交易是文华财经软件和金仕达/恒生自助委托软件协同工作来实现的。
客户通过程序化交易系统发出的委托指令仍然是通过金仕达/恒生远程交易系统进入期货公司和交易所的撮合中心的。
通过程序化交易来进行下单和客户通过金仕达/恒生自助委托软件下单具有同等的安全性和可靠性。
二、程序化交易的启用
㈠、一键通版本程序化交易的启用:
1、启用交易模型(打开程序化交易窗口)
图4
在弹出的模型备选框中选择要使用的交易模型,点击“加载”:
图5
弹出程序化交易窗口:
图6
以上内容设置完毕后,重新点击“加载”,提示“确认要修改改交易模型吗?
”,如果确认各个选项设置无误,点击“确定”之后将程序化交易窗口最小化即可。
注:
交易模型每次下单的手数在程序化交易窗口右侧的“下单手数”中设置;使用的周期在程序化交易窗口的K线空白处单击右键—>分析周期,进行切换;如需更换合约,同样在程序化交易窗口的K线空白处单击右键—>品种选择。
3、设置相关参数
程序化交易系统初装状态均为半自动交易模式,即出现交易提示框,并不直接下委托单的模式。
如需修改为全自动交易模式,需点击软件右下角的“trader”,在出现的下单界面的右上角选择“设置”:
图7
将“交易模型自动下单前,需要我确认”的选项取消,点击“关闭”即可完成全自动交易模式的设置:
图8
注:
以上介绍的是全自动交易模型的设置,如需其他方面内容的设置,请在“设置”选项中自行选择使用。
以上三个步骤操作完毕后,程序化交易启用完毕,等待行情触发交易模型即可。
㈡、Webstock版本程序化交易的启用
1、启动交易软件
自菜单栏中的“交易”选择“文华财经自动委托”登录金仕达/恒生交易系统:
图9
注:
如使用恒生交易系统,在“交易”菜单栏中会出现“交易密码”,需要在登录恒生交易系统后,在“交易密码”中再次输入一遍交易密码以确认,否则程序化交易无法自动执行,此密码在同一个交易日内关闭交易软件前只需输入一次即可。
2、启用交易模型(打开程序化交易窗口)
图10
在弹出的模型备选框中选择要使用的交易模型,点击“加载”:
图11
弹出程序化交易窗口:
图12
“按市价下单,下单手数”:
模型每次下单的数量
“只进行多头交易”:
选择此项设置后,模型自动过滤掉卖开和买平的交易指令,只进行多头交易。
“只进行空头交易”:
选择此项设置后,模型自动过滤掉买开和卖平的交易指令,只进行空头交易。
“双向交易”:
选择此项设置后,模型可以发出买开、卖平、卖开和买平指令,进行双向交易。
“上交所平仓指令以平今仓下单”:
只针对上海交易所的合约。
(说明:
上海交易所规定日内平仓须以“平今仓”下单)
“平仓时每笔只下一手”:
发出平仓指令时,模型平仓每笔只下一手。
举例:
如果模型下单手数是5手,选择此设置后,那么满足平仓条件时这5手平仓自动分5笔下单,每笔只下1手。
“下开仓单同时埋止损单-亏 个最小变动价位自动止损”:
根据触发价格,按照“亏[]个最小变动价位”自动计算止损的价格,达到止损价时提示平仓。
“下开仓单同时埋止赢单-赢 个最小变动价位自动止赢”:
根据触发价格,按照“赢[]个最小变动价位”自动计算止赢的价格,达到止赢价时提示平仓。
更多说明:
A、如果希望实现自动止盈止损,需要将交易参数设置(见‘3、设置相关参数’)中“‘价格触发自动下单’中系统自动发出每笔委托时,需要我确认”的选项打上勾,然后再重新加载交易模型。
B、如果下单时已经进行过“市价下单时在市价基础上调整几个最小变动价位”的设置,那么止损/赢价是在经过几个最小变动价位调整后的价格基础上计算所得的。
举例:
交易模型在橡胶品种上达到开多单条件的价格为25420,止损价位设置为亏3个最小变动价位,并且设置了“市价下单时,系统在市价基础上调整2个最小变动价位”,那么当市价变为25415(25420+2*5-3*5)时,止损单就会被触发。
以上内容设置完毕后,重新点击“重新加载”,提示“确认要修改改交易模型吗?
”,如果确认各个选项设置无误,点击“确定”之后将程序化交易窗口最小化即可。
3、设置相关参数
菜单栏交易—>交易参数设置:
图13
图14
“交易参数设置”:
“默认手数”:
针对“价格触发自动下单”、“画线触发自动下单”有效。
“市价下单时,系统在市价基础上自动调整 个最小变动价位”:
针对所有委托类型是“市价下单”的设置都有效。
举例说明:
设置自动调整2个最小变动价位,以橡胶合约为例,买入时若卖盘报价18225,市价下单以18225+2*5=18235发出买入委托。
卖出时若买盘报价18225,市价下单以18225-2*5=18215发出卖出委托。
“反手下单时,平仓和开仓下单间的时间间隔为[]毫秒”:
针对交易模型中的反手交易指令、“快捷反手”功能有效。
举例说明:
设置下单间的时间间隔为500毫秒,出现做多的反手交易指令时,系统会发出一笔买入平仓指令,经过500毫秒再发出一笔买入开仓指令。
“启用交易直通车价格联动”:
选择此项设置后,交易直通车屏幕抓价,交易直通车中的价格随实时行情一起变动。
“‘交易模型自动下单’中系统自动发出每笔委托时,需要我确认”:
选择此项设置后,交易模型满足下单条件时软件弹出下单提示窗口,如果客户点“下单”按钮确认,才给交易软件发出委托。
选择此项时,买入对应卖盘挂单价格,卖出对应买盘挂单价格。
以上三个步骤操作完毕后,程序化交易启用完毕,等待行情触发交易模型即可。
三、程序化交易的编写
㈠、交易模型编写规范和一般原则
1、编辑平台支持的操作符
操作符
意义
例
+
加法
CLOSE+OPEN表示求收盘价及开盘价的和。
-
减法
CLOSE-OPEN表示求收盘价及开盘价的差。
*
乘法
CLOSE*OPEN表示求收盘价及开盘价的积。
/
除法
CLOSE/OPEN表示求收盘价及开盘价的商。
AND
与(并且),也可简写为&&
OR
或(或者),也可简写为||
>
大于
CLOSE>OPEN表示判断当前周期是否收阳。
<
小于
CLOSE=OPEN表示判断当前周期是否平盘。
>=
大于等于
<=
小于等于
<>
不等于
=
等于
:
=
只定义一个局部变量
(这个变量在画图时是不画的)
TMP1:
=(OPEN+CLOSE)/2;
MA(TMP1,10);
上面的公式的第一个语句定义了一个局部变量TMP1,在下面一行中引用了这个局部变量,但是要注意的是这个公式在画图的时候只画了第二条语句所求出的结果。
相反下面这个公式则需要画出两条线,第一条是自己定义的均价线,同时显示了均价的名称为AVP,第二条线是均价的简单移动平均线。
AVP:
(OPEN+CLOSE)/2;
MA(AVP,10);
:
声明了一个变量,
在画图时画出它并且按这个名字显示。
2、编辑平台支持的函数
⑴引用数据
AVPRICE
引用均价(在盘后对于国内三个期货交易所指结算价)
SETTLE
引用昨天的结算价(只显示当天时间的上日结算价。
)
CLOSE
引用收盘价(在盘中指最新价),也可简写为C。
HIGH
引用最高价,也可简写为H。
LOW
引用最低价,也可简写为L。
OPEN
引用开盘价,也可简写为O。
VOL
引用成交量,也可简写为V。
OPI
引用持仓量
REF(X,N)
引用X在N个周期前的值
例:
REF(CLOSE,5);
表示引用当前周期前第5个周期的收盘价
REFX(X,N)
引用N个周期后的数据。
(N为大于等于1的整数)
『未来函数』
例:
REFX(CLOSE,5);
表示引用自当前周期后第5个周期的收盘价
⑵金融统计
BACKSET(X,A)
若X条件成立,则将当前位置到A周期前的数值设为1。
其中A为常数,不支持变量。
『未来函数』
例:
BACKSET(CLOSE>OPEN,3);
表示当K线收阳时,自当前位置到3周期前的数值设为1。
BARSLAST(X)
求上一次条件成立到当前的周期数。
COUNT(X,N)
表示统计在N周期内满足X条件的周期数。
如果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之间。
计算方法:
DMA(N)=DMA(N-1)*(1-A)+X(N)*A
其中DMA(N-1)为第(N-1)天的DMA值。
EMA(X,N)
表示求X在N周期内的平滑移动平均。
(指数加权)
计算方法:
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表示本周期值,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周期内的最小值的位置到当前的周期数。
如果N=0则从本地数据的第一个有效周期开始算起。
例:
LLVBARS(VOL,0);求历史成交量最小的周期到当前的周期数。
MA(X,N)
求X在N周期内的简单移动平均。
计算方法:
MA=(A1+A2+A3+A4+A5)/5,求A在5个周期内的简单移动平均
ZIGZAG(X,P,N)
之字转向,当X变化量超过P时转向,当N取1,P为百分比数;当N取0,P为价位差值绝对值。
『未来函数』
例:
ZIGZAG(HIGH,10,1);表示最高价的10%的之字转向
ZIGZAG(MA(HIGH,34),100,0);
表示34个周期内最高价均线的100个价位的之字转向
PEAK(X,P,M,N)
取得ZIGZAG前M个波峰的值。
其中X为数据,P为转折值(如果N为1,这个值为百分比数,否则为价位差值绝对值),M为大于等于1的整数。
『未来函数』
例:
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%的之字转向的上一个波峰到当前的周期数。
PEAKBARS(MA(HIGH,34),100,1,0);表示34个周期内最高价均线的100个价位的之字转向的上一个波峰到当前的周期数。
TROUGH(X,P,M,N)
取得ZIGZAG前M个波谷的值。
其中X为数据,P为转折值(如果N为1,这个值为百分比数,否则为价位差值绝对值),M为大于等于1的整数。
『未来函数』
例:
TROUGH(LOW,10,1,1);
表示最低价的10%的之字转向的上一个波谷的数值。
TROUGH(MA(LOW,34),100,1,0);
表示34个周期内最低价均线的100个价位的之字转向的上一个波谷的数值。
TROUGHBARS(X,P,M,N)
取得ZIGZAG前M个波谷到当前周期的周期数。
其中X为数据,P为转折值(如果N为1,这个值为百分比数,否则为价位差值绝对值),M为大于等于1的整数。
『未来函数』
TROUGH(LOW,10,1,1);
表示最低价的10%的之字转向的上一个波谷到当前的周期数。
TROUGH(MA(LOW,34),100,1,0);
表示34个周期内最低价均线的100个价位的之字转向的上一个波谷到当前的周期数。
SAR(N,Step,Max)
得到抛物转向值。
N为计算周期,Step为步长,Max为极值。
(系统函数,计算步骤后台自动完成)
例:
SAR(17,0.03,0.3);表示计算17个周期抛物转向,步长为3%,极限值为30%。
SMA(X,N,M)
得到X在N个周期内的移动平均,M为权重(M为常数)。
计算方法:
SMA(N)=SMA(N-1)*(N-M)/N+X(N)*M/N。
SUM(X,N)
得到X在N周期内的总和,如果N=0,则从第一个有效周期开始算起。
例:
SUM(VOL,10);表示统计10周期内的成交量总和。
SUMBARS(X,A)
得到X向前累加直到大于A时的周期数。
TRMA(X,N)
求X在N周期内的三角移动平均。
TSMA(X,N)
求X在N周期内的时间序列移动平均。
计算方法:
TSMA(X,N)=FOCAST(X,N)+SLOPE(X,N)。
⑶数理统计
AVEDEV(X,N)
求X在N周期内的平均绝对偏差。
DEVSQ(X,N)
数据偏差平方和。
FORCAST(X,N)
得到X的N周期线性回归预测值。
例:
FORCAST(CLOSE,5);表示求5周期线性回归预测
SLOPE(X,N)
得到X在N周期内的线性回归的斜率
例:
SLOPE(CLOSE,5);表示求5周期线性回归线的斜率
STD(X,N)
得到X在N周期内的标准差
STDP(X,N)
得到X在N周期内的总体标准差
VAR(X,N)
得到X在N周期内的样本方差
VARP(X,N)
得到X在N周期内的总体样本方差
数理统计举例说明:
设一个数列,数列中数据的总个数为N,以今天(2005-10-14)五天内的A0605收盘价为例,N就为5。
数列的内容为:
{2766,2805,2814,2886,2885}。
1、算术平均值MA(CLOSE,5):
数据总和除以总个数N。
(2766+2805+2814+2886+2885)/5=2831.20。
可以用公式MA(CLOSE,5),从今天的值上看出。
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(X,N):
将偏差的绝对值相加,除以总个数N。
(65.2+26.2+17.2+54.8+53.8)/5=43.44。
4、数据偏差平方和DEVSQ(X,N):
将偏差的平方相加。
(-65.2)²+(-26.2)²+(-17.2)²+(54.8)²+(53.8)²=11130.80。
5、总体样本方差VARP(X,N):
将偏差的平方相加,总和除以总个数N。
用公式可以这样算:
(-65.2)²+(-26.2)²+(-17.2)²+(54.8)²+(53.8)²/5=2226.16。
6、样本方差VAR(X,N):
是总体方差的N/(N-1)倍。
2226.16*5/(5-1)=2782.70估算样本方差,总比总体样本方差大一点,当N够大时,两者趋于相等。
7、总体标准差STDP(X,N):
方差的开方。
[(-65.2)²+(-26.2)²+(-17.2)²+(54.8)²+(53.8)²/5]½=47.18。
8、标准差STD(X,N):
估算样本方差的开方。
[2226.16*5/(5-1)]½=52.75同样,估算标准差也比总体标准差大一点,当N够大时,两者趋于相等。
⑷逻辑判断
BETWEEN(A,B,C)
判断条件“A位于B及C之间”是否成立,如果条件成立则返回1(yes),否则返回0(no)。
例:
BETWEEN(CLOSE,MA5,MA40);
表示收盘价介于5日均线与40日均线之间。
CROSS(X,Y)
表示X上穿Y。
例:
CROSS(CLOSE,MA(CLOSE,5));
表示收盘线从下方向上穿过5日均线
EXIST(COND,N)
判断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周期内是否一直满足条件COND。
例:
LAST(CLOSE>OPEN,10,5);
表示从过去第10个周期到第5个周期内一直是阳线
LONGCROSS(A,B,N)
如果A在前N个周期内都小于B,本周期上穿B,则返回1。
否则返回0。
例:
LONGCROSS(CLOSE,MA(CLOSE,10),20);
表示收盘线在10日均线之下持续20周期后从下向上穿过10日均线。
NOFILTER
交易模型买卖指令信号过滤函数。
(仅适用于交易模型的过滤)
交易模型公式后加“NOFILTER;”是指不需要过滤,出现任何交易指令都会执行。
公式后不加“NOFILTER;”是指当连续出现同方向的交易指令时,系统只显示出第一个交易指令,其他交易指令自动被过滤。
IF(C,A,B)
如果条件C成立则返回A值,否则返回B值
例:
IF(CLOSE>REF(CLOSE,1),1,0);
表示若今日收盘价高于前一日收盘价,则返回1,否则返回0
ISDOWN
判断该周期是否收阴。
ISEQUAL
判断该周期是否平盘。
ISUP
判断该周期是否收阳。
ISLASTBAR
判断当前周期是否为最后一根K线。
PARAM[N,A,B,C]
定义参数。
例:
PARAM[N,1,100,25]定义参数N的最小值为1,最大值为100,缺省值为25
自编公式中总共最多可定义32个参数
VALUEWHEN(COND,DATA)
当条件COND满足时,取当时的DATA的值,否则取得前面一个满足条件COND的值。
例:
VALUEWHEN(HIGH>REF(HIGH,5),HIGH);
表示当前最高价大于前五个周期最高价的最大值时返回当前最高价。
⑸数学运算
ABS(X)
求X的绝对值
例:
ABS(SAR(17,0.03,0.3));返回抛物转向SAR(17,0.03,0.3)的绝对值。
ACOS(X)
求X的反余弦值
ASIN(X)
求X的反正弦值
ATAN(X)
求X的反正切值
COS(X)
返回X的余弦值
EXP(X)
返回e的X次幂
CEILING(X)
向上舍入,返回沿X数值增大方向最接近的整数。
FLOOR(X)
向下舍入,返回沿X数值减小方向最接近的整数。
INTPART(X)
取X的整数部分,返回沿X绝对值减小方向最接近的整数。
LN(X)
得到X的自然对数,以e为底的对数。
例:
LN(OPEN);求开盘价的自然对数。
LOG(X)
得到X的常用对数,取得X的以10为底的对数。
例:
LOG(OPEN);求开盘价的以10为底的对数。
MAX(A,B)
求A,B中的较大者。
例:
MAX(CLOSE-OPEN,0);
表示若收盘价大于开盘价返回它们的差值,否则返回0。
MIN(A,B)
求A,B中的较小者。
例:
MIN(OPEN,CLOSE);返回开盘价和收盘价中的较小值。
MOD(A,B)
返回A对B得到模。
例:
MOD(CLOSE,OPEN);收盘价除以开盘价所得余数
NOT(X)
当X为0时返回1,否则返回0。
例:
NOT(TIME=090530);表示该周期对应的时间不是9:
05:
30AM。
POW(A,B)
得到A的B次幂。
例:
POW(CLOSE,2);求得收盘价的2次方。
REVERSE(X)
取反,返回符号相反的数值。
例:
REVERSE(LOW);返回-LOW。
SGN(X)
得到X的符号,如果X>0则返回1,如果X<0则返回-1,否则返回0。
SIN(X)
得到X的正弦值。
SQRT(X)
得到X的平方根。
例:
SQRT(CLOSE);收盘价的平方根。
SQUARE(X)
得到X的平方。
例:
SQUARE(CLOSE);收盘价的平方。
TAN(X)
得到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
取得当前周期的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 60 文华 程序化 交易 使用指南
![提示](https://static.bdocx.com/images/bang_tan.gif)