我希望效果就是符合开仓条件后,相比开仓价格升高4元就平仓1手,下降4元就加仓一手,为了避免滑点,提前在升降或下降2元的时候就挂单,然后在追单菜单里面设置价位超过3元就撤单
想请教下各位这个后台编码应该怎么写,图表的测试程序写好了,但我对后台的编写不太会,弄不好。谢谢
好,谢谢,我在图表时的编码是
1秒轮询模式:
if t1 and holding >0 and high>=平仓价-2 then begin
sell(1,1,limitr, 平仓价);
平仓价:= 平仓价+aa*MINDIFF;
end
但图表交易时提前两个价位只要一发单,不管有没有成交都当作成交了,所以这样会导致我最新的平仓价错误,使下一次的价格区间发生错误了,所以可能只有用后台才行。
这个不就是在只有两点的时候报单了
if dynainfo(7)-tenterprice>2 then tbuy(1,1,mkt);
if tenterprice-dynainfo(7)>2 then tsell(1,1,mkt);
我自己根据上述思路改写的后台程序,但运行时有问题,麻烦看看是哪里出了问题
INPUT:ss(3,0,100,1),aa(4,0,200,1),n(5,0,100,5);
variable:开仓次数:=0,开仓价:=0;
组数:=b;
手数:=ss;
//交易条件
t1:=time<CLOSETIME(0) and time>OPENTIME(1)+200;
T2:=TIME=CLOSETIME(0) ;
均线:ma(c,n);
开多条件:=ref(c,1)>ref(均线,1);
开空条件:=ref(c,1)<ref(均线,1);
//多单加仓
if t1 and tholding2>0 and 开仓次数<10 and low<=开仓价-4*MINDIFF+2*MINDIFF then begin //(价格低于开仓价4元加仓,提前2元报价挂单)
tbuy(1,手数*x,lmt,
开仓价-4*MINDIFF );
开仓次数:=开仓次数+1;
end
//多单减仓
if t1 and tholding2>0 and 开仓次数<10 and high>=
开仓价+4*MINDIFF -2*MINDIFF then begin //(价格高于开仓价4元减仓,提前2元报价挂单)
tsell(1,手数*x,lmt,
开仓价+4*MINDIFF );
开仓次数:=开仓次数+1;
end;
//开仓
if t1 and 开多条件 and tholding2=0 and 开仓次数=0 then begin
tBUY(1,手数*x,lmt,o);
开仓价:=tENTERPRICE;
开仓次数:=1;
end
或者我再归纳一下我的思路
比如现在我10元开了3手多仓,然后我希望在15元时减1手,但我不希望有滑点,所以想提前2元在13元的时候就挂15元平多仓的单,如果挂单成交了,就把开仓价从10元变为15元,如果挂单没成交,开仓价还是原来的10元,当最新价离开挂单价3元后撤单,但如果最新价回到13元又重新挂单。
。。。想了好久还是没想出来,用图表写不出,用后台的话,如果单策略倒还没问题,用真实持仓可以解决,如果有其他策略的话,仓位乱了就不会编了
后台全局变量要用超全局变量GLOBALVARIABLE