请具体说明下,什么突破什么?
移动止盈代码参考下列代码:
variable:n=0;
if 下单条件 and holding=0 then begin
buy(1,1,market);
n:=h;
end
if h>n then n:=h;
if n-close>止盈点数 then begin
sell(1,0,market);
n:=0;
end
INPUT:NMIN(60,10,60,10); //设置参数
INPUT:NOFFSET(3,1,20,1); //设置参数
INPUT:LOTS(1,1,10000,1); //设置参数
VARIABLE:N=0;
VARIABLE:M=100000;
CYC:=BARSLAST(DATE>REF(DATE,1))+1; //统计日内K线数
HIGHESTOF30MIN:=VALUEWHEN(TIME<=90000+NMIN*100,HHV(H,CYC)); //在从开盘到设定时间(默认参数开盘30分)内保存当天最高价
LOWESTOF30MIN:=VALUEWHEN(TIME<=90000+NMIN*100,LLV(L,CYC)); //在从开盘到设定时间(默认参数开盘30分)内保存当天最低价
IF HIGH >= HIGHESTOF30MIN + NOFFSET*MINDIFF AND HOLDING<=0 THEN //如果最高价突破设定时间内的前高加设定偏移并且目前没有多单,那么
BEGIN
MYPRICE: = HIGHESTOF30MIN + NOFFSET*MINDIFF; //预设进场价.既等于设定时间内的前高加设定偏移
IF OPEN > MYPRICE THEN //如果开盘价大于预设进场价,那么奋不顾身闯进去,(注:这是移植的,原设计并不一定完美,这时可能不是那么好成交的,我也不必多费唇舌了).
BEGIN
MYPRICE: = OPEN;
SELLSHORT(HOLDING<0,0,LIMITR,MYPRICE); //如果有空单先平
BUY(HOLDING=0,LOTS,LIMITR,MYPRICE); //如果没有多单则以开盘价开多LOTS手
N:=H;
M:=100000;
END
END
IF H>N THEN N:=H;
IF N>ENTERPRICE+10*MINDIFF AND H<N-5*MINDIFF THEN 移动止盈多头:SELL(1,0,MARKET);
IF LOW <= LOWESTOF30MIN - NOFFSET*MINDIFF AND HOLDING>=0 THEN //以下开空部分同上,只不过方向相反
BEGIN
MYPRICE: = LOWESTOF30MIN - NOFFSET*MINDIFF;
IF OPEN < MYPRICE THEN
BEGIN
MYPRICE: = OPEN;
SELL(HOLDING>0,0,LIMITR,MYPRICE);
BUYSHORT(HOLDING=0,LOTS,LIMITR,MYPRICE);
M:=L;
N:=0;
END
END
IF L<M THEN M:=L;
IF M<ENTERPRICE-10*MINDIFF AND L>M+5*MINDIFF THEN 移动止盈空头:SELLSHORT(1,0,MARKET);
IF TIME >= 151400 THEN //收盘平仓
BEGIN
SELL(HOLDING>0,0,LIMITR,OPEN);
SELLSHORT(HOLDING<0,0,LIMITR,OPEN);
END
hh:=hhv(h,enterbars+1);
ll:=llv(l,enterbars+1);
if hh>enterprice+10*mindiff and h<hh-5*mindiff then sell(1,0,thisclose);
if l<enterprice-10*mindiff and l>ll+5*mindiff then sellshort(1,0,thisclose);
在原来代码基础上添加上面的代码
不要IF是写不出这样效果的。
如果因为看不懂或者看不习惯IF就要求改来改去话,那还不如去学一学