Перед тем как выставлять ордера, закрывать и т.д. сделайте полный цикл перебора и подсчета открытых ордеров Затем на основании результатов подсчета принимайте решение открывать или нет. Вот примитивная функция подсчета активных ордеров.
void OrdersCounter(string Symb,int Magic) { BUYorders=0; SELLorders=0; SELLSTOPorders=0; BUYSTOPorders=0; BUYLIMITorders=0; SELLLIMITorders=0; // Глобальные переменные int total=OrdersTotal(), cnt; for (cnt=total-1; cnt>=0; cnt--) { if (!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) continue; if( OrderSymbol()==Symb && OrderMagicNumber()==Magic) { if(OrderType()==OP_BUY) BUYorders++; if(OrderType()==OP_SELL) SELLorders++; if(OrderType()==OP_BUYSTOP) BUYSTOPorders++; if(OrderType()==OP_SELLSTOP) SELLSTOPorders++; if(OrderType()==OP_BUYLIMIT) BUYLIMITorders++; if(OrderType()==OP_SELLLIMIT) SELLLIMITorders++; } } }
Figar0:
Перед тем как выставлять ордера, закрывать и т.д. сделайте полный цикл перебора и подсчета открытых ордеров Затем на основании результатов подсчета принимайте решение открывать или нет. Вот примитивная функция подсчета активных ордеров.
Перед тем как выставлять ордера, закрывать и т.д. сделайте полный цикл перебора и подсчета открытых ордеров Затем на основании результатов подсчета принимайте решение открывать или нет. Вот примитивная функция подсчета активных ордеров.
void OrdersCounter(string Symb,int Magic) { BUYorders=0; SELLorders=0; SELLSTOPorders=0; BUYSTOPorders=0; BUYLIMITorders=0; SELLLIMITorders=0; // Глобальные переменные int total=OrdersTotal(), cnt; for (cnt=total-1; cnt>=0; cnt--) { if (!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) continue; if( OrderSymbol()==Symb && OrderMagicNumber()==Magic) { if(OrderType()==OP_BUY) BUYorders++; if(OrderType()==OP_SELL) SELLorders++; if(OrderType()==OP_BUYSTOP) BUYSTOPorders++; if(OrderType()==OP_SELLSTOP) SELLSTOPorders++; if(OrderType()==OP_BUYLIMIT) BUYLIMITorders++; if(OrderType()==OP_SELLLIMIT) SELLLIMITorders++; } } }
о.к. попробую связать...о результате сообщу - спасибо за помощь!!!
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Может кто подскажет, как открыть отложенный ордер при срабатывании другого отложенного ордера:
например, если
if (PriceOpenSell!=0){ //Если открыт ордер SELL, где PriceOpenSell - ранее определенная цена открытия ордера Sell
OrderSend("EURUSD!",OP_SELLSTOP,0.02,PriceOpenSell-30*Point,2,PriceOpenSell-30*Point+30*Point,PriceOpenSell-30*Point-10*Point);}
В этом коде, проблема в том что ордера добавляются до тех пор пока цена PriceOpenSell!=0.....а нужно добавить только 1 ордер....