小修改同时平仓问题!小问题!
EA开单是马丁 0.01 0.02 0.03 0.04 ...0.11,在开多空单时,盈利平仓是从大手数0.1顺序到0.01平仓!
2,平仓代码我已经找出来,在下面!
3,修改代码,盈利平仓时,多单(空单)平仓时是同时平,不是顺序平!
4,是多单(空单)同时平,不是多空单一起同时平!
int CloseOrders(string symbol,
int mag,
ENUM_ORDER_TYPES type,
string com,
int slippage = 0,
colorarrow_color = clrFireBrick,
int cycles = 2)
{
ResetLastError();
int cnt = 0;
bool Res;
for(int j = 1; j <= cycles; j++)
{
::RefreshRates();
bool res = true;
int total = ::OrdersTotal();
for(int i = total; i >= 0; i--)
{
if(::OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
if(symbol == NULL || ::OrderSymbol() == symbol)
if(mag == -1 || ::OrderMagicNumber() == mag)
if(com == NULL || com == "" || ::StringFind(::OrderComment(), com) == 0 || ::OrderComment() == com)
if(CheckType(OrderType(), type) == true)
{
if(OrderType() < 2)
{
Res = ::OrderClose(::OrderTicket(), ::OrderLots(), ::OrderClosePrice(), slippage, arrow_color);
if(Res == false)
{
res = false;
if(j == cycles)
::PrintFormat("%d,Position Closed failed, code =%d", ::OrderTicket(),::GetLastError());
}
else
{
cnt++;
}
}
else
{
Res =::OrderDelete(::OrderTicket(), arrow_color);
if(Res == false)
{
res = false;
if(j == cycles)
::PrintFormat("%d,pending order delete failed, code =%d", ::OrderTicket(),::GetLastError());
}
else
{
cnt++;
}
}
}
}
if(res == true)
{
break;
}
else
{
::Sleep(200);
}
}
return(cnt);
}
页:
[1]