Скачать MetaTrader 5

Выставления ордера с проверкой

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Alexey Konin
135
Alexey Konin  
Как сделать проверку на наличия ордеров по парам EURUSD, GBPUSD, затем если ордеров нету, то выставить ордера по рынку, по двум валютам EURUSD GBPUSD. С учетом объема ордера, SL и TP?
Роман
7939
Роман  
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  
Спасибо :) Надеюсь разберусь.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий