程序化交易指标编写完美教程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
指标 编写结构
定义需要的 变量
变量名称 :=或者: 解释 分号结尾
标注文字 画图形
DRAWTEXT 其他绘图函数
交易模型 编写结构
定义需要的 变量
变量名称 :=或者: 解释 分号结尾
形成交易条 件和指令
交易条件 逗号 BK SP SK BP
分号结尾
+ 注意事项: + 1.模型中必须使用‘:=’定义变量名称。不允许只使用‘:’。 + 2.容易引起歧义的条件,最好用括号把完整条件括起来在和其他条件进行对比。 + 3.函数不允许作为变量名称 + 4.结尾一定要用分号 + 5.不要忘记写函数,例如(CLOSE,5)是错误的 + 6.涉及到引用系统指标的时候,一定要记得加等号去除画线;如果有参数一定要补
能力扩展
摆脱繁重的盯盘 摆脱大量计算 可以交易更多的品种
在Mytrader一键通2009中可以使用“全自动交易信号消失以后,自动恢 复持仓”解决指令忽闪的问题
在全自动状态下,如果指令消失,系统会自动恢复到最近的一次交易指令的状态和手数 例:使用模型自动交易沪铜0811在2008年8月22日发出卖出开仓信号,之后在2008年9月4号 发出买开并平空指令, 系统会自动将8月22日的持仓平掉并开多仓,此时如果买平开指令消失, 系统会按照8月22日的开仓方向及手数重新开空仓,并平掉多单,这样既保住了8月22日到9 月4日之间的盈利又保持了原来的趋势继续盈利.
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; MA5:=MA(CLOSE,N1); MA10:=MA(CLOSE,N2); CROSS(MA5,MA10)||(CROSS(K,D)&&J<30),BK; CROSS(D,K)&&REF(J,1)>70,SP; CROSS(MA10,MA5)||(CROSS(D,K)&&J>70),SK; CROSS(K,D)&&REF(J,1)<30,BP;
+ 正强化 — 奖励
+ 负强化 — 惩罚
+ 消退
— 无效
+ 随机强化 — 挑战
策略的 完善
策略的 量化
策略的 图形化
策略的 Baidu Nhomakorabea证
策略的 程序化
策略的 图形化
收盘价在年线上,K线显示红色。 收盘价在年线下,K线显示兰色。 MA200:MA(CLOSE,200); STICKLINE(CLOSE>MA200,OPEN,CLOSE,COLORRED,0); STICKLINE(CLOSE<=MA200,OPEN,CLOSE,COLORCYAN,0); DRAWLINE(CLOSE>MA200,HIGH,CLOSE>MA200,LOW,COLORRED); DRAWLINE(CLOSE<=MA200,HIGH,CLOSE<=MA200,LOW,COLORCYAN);
2.归纳条件 将交易条件归类编写。相同指令的交易条件需要归纳书写。
交易模型基本格式:
1.定义需要的每个变量 2.组合交易条件+交易指令
交易条件 , 交易指令 ;
1.交叉类模型 例如:均线交叉类,MACD交叉类,KDJ指标交叉。 2.多条件模型 例如:均线组合结合KDJ指标等 3.日内模型 例如:尾盘平仓类
策略的 程序化
趋势模型示范: K线变红,做多; K线变兰,做空。 MA200:=MA(CLOSE,200); CLOSE>MA200,BPK; CLOSE<=MA200,SPK;
交易指令示意图
策略的 验证
策略的 完善
持续N根K线变色,确定交易。 MA200:=MA(CLOSE,200); EVERY(CLOSE>MA200,N),BPK; EVERY(MA200>=CLOSE,N),SPK;
齐参数;去除BACKGROUNDSTYLE(1); + 7.多条件要用&& ||连接,不能用逗号分隔。 + 8.TIME>1455,BP||SP是错误的,要分别书写 + 正确格式: + TIME>1455,BP; + TIME>1455,SP;
MA5:=MA(CLOSE,5);
MA10:= MA(CLOSE,10);
MA20:= MA(CLOSE,20);
CROSS(MA10,MA20),B K;
CROSS(MA10,MA5),SP;
CROSS(MA20,MA10),S K;
CROSS(MA5,MA10),BP;
➢ 5周期均线上穿10周期均线时买开或者KD金叉时并且J值小于30时买 开;
文华财经交易技术研究部 阎璐
+ 程序化交易具有客观性。它是事先将投资 者的交易策略和经验以计算机语言的形式 输入电脑中,再以数据计算出来的买卖信 号为依据去进行交易。交易中不会受交易 者主观策略的影响而随时改变。杜绝投资 人可能因为盘势所产生的情绪进行追涨杀 跌的操作,从而避免人性化交易的缺点, 也进而消除了交易中的主观随意性,大大 减轻了交易者下单前的恐惧、持仓中的焦 虑和平仓后的后悔
例 CLOSE+OPEN 表示求收盘价及开盘价的和。 CLOSE-OPEN 表示求收盘价及开盘价的差。 CLOSE*OPEN 表示求收盘价及开盘价的积。 CLOSE/OPEN 表示求收盘价及开盘价的商。
CLOSE>OPEN 表示判断当前周期是否收阳。 CLOSE=OPEN 表示判断当前周期是否平盘。
MA5:MA(CLOSE,5); MA10:MA(CLOSE,10),COLORYELLOW; MA30:MA(CLOSE,30),COLORGREEN; MA60:MA(CLOSE,60),COLORMAGENTA;
当需要书写的源代码比较长时,如果系统中已经 有完整的指标,我们可以直接拿来引用,而不需 要重复录入。
HIGH
引用最高价,也可简写为 H。
LOW
引用最低价,也可简写为 L。
OPEN
引用开盘价,也可简写为 O。
OPI
引用持仓量
VOL
引用成交量,也可简写为 V。
A:=CLOSE; MA5:MA(A,5);
MA(X, N)
求X在N周期内的简单移动平均。 计算方法:MA=(A1+A2+A3+A4+A5)/5 求A在5个 周期内的简单移动平均
SMA(X,N, M)
HHV(X,N)
得到X在N个周期内的移动平均,M为权重(M 为常数)。 计算方法:SMA(N)=SMA(N-1)*(NM)/N+X(N)*M/N。
得到X在N周期内的最高值,如果N=0,则从 本地数据的第一个有效周期开始算起。 例:HHV(HIGH,13);求13个周期内的最高价 的最大值。
➢ KD出现死叉并前个周期J值大于70时卖平 ➢ 5周期均线下叉10周期均线时卖开或者KD死叉时并且J值大于70时卖
开; ➢ KD出现金叉并前个周期J值小于30时买平
➢ 关键操作符:&&(并且) ||(或者)
REF(X,N)
引用X在N个周期前的值 例:REF(CLOSE,5);表示引用当前周期前第5个周期的收盘价
正确认识程序化交易
+ 交易中最大的敌人不是市场而是交易者自己。 + 我们每一次失败的经历都说明:不是市场太聪明 而是我们太自作聪明。 + 为了避免我们被主观情绪所困扰,我们可以使用 机械式的交易系统来规范我们的交易活动,但即使 有了交易系统,交易是否成功还是决定于人本身, 在于交易者能否始终坚持自己的交易体系。
TMP1:=(OPEN+CLOSE)/2; MA1:MA(TMP1,10); 上面的公式的第一个语句定义了一个局部变量TMP1, 在下面一行中引用了这个局部变量,但是要注意的 是这个公式在画图的时候只画了第二条语句所求出 的结果。
1、如何查阅函数列表 2、如何新建一个指标 3、常用函数示范编写
CLOSE 引用收盘价(在盘中指最新价),也可简写为 C。
➢ 开盘后15分钟的最高价可以表示为: HH:=VALUEWHEN(TIME=0915,HHV(HIGH,6));
➢ 2、使用时间函数在尾盘时将所有仓单了结: TIME>=1454,BP; TIME>=1454,SP;
因此可编写交易模型如下:
例10
HH:=VALUEWHEN(TIME=0915,HHV(HIGH,6)); LL:=VALUEWHEN(TIME=0915,LLV(LOW,6)); HIGH>HH&&TIME>0915&&TIME<1454,BK; HIGH>HH||TIME>=1454,BP; LOW<LL&&TIME>0915&&TIME<1454,SK; LOW<LL||TIME>=1454,SP;
交易策略: ➢ 10周期的均线上穿20周期的均线时买开; ➢ 5周期的均线下叉10周期的均线时卖平; ➢ 10周期的均线下叉20周期的均线时卖开; ➢ 5周期的均线上穿10周期的均线时买平; 关键函数:CROSS(X,Y)
CROSS(X,Y)
如果X上穿Y则返回1(yes),否则返回0(no)。 例:CROSS(CLOSE,MA(CLOSE,5));表示收盘 线从下方向上穿过5日均线
本节重点掌握:(一)操作符 (二)基本函数和语法
了解学习公式编写时常用的运算符号(加、减、乘、除法)、条件关系(大于、 等于、小于等)以及定义变量操作符。
重点内容: “:=”和“:”在定义变量上的区别。
操作符 + - * / && || > < >= <= <> = :=
:
意义 加法 减法 乘法 除法 与(并且) 或(或者) 大于 小于 大于等于 小于等于 不等于 等于 只定义一个局部变量 (这个变量在画图时是不 画的) 声明了一个变量,在画 图时画出它并且按这个 名字显示。
在3分钟周期,根据价格与当日开盘后15分钟内最 高\低价的大小关系作为买卖条件编写交易模型;
问题: 1、如何取开盘后15分钟的最高\低价数据? 2、如何使交易模型不留隔夜单?
➢ 1、使用逻辑判断函数:
VALUEWHEN(COND, DATA)
当条件COND满足时,取当时的DATA的值,否则 取得前面一个满足条件COND的值。 例:VALUEWHEN(HIGH>REF(HIGH,5),HIGH); 表示当前最高价大于前五个周期最高价的最大值时 返回当前最高价。
LLV(X,N)
得到X在N周期内的最小值,如果N=0,则从本 地数据的第一个有效周期开始算起。 例:LLV(LOW,25);表示求25个周期内最低价 的最小值。
(一)、熟悉交易指令 (二)、如何建立一个新的交易模型 (三)、交易模型的几种基本形式
编写步骤:
1.定义要素 先把模型编写需要的变量进行定义。
本节掌握重点:如何通过【引用其他公式】功能, 利用现有指标。
RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)LLV(LOW,9))*100;
K:SMA(RSV,3,1),COLORWHITE; D:SMA(K,3,1),COLORYELLOW; J:3*K-2*D,COLORMAGENTA;