Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1187

 
leonerd:

а можно ли объявить класс как базовый, а потом в зависимости от условий переопределить как один из наследуемых?

Задача - оставить имя класса в коде одним и тем же.

И еще подскажите, пожалуйста, какую директиву использовать для определения тестера.

Так можно?

#include <NewsFilter.mqh>
//...
   if(MQLInfoInteger(MQL_TESTER))
      CNewsFilterTester news_filter;
   else
      CNewsFilter       news_filter;
//---
   news_filter.Init(Symbol(),MagicNumber);
 
Artyom Trishkin:

Спасибо. Да, но здесь news_filter объект получается может быть не определен. Он должен быть объявлен глобально, чтоб доступным быть для любого места в коде. Как быть?

CNewsFilter       news_filter;
void OnInit()
  {
  }
 
leonerd:

Спасибо. Да, но здесь news_filter объект получается может быть не определен. Он должен быть объявлен глобально, чтоб доступным быть для любого места в коде. Как быть?

В каких случаях он будет неопределён?

 
Artyom Trishkin:

В каких случаях он будет неопределён?

#include <NewsFilter.mqh>

void OnInit()
  {
//...
   if(MQLInfoInteger(MQL_TESTER))
      CNewsFilterTester news_filter;
   else
      CNewsFilter       news_filter;
//---
   news_filter.Init(Symbol(),MagicNumber);
  }
void OnTick()
  {
   news_filter.Check()...
  }
 

Помогите, пожалуйста, понять логику исполнения данного оператора и выражения его условия.


CTrade         m_trade;

CPositionInfo  m_position;

if(!m_trade.PositionClose(m_position.Ticket()))

Если НЕ закрывает позицию, определенную тикетом?

Сначала получается тикет позиции -> программа пытается закрыть позицию -> возвращенное булевое значение меняется на противоположное.

Правильно?

 
odyn:

Помогите, пожалуйста, понять логику исполнения данного оператора и выражения его условия.


Если НЕ закрывает позицию, определенную тикетом?

Сначала получается тикет позиции -> программа пытается закрыть позицию -> возвращенное булевое значение меняется на противоположное.

Правильно?

-> Возвращает true, если позиция с указанным тикетом закрыта, иначе false

Условие читается так: Если позиция с указанным тикетом не закрыта...

 
Сергей Таболин:

-> Возвращает true, если позиция с указанным тикетом закрыта, иначе false

Условие читается так: Если позиция с указанным тикетом не закрыта...

Вопрос в том, программа пытается закрыть позицию или нет?

 
odyn:

Вопрос в том, программа пытается закрыть позицию или нет?

Да, пытается.

 
Сергей Таболин:

Да, пытается.

Спасибо за ответ

 

Обьясните, пожалуйста.

Функция OnTradeTransaction

Она обязательно должна быть в советнике? 

Если нет, то в каких случаях ее надо включать в код?  И зачем?

Причина обращения: