Для покупных ордеров:
условие
if (BuyLimitCount() == 0 && BuyCount() ==0)
Проверки:
//+------------------------------------------------------------------+
int BuyLimitCount()
{
int count = 0;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true && OrderMagicNumber() == Magic && OrderType() == OP_BUYLIMIT)
{
count++;
}
}
return (count);
}
//+------------------------------------------------------------------+
int BuyCount()
{
int count = 0;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
{
count++;
}
}
return (count);
}
//+------------------------------------------------------------------+
И для продаж
Уловие:
if (SellLimitCount() == 0 && SellCount() == 0)
Проверки:
//+------------------------------------------------------------------+
int SellLimitCount()
{
int count = 0;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true && OrderMagicNumber() == Magic && OrderType() == OP_SELLLIMIT)
{
count++;
}
}
return (count);
}
//+------------------------------------------------------------------+
int SellCount()
{
int count = 0;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
{
count++;
}
}
return (count);
}
//+------------------------------------------------------------------+
Я попробовал всё это заменить одним условием : if (OrdersTotal()
Да, согласен это может пригодиться в таких случаях когда один из ордеров не сможет открыться, и в этом случае откроется второй уже дублирующийся ордер.
Надобность этих больших проверок только в этом?
Добавлено: 21-09-2016 09:42:37
А сдесь, почему в условии сравнивается с "-1"?
ticket = OrderSend(Symbol(), OP_BUYLIMIT, Lots, minprice, 3, sl, tp, "", Magic, 0, Blue);
if (ticket Print ("Не открылась покупка");
Я так понимаю что операция "OrderSend" при неудачи возвращает в "ticket" -1, а при успехе 1, правилино я думаю?
это любое действие так делает, любая операция?
Извиняюсь если не понятно спросил.

»