AM2
Андрей

 
Уровень 26

  Торгую в компаниях:


Группа "Программирование на MQL"

Рейтинг 270



Работаем с группой ордеров

Для тех у кого возникают вопросы по работе с группой ордеров, я написал этот урок. Здесь мы немного затронем объектно-ориентированное программирование, а именно создание структур.

Создадим советник и массив структур, где будем хранить информацию об ордерах:


struct OrdersInfo
  {
   int               tick;                // тикет
   string            symb;                // символ
   int               cmd;                 // торговая операция
   double            oop;                 // цена открытия
   double            ocp;                 // цена закрытия
   datetime          oot;                 // время открытия
   datetime          oct;                 // время закрытия
   double            prof;                // профит
   double            lot;                 // количество лотов
   int               slip;                // проскальзывание
   double            sl;                  // stop loss
   double            tp;                  // take profit
   string            cmt;                 // комментарий
   int               mgc;                 // идентификатор
   datetime          expr;                // срок истечения ордера
  };

OrdersInfo ord[];


Изменим размерность массива и заполним данные об ордерах:


   ArrayResize(ord,OrdersTotal(),1);

   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         ord[i].tick=OrderTicket();
         ord[i].symb=OrderSymbol();
         ord[i].cmd=OrderType();
         ord[i].oop=OrderOpenPrice();
         ord[i].ocp=OrderClosePrice();
         ord[i].oot=OrderOpenTime();
         ord[i].oct=OrderCloseTime();
         ord[i].prof=OrderProfit();
         ord[i].lot=OrderLots();
         ord[i].sl=OrderStopLoss();
         ord[i].tp=OrderTakeProfit();
         ord[i].cmt=OrderComment();
         ord[i].mgc=OrderMagicNumber();
         ord[i].expr=OrderExpiration();
        }
     }



И наконец пробежимся по массиву и выведем несколько параметров на экран:


   string cm="\n";

   for(int i=0;i<ArraySize(ord);i++)
     {
      cm+=((string)ord[i].tick+" "+ord[i].symb+" "+(string)ord[i].cmd+" "+(string)ord[i].prof+"\n");
     }
     
   Comment(cm);


Чтобы продемонстрировать работу советника, я открыл по одному ордеру на трех парах:



Точно таким же образом можно вывести на экран все остальные параметры ордеров.

Вот и весь код эксперта:


//+------------------------------------------------------------------+
//|                                                  SymbolsInfo.mq4 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
struct OrdersInfo
  {
   int               tick;                // тикет
   string            symb;                // символ
   int               cmd;                 // торговая операция
   double            oop;                 // цена открытия
   double            ocp;                 // цена закрытия
   datetime          oot;                 // время открытия
   datetime          oct;                 // время закрытия
   double            prof;                // профит
   double            lot;                 // количество лотов
   int               slip;                // проскальзывание
   double            sl;                  // stop loss
   double            tp;                  // take profit
   string            cmt;                 // комментарий
   int               mgc;                 // идентификатор
   datetime          expr;                // срок истечения ордера
  };

OrdersInfo ord[];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   ArrayResize(ord,OrdersTotal(),1);

   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         ord[i].tick=OrderTicket();
         ord[i].symb=OrderSymbol();
         ord[i].cmd=OrderType();
         ord[i].oop=OrderOpenPrice();
         ord[i].ocp=OrderClosePrice();
         ord[i].oot=OrderOpenTime();
         ord[i].oct=OrderCloseTime();
         ord[i].prof=OrderProfit();
         ord[i].lot=OrderLots();
         ord[i].sl=OrderStopLoss();
         ord[i].tp=OrderTakeProfit();
         ord[i].cmt=OrderComment();
         ord[i].mgc=OrderMagicNumber();
         ord[i].expr=OrderExpiration();
        }
     }

   string cm="\n";

   for(int i=0;i<ArraySize(ord);i++)
     {
      cm+=((string)ord[i].tick+" "+ord[i].symb+" "+(string)ord[i].cmd+" "+(string)ord[i].prof+"\n");
     }
     
   Comment(cm);
  }
//+------------------------------------------------------------------+



Скачать советник файлом: www.opentraders.ru/downloads/1317/
  • +2
  • Просмотров: 1188
  • 15 сентября 2016, 11:24
  • AM2
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Программирование на MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Хитрый усреднитель на MQL5
Следующая запись в группе  
Поарбитражим
13 сентября 2016
17 сентября 2016

Комментарии (0)


Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий
Начать торговлю с Альпари

 
Как начать: открываем первую торговую сделку за 7 шагов →