HOLDING 持仓量
得到当前帐户持仓量,多仓返回正数空仓返回负数
LIMIT 限价交易
交易方式控制符:加入限价单,次周期达到限价即操作,否则放弃。处于图表交易时按照指定限价报单交易
LIMITR 限价交易
交易方式控制符:加入限价单,本周期达到限价即操作,否则放弃。处于图表交易时按照指定限价报单交易
Market 市价交易,交易方式控制符:按照次周期开盘价操作。处于图表交易时按照实际交易市价操作 例如:buy(cond ,1000,market); 该控制符仅对交易评测时有效
MAXSEQLOSS 最大连续亏损次数 当前位置之前连续亏损交易的最大次数
MAXSEQWIN 最大连续盈利次数 当前位置之前连续盈利交易的最大次数
NUMLOSSTRADE 亏损次数
当前位置之前总共有多少次亏损的交易,注意每次卖出算一次交易,而买入不算
NUMSEQLOSS 连亏次数
当前位置之前连续有多少次亏损的交易,注意每次卖出算一次交易,而买入不算
NUMSEQWIN 连盈次数
当前位置之前连续有多少次盈利的交易,注意每次卖出算一次交易,而买入不算
NUMWINTRADE 盈利次数
当前位置之前总共有多少次盈利的交易,注意每次卖出算一次交易,而买入不算
OPENBAR 开仓历时
上一次仓位=0以来的周期数
OPENPROFIT 浮动盈亏
当前浮动盈亏(当前持仓市值与持仓成本之差)
PERCENTWIN 交易胜率
当前位置之前盈利交易占总交易次数的比例,其数值在0—1之间
SEQLOSS 连亏金额
当前位置之前连续亏损总额,注意每次卖出算一次交易,而买入不算
SEQWIN 连盈金额
21
当前位置之前连续盈利总额,注意每次卖出算一次交易,而买入不算
STATE 帐户状态
得到当前帐户状态,无仓输出0;有多头仓输出1;有空头仓输出-1
STOP 停损交易
交易方式控制符:加入停损单,或又称突破交易,次周期达到设定价格即操作买入,否则放弃。 所谓停损就是交易价比设定的价格要差,具体说来对于买入或卖空就是高于设定价格, 对于卖出或买空就是低于设定价格
例如:BUY(COND ,1000,STOP,CLOSE-0.01); 该控制符仅对交易评测时有效
STOPR 停损交易 为本周期的,其它同上
THISCLOSE 收盘价交易
交易方式控制符,按照本周期收盘价操作 例如:BUY(COND ,1000,THISCLOSE); 该控制符仅对交易评测时有效
TOTALTRADE 交易次数
当前位置之前总共有多少次交易,注意每次卖出算一次交易,而买入不算
TYPE(N) 上N次信号类型 得到当前位置之前上N次信号类型
输出:0、无信号1、开多2、平多3、开空;4、平空
TYPEBAR 表示上次信号,
得到当前位置之前上N次信号指定类型距当前周期 TYPEBAR(N,TYPE)N表示上次信号,
TYPE表示信号类型 0、无信号1、开多2、平多3、开空;4、平空 例如:TYPEBAR(2,1)表示:倒数第2个开多信号历时
WORSTPERCENT 最大亏损率
当前位置之前所有交易中亏损率最大一次的利润率,其数值在0—1之间
WORSTTRADE 最大亏损额
当前位置之前所有交易中亏损最大一次的亏损额 5.1快速入门
1)如何把熟悉的技术指标转换成交易模型?
第一步:把 KDJ 指标公式 COPY 过来,或按“引入公式”按钮,引入
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;//算出(收盘价-N周期内的最低价)/(N周期的最高价N周期内的最低价)*100 的值,用RSV 来表示。
22
K:SMA(RSV,M1,1),COLORWHITE;//RSV 的移动加权平均的值用K表示,并且画白色的线。 D:SMA(K,M2,1),COLORYELLOW;//K 的移动加权平均的值用D表示,并且画黄色的线。 J:3*K-2*D,COLORMAGENTA;//3倍的K减去2倍的D的值用J表示,并且画紫色的线。
第二步:原有公式主要是画线,所以稍作修改。如下:
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;//同上
第三步:把自己总结的交易条件写上,就可完成交易模型。如下: 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;
{开多} ENTERLONG: CROSS(K,D),TFILTER; // K 向上穿越 D,发出开多操作 {平多} EXITLONG: CROSS(J,100),TFILTER; // J向上穿越100,发出平多操作 {开空} ENTERSHORT: CROSS(D,K),TFILTER; //K 向下穿越 D,发出开空操作 {平空} EXITSHORT: CROSS(0,J),TFILTER; //J向下穿越0,发出平空操作 图表交易模型就完成了,其仓位控制在第5页图中设置
对于新交易系统模型,可用下面4句代替
SELLSHORT(CROSS(0,J) and HOLDING<0, HOLDING,market); //J向下穿越0,发出平空操作 BUY(CROSS(K,D) and HOLDING=0,30%,market);// K 向上穿越 D,发出开多操作
SELL(CROSS(J,100) and HOLDING>0,HOLDING,market); // J向上穿越100,发出平多操作 BUYSHORT(CROSS(D,K) and HOLDING=0,30%,market); //K 向下穿越 D,发出开空操作
其中,HOLDING为持仓函数,30%表示按可用资金的30%交易,market表示交易类型为市价委托。后为文字说明,编写模型时不用写出。
2)如何把自编变色 K 线转换成交易模型
模型说明:第一根 K 线变红时买,第一根 K 线变蓝时卖 指标源码:
//如果最新值比满足条件的“高值”高,说明在上涨,红色K线 //如果最新值比满足条件的“低值”低,说明在下跌,绿色K线 //若最新值界于“高值”和“低值”之间,则与前一周期的颜色相同
HH1:=IF(HREF(L,2) AND REF(L,1)>REF(L,2),REF(L,2),0);
HH2:=VALUEWHEN(HH1>0,HH1); //寻找“高值”---比+1周期和+2周期都高 LL2:=VALUEWHEN(LL1>0,LL1); //寻找“低值”---比+1周期和+2周期都低 K1:=IF(CLOSE>HH2,-3,IF(CLOSE 若最新值比“高值”高,返回-3; 变为只定义不用画线,把后面的颜色函数(COLORWHITE)也去掉 23 否则 最新值 与“低值”比 若最新值比“低值”低,返回1; 若最新值界于“高值”和“低值”之间---即中间值,返回0;} K2:=VALUEWHEN(K1<>0,K1);//寻找第一个比“高值”高 或者 比“低值”低的 G:=IF(K2=1,HH2,LL2); //若找到的第一个 比“低值”低,返回当时的“高值” 若找到的第一个 比“高值”高,返回当时的“低值” G1:=VALUEWHEN(ISLASTBAR,G); //是否是最后一个周期 W1:=K2; W2:=OPEN-CLOSE; HT:=IF(OPEN>CLOSE,OPEN,CLOSE); LT:=IF(OPEN STICKLINE(W2>0 AND W1<=0,OPEN,CLOSE,8,0),COLORRED; STICKLINE(W2>0 AND W1>0,OPEN,CLOSE,8,0),COLORCYAN; 利用STICKLINE 里的条件W1,再加上交易指令即可改写为交易模型 修改为交易模型如下: HH1:=IF(HREF(L,2) AND REF(L,1)>REF(L,2),REF(L,2),0); HH2:=VALUEWHEN(HH1>0,HH1); LL2:=VALUEWHEN(LL1>0,LL1); K1:=IF(CLOSE>HH2,-3,IF(CLOSE G1:=VALUEWHEN(ISLASTBAR,G); W1:=K2; W2:=OPEN-CLOSE; 图表交易模型就完成了,其仓位控制在第5页图中设置 对于新交易系统模型,可用下面4句代替 //交易系统之平空操作 SELLSHORT(CROSS(W1,0) OR (CROSS(W2,0) AND CROSS(W1,0)),HOLDING,market); //交易系统之开多操作 BUY(CROSS(W1,0) OR (CROSS(W2,0) AND CROSS(W1,0)),30%,market); //交易系统之平多操作 SELL(CROSS(0,W1) OR (CROSS(W2,0) AND CROSS(0,W1)),HOLDING,market); //交易系统之开空操作 BUYSHORT(CROSS(0,W1) OR (CROSS(W2,0) AND CROSS(0,W1)),30%,market); 3)如何合并两个不同的交易模型? 在两个模型方向相同时才开仓,两个模型指令不同时就平仓 参数 N:最小值 0 最大值 100 缺省值 8 24 源码: 模型A X:=BARSLAST(HIGH=HHV(HIGH,N)); LL:=MIN(REF(LOW,X+3),MIN(REF(LOW,X+2),MIN(REF(LOW,X),REF(LOW,X+1)))); Y:=BARSLAST(LOW=LLV(LOW,N)); HH:=MAX(REF(HIGH,Y+3),MAX(REF(HIGH,Y+2),MAX(REF(HIGH,Y),REF(HIGH,Y+1)))); A:=BARSLAST(CLOSE>=HH); B:=BARSLAST(CLOSE<=LL); AB:=IF(A>B,HH,LL); SELLSHORT(CROSS(CLOSE,AB) and HOLDING<0,HOLDING,market); //平空操作 BUY(CROSS(CLOSE,AB) and HOLDING=0,30%,market);//开多操作 SELL(CROSS(AB,CLOSE) and HOLDING>0,HOLDING,market); //平多操作 BUYSHORT(CROSS(AB,CLOSE) and HOLDING=0,30%,market); //开空操作 模型B HH1:=IF(HREF(L,2) AND REF(L,1)>REF(L,2),REF(L,2),0); HH2:=VALUEWHEN(HH1>0,HH1); LL2:=VALUEWHEN(LL1>0,LL1); K1:=IF(CLOSE>HH2,-3,IF(CLOSE SELLSHORT(K2=-3 and HOLDING<0,HOLDING,market); //平空操作 BUY(K2=-3 and HOLDING=0,30%,market);//开多操作 SELL(K2=1 and HOLDING>0,HOLDING,market); //平多操作 BUYSHORT(K2=1 and HOLDING=0,30%,market); //开空操作 利用并且( AND )和或者( OR )这些逻辑语句,将A、B模型合并为模型C: X:=BARSLAST(HIGH=HHV(HIGH,N)); LL:=MIN(REF(LOW,X+3),MIN(REF(LOW,X+2),MIN(REF(LOW,X),REF(LOW,X+1)))); Y:=BARSLAST(LOW=LLV(LOW,N)); HH:=MAX(REF(HIGH,Y+3),MAX(REF(HIGH,Y+2),MAX(REF(HIGH,Y),REF(HIGH,Y+1)))); A:=BARSLAST(CLOSE>=HH); B:=BARSLAST(CLOSE<=LL); AB:=IF(A>B,HH,LL); HH1:=IF(HREF(L,2) AND REF(L,1)>REF(L,2),REF(L,2),0); HH2:=VALUEWHEN(HH1>0,HH1); LL2:=VALUEWHEN(LL1>0,LL1); K1:=IF(CLOSE>HH2,-3,IF(CLOSE SELLSHORT(CROSS(CLOSE,AB) OR K2=-3 and HOLDING<0,HOLDING,market); //平空操作 BUY(CROSS(CLOSE,AB) AND K2=-3 and HOLDING=0,30%,market);//开多操作 SELL(CROSS(AB,CLOSE) OR K2=1 and HOLDING>0,HOLDING,market); //平多操作 25