Обсуждение статьи "Библиотека для простого и быстрого создания программ для MetaTrader (Часть I). Концепция, организация данных, первые результаты" - страница 7

 
Пользуясь случаем, хочу поблагодарить вас за отличную работу. Наконец-то я начинаю понимать, как создавать классы.
 

Я изучаю код в соответствии с вашим предложением по шагам.

В данный момент я заканчиваю изучение статьи 1. И остановился сразу после реализации конструктора защищенного класса.

В том куске кода, который я вам прислал, есть ошибка после компиляции. Она находится в секции, которая возвращает флаг закрытия позиции по TakeProfit.

По-видимому, идентификатор 'Status' не объявлен.

 

Нашел "проблему" .... Была между клавиатурой и компьютером ... МЕНЯ!

После вставки всех методов переменная была определенаа ...

Так как я еще не дошел до конца кода, то искал ошибку ... Но в последовательности переменная определена и все решено.

Извините за неудобства.

Спасибо

 
albertpess :

Ну, я изучаю код в соответствии с вашим предложением, чтобы следовать шагам.

В данный момент я заканчиваю изучение статьи 1. И остановился сразу после реализации конструктора защищенного класса.

В том куске кода, который я вам прислал, есть ошибка после компиляции. Она находится в секции, которая возвращает флаг для закрытия позиции по TakeProfit.

По всей видимости, идентификатор 'Status' не объявлен.

Значит, где-то они что-то сделали не так. Что-то упустили.

Просто скачайте прикрепленные к статье файлы в папку терминала и скомпилируйте советник.

И только потом разбирайте все пошагово, как описано в статье.

 
Artyom Trishkin:

Значит, где-то они что-то сделали не так. Что-то упустили.

Просто загрузите прикрепленные к статье файлы в папку терминала и скомпилируйте советник.

И только потом разбирайте все пошагово, как описано в статье.

Спасибо.

 
Очень полезно и хорошо сделано! Спасибо
 
Это очень хорошо.
 

Реализация конструктора защищенного класса:

//+------------------------------------------------------------------+
//| Закрытый параметрический конструктор|
//+------------------------------------------------------------------+
COrder::COrder(ENUM_ORDER_STATUS order_status,const ulong ticket)
  {
//--- Сохраните свойства целого числа
   m_ticket=ticket;
   m_long_prop[ORDER_PROP_STATUS]                              = order_status;
   m_long_prop[ORDER_PROP_MAGIC]                               = this.OrderMagicNumber();
   m_long_prop[ORDER_PROP_TICKET]                              = this.OrderTicket();

Здравствуйте Артём,

можем ли мы использовать:

m_long_prop[ORDER_PROP_TICKET] = (long)ticket; // ticket - это передаваемый параметр.

 
Ming Ge # :
this. OrderTicket ();

Если

 this . OrderTicket ();

возвращает значение m_ticket, заданное выше, то это возможно.

Но я писал это так давно, что не могу сразу вспомнить.

Посмотрел. Этот метод записывает билет в свойство order:

 //+------------------------------------------------------------------+
 //| Возвращает тикет|
 //+------------------------------------------------------------------+
 long COrder::OrderTicket( void ) const 
  {
 #ifdef __MQL4__
   return ::OrderTicket();
 #else
   long res= 0 ;
   switch ((ENUM_ORDER_STATUS) this .GetProperty(ORDER_PROP_STATUS))
     {
       case ORDER_STATUS_MARKET_POSITION   :
       case ORDER_STATUS_MARKET_ORDER      :
       case ORDER_STATUS_MARKET_PENDING    :
       case ORDER_STATUS_HISTORY_PENDING   :
       case ORDER_STATUS_HISTORY_ORDER     :
       case ORDER_STATUS_DEAL              : res=( long )m_ticket;  break ;
       default                             : res= 0 ;               break ;
     }
   return res;
 #endif
   }

Решайте сами, нужно ли вам заменять его простым присваиванием или нет.