MAX1_POS 最大值位置(不包括自身周期); MIN1_POS 最小值位置(不包括自身周期); SECONDMAX_VALUE 次大值; SECONDMIN_VALUE 次小值; SECONDMAX_POS 次大值位置; SECONDMIN_POS 次小值位置;
SECONDMAX1_VALUE 次大值(不包括自身周期); SECONDMIN1_VALUE 次小值(不包括自身周期); SECONDMAX1_POS 次大值位置(不包括自身周期); SECONDMIN1_POS 次小值位置(不包括自身周期); TIMES 满足表达式的次数; ADD 加和; AVERAGE 均值。 模型范例: 例1:
HH:VALUEWHEN(CROSS(C,MA(C,5)),H);//取收盘价上穿五周期均线时的最高价
HH1:LOOP1(HH,50,SECONDMAX_VALUE);//50周期内收盘价上穿均线时的最高价的次高值 思路说明:
1、取包含当根K线内的50根K线内的收盘价上穿均线时的最高价 2、对最高价从大到小进行排序
3、当根K线的HH1返回值为排序中第二大的值
注:如果50个周期最高值为唯一值,即50个周期的HH取值相同,则最高值与次高值相等,HH1返回对应的HH值 例2:
HH1:LOOP1(H,10,SECONDMAX1_POS);
思路说明:不包含当根K线的前面10根K线的最高价中第二大的取值对应K线,距离当前K线的位置 例3:
POS1:LOOP1(H,30,SECONDMAX1_POS); POS2:LOOP1(H,30,MAX1_POS);
POS1
30周期内次高点的位置比最高点的位置靠近当前位置,并且次高点的成交量比最高点的成交量低,当前价格跌破了30周期内的最低点并且成交量增加,M头形成反转形态,做空入场。
3
替代编写方法说明:
LOOP1(X,N,MAX_VALUE)=HHV(X,N) LOOP1(X,N,MIN_VALUE)=LLV(X,N) LOOP1(X,N, MAX_POS)=HHVBARS(X,N) LOOP1(X,N, MIN_POS)=LLVBARS(X,N) LOOP1(X,N, MAX1_VALUE)=HV(X,N) LOOP1(X,N, MIN1_VALUE)=LV(X,N) LOOP1(X,N, TIMES)=COUNT(X,N) LOOP1(X,N, ADD)=SUM(X,N) LOOP1(X,N, AVERAGE)=MA(X,N)
(2)利用LOOP2函数编写循环条件
实现思路:对某一条件是否成立进行循环判断,并根据不同判断结果取值。 关键函数:LOOP2
LOOP2(COND,A,B);循环条件函数 若COND条件成立,则返回A,否则返回B 注:
1、COND是判断条件;A、B可以是条件,也可以是数值。
2、该函数支持变量循环引用前一周期自身变量,即支持下面这样的写法 Y:LOOP2(CON,X,REF(Y,1)); 模型范例: 例1:
X: LOOP2(ISUP,H,REF(X,1)); 思路说明:
k线为阳线,取当根K线的最高价,否则取上一次是阳线的K线的最高价;若之前未出现过阳线时,X返回为空值 例2:
BB:LOOP2(BARSBK=1,LOOP2(L>LV(L,4),L,LV(L,4)),LOOP2(L>REF(BB,1),L,REF(BB,1))); SS:LOOP2(BARSSK=1,LOOP2(H
4
思路说明:
持有多单时,开多单那根的前面4个周期内的最低价为起始止损点BB,后续K线最低价比前一个最低价高,取当前最低价为止损点,否则取前一个低点为止损点;
持有空单时,开空单那根的前面4个周期内的最高价为起始止损点SS,最高价比前一个最高价低,取当前最高价为止损点,否则取前一个高点为止损点。
(3)利用VARIABLE定义全局变量编写循环条件
实现思路:在历史第一根K线上定义变量初始值,后续K线上关于该变量的计算始终调用上一根K线上该变量的返回值。目的在于实现一些过去不容易实现,或者不能实现的思路,编写时配合IF THEN BEGIN语句可以使整个编写逻辑更加清晰明了。 关键函数:VARIABLE VARIABLE:VAR1:=X,VAR2:=Y; IF 条件1 THEN VAR1:=VAR1+1; IF 条件2 THEN VAR2:=VAR2+1; 注:
VARIABLE 表示声明后面的变量名为全局变量 VAR1 VAR2全局变量的名字 X Y 为全局变量的初始值 VAR1:=VAR1+1;表示给VARI赋值
如果当前K线条件满足条件1,则给VARI赋值为VAR1+1,否则仍旧取值为之前的VAR1的值 全局变量没有个数限制。 模型范例: 例1:
VARIABLE:SS:1;//定义全局变量SS
IF TRADE_REF(1)=1 THEN//如果上一笔交易盈利 BEGIN
SS:=REF(SS,BARSSP+1)+2;//SS取上一笔委托手数+2 否则沿用之前的委托手数 END
HH:=HV(H,10); LL:=LV(L,10); CROSS(C,HH),BK(SS); CROSS(LL,C),SP(BKVOL);
5
思路说明:
初始下单手数为1,上一次交易如果盈利,下单手数在之前的下单手数上加2 上一次没有盈利,继续使用上一次的下单手数。 例2:
VARIABLE:VAR1:=0;
A:IF(ISUP &&REF(ISUP,1),VAR1+1,IF(ISUP,1,0));//连续的阳线数量 B:IF(ISDOWN &&REF(ISDOWN,1),VAR1-1,IF(ISDOWN,-1,0));//连续的阴线数量 VAR1:IF(ISEQUAL,0,IF(ISUP,A,B));//十字星返回0 思路说明:统计当前周期为止,连续的阳线、阴线数量。
(4)利用TRADE_AGAIN函数编写循环加减仓
实现思路:多用于加减仓模型中,加减仓动作的循环执行,如,当开仓条件满足时入场,接下来 条件继续满足,加仓,至设置的上限仓位为止。 关键函数:TRADE_AGAIN
TRADE_AGAIN(N) 同一指令行可以连续出N个信号。
用法:TRADE_AGAIN(N) 含有该函数的非过滤模型中,同一指令行可以连续出N个信号。 注:
1、该函数只适用于非过滤模型
2、模型中写入该函数,一根K线只支持一个信号。不可和MULTSIG、MULTSIG_MIN函数同时使用。 3、N个信号必须连续执行,如果期间出现其他信号,则N从新计算。 模型范例:
C>O,BK(1);//K线为阳线,买开1手
C TRADE_AGAIN(3);//同一指令行可以连续执行3次(如果连续三根阳线,则连续三次买开仓) 6 1.3如何使用STOP止损指令 实现思路:使用STOP类指令,可以实现限价止损、追踪止损策略。 关键函数:STOP、STOP1 STOP指令:限价止损止盈;STOP指令优先级高于其他指令,在收盘价模型中也不需要等k线走完,价格满足条件立即下单。 1、用于期货和外盘合约上,为限价止损 2、用于股票合约上加载后显示为STOP信号,相当于SP指令,平掉当前可用手数 加载在期货和外盘上: STOP(GROUP,TYPE,N),在TYPE基础上,N个最小变动单位对GROUP组别持仓止损止盈 注: 1、GROUP取值为'A'-'I'或不写(即可以编写为STOP(TYPE,N),在TYPE基础上,N个最小变 动单位对无组别持仓进行止损止盈)。 2、TYPE取值为0-5,分别代表在以下价格的基础上止损止盈。 0代表数据合约最近一次买开信号价位 1代表交易合约最近一次买开信号价位 2代表模组子账户交易合约多头开仓均价 3代表数据合约最近一次卖开信号价位 4代表交易合约最近一次卖开信号价位 5代表模组子账户交易合约空头开仓均价 3、N代表止损止盈参数为N个最小变动价位。多单止损,N为负数;多单止盈,N为正数;空单 反之。N不支持变量 4、STOP指令默认平掉模型内所有持仓,不支持指定手数。 5、STOP指令的信号确认方式默认为:出信号立即下单不复核。并且信号确认方式不支持修改。 6、页面盒子不支持STOP指令。 7、过滤模型和非过滤模型都可以使用STOP指令。 8、在收盘价模型中,同一分组、同一买卖方向上只能进行止赢或止损中的一项 加载在股票上: STOP(GROUP,TYPE,N),在TYPE基础上,N个最小变动单位对GROUP组别持仓止损止盈 注: 1、GROUP取值为'A'-'I'或不写(即可以编写为STOP(TYPE,N),在TYPE基础上,N个最小变动单位对无组别持仓进行止损止盈)。 2、TYPE取值为0-2,分别代表在以下价格的基础上止损止盈。 0代表数据合约最近一次买入信号价位 1代表交易合约最近一次买入信号价位 7