重复下单 请版主进来指导
小弟潜水,学识浅,不敢乱问。
初步设想了个系统,以不同周期均线交叉点密度判断盘整、单边。盘整高抛低吸,单边顺势加码。
先完成单边的顺势加码部分,但遇到重复下单问题,原码如下:
l=MathFloor((MarketInfo(Symbol(),MODE_ASK)-Benchmark)/(Step* MarketInfo(Symbol(),MODE_POINT)));
m=MathCeil((MarketInfo(Symbol(),MODE_BID)-Benchmark)/(Step* MarketInfo(Symbol(),MODE_POINT)));
buycnt1=0;
buycnt2=0;
sellcnt1=0;
sellcnt2=0;
for(cnt=total;cnt>=0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if((OrderType()==OP_SELL || OrderType()==OP_SELLSTOP)&&
OrderSymbol()==Symbol())
{
atRate1=Benchmark+(l-1)*Step*MarketInfo(Symbol(),MODE_POINT);
atRate2=Benchmark+(m-6)*Step*MarketInfo(Symbol(),MODE_POINT);
if (MathAbs( OrderOpenPrice() - atRate1) < inRange) {sellcnt1+=1;}
if (MathAbs( OrderOpenPrice() - atRate2) < inRange) {sellcnt2+=1;}
}
if((OrderType()==OP_BUY || OrderType()==OP_BUYSTOP)&&
OrderSymbol()==Symbol())
{
atRate3=Benchmark+(m+1)*Step*MarketInfo(Symbol(),MODE_POINT);
atRate4=Benchmark+(l+6)*Step*MarketInfo(Symbol(),MODE_POINT);
if (MathAbs( OrderOpenPrice() - atRate3) < inRange) {buycnt1+=1;}
if (MathAbs( OrderOpenPrice() - atRate4) < inRange) {buycnt2+=1;}
}
}
Print("s1=",sellcnt1);
Print("s2=",sellcnt2);
Print("b1=",buycnt1);
Print("b2=",buycnt2);
if(sellcnt1<1) {OrderSend(Symbol(),OP_SELLSTOP,Lots,Benchmark+(l-1)*Step*MarketInfo(Symbol(),MODE_POINT),3,0,0,"",0,0,Green);}
if(sellcnt2<1) {OrderSend(Symbol(),OP_SELLSTOP,Lots,Benchmark+(m-6)*Step*MarketInfo(Symbol(),MODE_POINT),3,0,0,"",0,0,Green);}
if(buycnt1<1) {OrderSend(Symbol(),OP_BUYSTOP,Lots,Benchmark+(m+1)*Step*MarketInfo(Symbol(),MODE_POINT),3,0,0,"",0,0,Red);}
if(buycnt2<1) {OrderSend(Symbol(),OP_BUYSTOP,Lots,Benchmark+(l+6)*Step*MarketInfo(Symbol(),MODE_POINT),3,0,0,"",0,0,Red);}
这段是想在某一固定价位atRate1,atRate2,atRate3,atRate4已有成交单或是挂单,就不再挂单了。否则就补一单。但程序会一直判断没有。。一直补单。。望赐教,不胜感激。
最后祝大家鼠年行大运,赚钱赚开心。