HH1:=IFELSE(H<REF(H,1)&&REF(H,1)<REF(H,2),REF(H,2),0);
LL1:=IFELSE(L>REF(L,1)&&REF(L,1)>REF(L,2),REF(L,2),0);
HH2:=VALUEWHEN(HH1>0,HH1);
LL2:=VALUEWHEN(LL1>0,LL1);
K1:=IFELSE(CLOSE>HH2,-3,IFELSE(CLOSE<LL2,1,0));
K2:=VALUEWHEN(K1<>0,K1);
手数:=4;
//交易条件
VARIABLE:n1=0,n2=0,n3=0,n4=0 ;
开多条件:=CROSS(-2,K2);
平多条件:CROSS(K2,0);
开空条件:=CROSS(K2,0);
平空条件:=CROSS(-2,K2);
//交易系统
平空:SELLSHORT(平空条件,0,MARKET);
平多:SELL(平多条件,0,MARKET);
if 开多条件 then begin
BUY(1,手数,MARKET);
n1:=0;
n2:=0;
end
if 开空条件 then begin
BUYSHORT(1,手数,MARKET);
n3:=0;
n4:=0;
end
//止损止盈,实时出场
多头止损:c<ref(L,ENTERBARS);
sell(多头止损 and holding>0 and ENTERBARS>0 ,holding,market);
空头止损:c>ref(h,ENTERBARS);
sellshort(空头止损 and holding<0 and ENTERBARS>0 ,holding,market);
//多头
if H-ENTERPRICE>=3 AND enterbars>0 and HOLDING>0 and n1=0 then begin
止盈1:SELL(1,1,marketr);//盈利3个点止盈1手
n1:=1;
end
if H-ENTERPRICE>=5 AND enterbars>0 and HOLDING>0 and n2=0 then begin
止盈2:SELL(1,1,marketr);//盈利5个点止盈1手
n2:=1;
end
//空头
if ENTERPRICE-L>=3 AND enterbars>0 and HOLDING<0 and n3=0 then begin
止盈3:SELLSHORT(1,1,marketr);//盈利3个点止盈
n3:=1;
end
if ENTERPRICE-L>=5 AND enterbars>0 and HOLDING<0 and n4=0 then begin
止盈4:SELLSHORT(1,1,marketr);//盈利5个点止盈
n4:=1;
end
另再加入
移动止盈
盈利大于5小于10个点,从最大盈利点回撤0.61,止盈;
盈利大于10小于20个点,从最大盈利点回撤0.5,止盈;
盈利大于20点,从最大盈利点回撤0.38,止盈。和收盘前不论盈利亏损全平仓
图表转后台必须注意的是 图表后台机制是不一样的。能帮你把函数之类的处理掉,但是稍微复杂的策略建议从策略思路出发完整的编写后台策略,而不是直接修改图表代码。
HH1:=IFELSE(H<REF(H,1)&&REF(H,1)<REF(H,2),REF(H,2),0);
LL1:=IFELSE(L>REF(L,1)&&REF(L,1)>REF(L,2),REF(L,2),0);
HH2:=VALUEWHEN(HH1>0,HH1);
LL2:=VALUEWHEN(LL1>0,LL1);
K1:=IFELSE(CLOSE>HH2,-3,IFELSE(CLOSE<LL2,1,0));
K2:=VALUEWHEN(K1<>0,K1);
手数:=4;
//交易条件
GLOBALVARIABLE:n1=0,n2=0,n3=0,n4=0;
开多条件:=CROSS(-2,K2);
平多条件:=CROSS(K2,0);
开空条件:=CROSS(K2,0);
平空条件:=CROSS(-2,K2);
//交易系统
平空:TSELLSHORT(平空条件,TSELLHOLDINGEX('','',1),MKT);
平多:TSELL(平多条件,TBUYHOLDINGEX('','',1),MKT);
if 开多条件 then begin
TBUY(1,手数,MKT);
n1:=0;
n2:=0;
end
if 开空条件 then begin
TBUYSHORT(1,手数,MKT);
n3:=0;
n4:=0;
end
//止损止盈,实时出场
多头止损:c<ref(L,TENTERBARS);
TSELL(多头止损 and TBUYHOLDINGEX('','',1)>0 and TENTERBARS>0 ,TBUYHOLDINGEX('','',1),MKT);
空头止损:c>ref(h,TENTERBARS);
Tsellshort(空头止损 and TSELLHOLDINGEX('','',1)<0 and TENTERBARS>0 ,TSELLHOLDINGEX('','',1),MKT);
//多头
if H-TENTERPRICE>=3 AND Tenterbars>0 and TBUYHOLDINGEX('','',1)>0 and n1=0 then begin
止盈1:TSELL(1,1,MKT);//盈利3个点止盈1手
n1:=1;
end
if H-TENTERPRICE>=5 AND Tenterbars>0 and TBUYHOLDINGEX('','',1)>0>0 and n2=0 then begin
止盈2:TSELL(1,1,MKT);//盈利5个点止盈1手
n2:=1;
end
//空头
if TENTERPRICE-L>=3 AND Tenterbars>0 and TSELLHOLDINGEX('','',1)<0 and n3=0 then begin
止盈3:TSELLSHORT(1,1,MKT);//盈利3个点止盈
n3:=1;
end
if TENTERPRICE-L>=5 AND Tenterbars>0 and TSELLHOLDINGEX('','',1)<0<0 and n4=0 then begin
止盈4:TSELLSHORT(1,1,MKT);//盈利5个点止盈
n4:=1;
end
后台是直接操作实际账号的,因此你手工进行的操作可能也会影响到策略运行。
//移动止损模块部分*******************************
//A有三种数值状态:1,0,最新价;
//当A=1时表示当前有持仓,A=0时表示移动止损执行完毕,A=最新价时用于比较价格是否回落
//将A赋值为1,表示当前有持仓
IF TBUYHOLDINGEX( '','' ,0 )>0 AND EXTGBDATA('a' )=0 THEN BEGIN
EXTGBDATASET( 'a',1 );
END
//使A始终表示监控开始后的最高价
IF DYNAINFO( 7)>EXTGBDATA('a' ) and EXTGBDATA('a' )>0 THEN BEGIN
EXTGBDATASET( 'a',DYNAINFO( 7));
END
MXYL:EXTGBDATA('a')-TAVGENTERPRICEEX2('' ,'',1);//最高盈利值
CYL:DYNAINFO( 7)-TAVGENTERPRICEEX2('' ,'',1);//当前盈利值
//发现价格回落止损,并将A赋值为0表示移动止损动作完成
IF MXYL>5*MINDIFF and MXYL<10*MINDIFF and EXTGBDATA('a' )>0 and CYL<=0.61*MXYL THEN BEGIN //最大盈利大于5点且小于10点,且当前盈利相对最高值回撤幅度达到0.61
TSELL(1,TBUYHOLDINGEX('','',1),MKT );
EXTGBDATASET( 'a',0);
END
//*******************************
if time=CLOSETIME(0) then TSELL(1,TBUYHOLDINGEX('','',1),MKT);//收盘全平
谢谢我标准版在试用专业版公式有难度没人指导根本不行
图表转后台要慢慢来的,后台要处理的代码会比图表复杂。