{金牛三色K线}
{主趋势线:EMA(EMA(C,10),10),COLORRED,LINETHICK3;
B:=主趋势线<REF(主趋势线,1);
IF(B-1,主趋势线,DRAWNULL)COLORRED,LINETHICK3;}
主趋势线:EMA(EMA(C,10),10),COLORRED,LINETHICK3;
B:=主趋势线>REF(主趋势线,1);
IF(B-1,主趋势线,DRAWNULL)COLORBLUE,LINETHICK3;
{操盘线:EMA(EMA(C,5),5),COLORRED,LINETHICK2;
Y:=操盘线>REF(操盘线,1);
IF(Y-1,操盘线,DRAWNULL)COLORGREEN,LINETHICK2;}
AA:=EMA(C,5) > EMA(C,20);
BB:=EMA(C,5) < EMA(C,20);
CC:= EMA(C,5) > EMA(C,10);
CC1:=EMA(C,5) < EMA(C,10);
DD:=CLOSE<OPEN;
STICKLINE(AA,H,L,0,0),COLORRED;
STICKLINE(AA,O,C,3,1),COLORRED;
STICKLINE(AA AND DD,O,C,3,0),COLORRED;
STICKLINE(BB,H,L,0,0),COLORGREEN;
STICKLINE(BB,O,C,3,1),COLORGREEN;
STICKLINE(BB AND DD,O,C,3,0),COLORGREEN;
if aa then
BEGIN
sellshort(holding<0,holding,market);
buy(holding=0,1,limit,c);
end
if bb then
BEGIN
sell(holding>0,holding,market);
buyshort(holding=0,1,limit,c);
end
if holding>0 and hhv(h,enterbars+1)>enterprice+10*mindiff and c<=enterprice+3 then sell(1,0,limitr,enterprice+8),ignorecheckprice;
if holding<0 and llv(l,enterbars+1)<enterprice-10*mindiff and c>=enterprice-3 then sellshort(1,0,limitr,enterprice-8),ignorecheckprice;
if holding>0 and c<=主趋势线-5*MINDIFF then 止损1:sell(1,holding,market);
if holding<0 and c>=主趋势线+5*MINDIFF then 止损2:sellshort(1,holding,market);
if time>=185500 then
begin
sellshort(holding<0,holding,market);
sell(holding>0,holding,market);
end
老师帮我看下,我想写的是,进场货获利10点后回测到3点,就自动平仓, 开单后止损在趋势线5点位置, 每天交易到2点55自动平仓,这样写对吗。
基本差不多,要表述从高点回撤的话这个地方可能要修改下。
if holding>0 and hhv(h,enterbars+1)>enterprice+10*mindiff and c<= hhv(h,enterbars+1)-3*mindiff then sell(1,0,limitr,enterprice+8*MINDIFF),ignorecheckprice;
if holding<0 and llv(l,enterbars+1)<enterprice-10*mindiff and c>= hhv(h,enterbars+1)+3*mindiff then sellshort(1,0,limitr,enterprice-8*MINDIFF),ignorecheckprice;
这个持续开仓和你的开仓条件有关系。
比如这个:
AA:=EMA(C,5) > EMA(C,20);
其实这个aa会有一段持续的过程,也就是说连续N个K上都会满足的。这样的话一旦触发了平仓使得holding=0也成立了,就会连续开仓。也就是你上面图上看到的。
“老师您好用你修改的后,在3分钟周期里面。多单会出现第一根K收盘后在进场价格往上8点的位置挂平仓单呢,怎么修改呢
”
这个应该是if holding>0 and hhv(h,enterbars+1)>enterprice+10*mindiff and c<= hhv(h,enterbars+1)-3*mindiff then sell(1,0,limitr,enterprice+8*MINDIFF),ignorecheckprice;
这句代码触发的,但是你这个代码里面的下单时候就是按照开仓K的收盘价+8个变动价位挂单的啊。因为你上面这个连续开平的缘故,导致上一个K收盘价就是上次开仓价。
这里修改下试下呢:
if holding>0 and hhv(h,enterbars+2)>enterprice+10*mindiff and c<= hhv(h,enterbars+2)-3*mindiff then 止盈1:sell(1,0,limitr,enterprice+8*MINDIFF),ignorecheckprice;
if holding<0 and llv(l,enterbars+2)<enterprice-10*mindiff and c>= hhv(h,enterbars+2)+3*mindiff then 止盈2:sellshort(1,0,limitr,enterprice-8*MINDIFF),ignorecheckpri