Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Интересует активность в Сигналах? Заходи и отслеживай!
Alexey Konin
135
Alexey Konin 2011.04.16 13:13 
Как сделать проверку на наличия ордеров по парам EURUSD, GBPUSD, затем если ордеров нету, то выставить ордера по рынку, по двум валютам EURUSD GBPUSD. С учетом объема ордера, SL и TP?
Роман
7939
Роман 2011.04.16 15:56  
Syte:
Как сделать проверку на наличия ордеров по парам EURUSD, GBPUSD, затем если ордеров нету, то выставить ордера по рынку, по двум валютам EURUSD GBPUSD. С учетом объема ордера, SL и TP?


Привожу модифицированный пример из учебника, Вы можете исключить работу через массивы - просто бьете через переменные и все...(подробнее - здесь) - для себя подредактируете - укажете явно работу с Вашими двумя инструментами, что касается "С учетом объема ордера, SL и TP" - также посмотрите соответствующие торговые модули примера в учебнике - здесь (третья ф-ия) и здесь - объем сделки.

int Qnt=0;                          // Счётчик количества ордеров

//--------------------------------------------------------------- 3 --
   ArrayCopy(Mas_Ord_Old, Mas_Ord_New);// Сохраняем предыдущую историю
   Qnt=0;                              // Обнуление счётчика ордеров
   ArrayInitialize(Mas_Ord_New,0);     // Обнуление массива
   ArrayInitialize(Mas_Tip,    0);     // Обнуление массива
//--------------------------------------------------------------- 4 --
   for(int i=0; i<OrdersTotal(); i++) // По рыночн. и отлож. ордерам
     {
      if((OrderSelect(i,SELECT_BY_POS)==true)     //Если есть следующ.
      && (OrderSymbol()==Symbol())&& (OrderMagicNumber()==Magic)) //.. и наша вал.пара с магиком
        {
         //------------------------------------------------------ 5 --
         Qnt++;                                   // Колич. ордеров
         Mas_Ord_New[Qnt][1]=OrderOpenPrice();    // Курс открытия орд
         Mas_Ord_New[Qnt][2]=OrderStopLoss();     // Курс SL
         Mas_Ord_New[Qnt][3]=OrderTakeProfit();   // Курс ТР
         Mas_Ord_New[Qnt][4]=OrderTicket();       // Номер ордера
         Mas_Ord_New[Qnt][5]=OrderLots();         // Количество лотов
         Mas_Tip[OrderType()]++;                  // Кол. ордеров типа
         Mas_Ord_New[Qnt][6]=OrderType();         // Тип ордера
         Mas_Ord_New[Qnt][7]=OrderMagicNumber();  // Магическое число 
         if (OrderComment()=="")
            Mas_Ord_New[Qnt][8]=0;                // Если нет коммент
         else
            Mas_Ord_New[Qnt][8]=1;                // Если есть коммент
         //------------------------------------------------------ 6 --
        }
     }
   Mas_Ord_New[0][0]=Qnt;                         // Колич. ордеров

Если Qnt=0, то открываете ордера по данным валютным парам-причем названия пар явно указываете в ф-ии OrderSend() - открытия ордеров - пример из учебника - для себя подредактируете - исключив массивы - если они покажутся Вам слишком громоздкой конструкцией...

Полностью ознакомьтесь с этим и "кое-что" сразу прояснится и встанет на свои места.

Alexey Konin
135
Alexey Konin 2011.04.16 16:55  
Спасибо :) Надеюсь разберусь.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий