Обсуждение статьи "Мастер MQL5: Как написать свой модуль сопровождения открытых позиций" - страница 2

 
Fox104:

День добрый. Не работает модуль.

 В логе выдает  уровень пороговой прибыли должен быть больше уровня установки ордеров.

 В конструкторе инициализирую переменные, не пустые и не равны нулю. Почему выдается ошибка?

Оформляйте, пожалуйста, код в сообщении правильно: Правильно вставляем код на форуме. (Ваше сообщение уже исправлено).
 
Andy:

При использовании указанного в статье модуля выдаются ошибки в журнале эксперта во время загрузки советника на график:

2017.09.06 00:28:29.873 1 (EURUSD,M5) OnInit: error initializing indicators

2017.09.06 00:31:20.256 1 (EURUSD,M5) CExpertBase::SetPriceSeries: changing of timeseries is forbidden

2017.09.06 00:31:20.256 1 (EURUSD,M5) CExpertBase::SetOtherSeries: changing of timeseries is forbidden

2017.09.06 00:31:20.256 1 (EURUSD,M5) CExpertBase::InitIndicators: parameters of setting are not checked

2017.09.06 00:31:20.256 1 (EURUSD,M5) CExpert::InitIndicators: error initialization indicators of trailing object

2017.09.06 00:31:20.256 1 (EURUSD,M5) OnInit: error initializing indicators

Возможно он устарел, где взять новый или что исправить в этом?

Внесите изменение в модуль трейлинга "sampleTrailing.mqh":

//+------------------------------------------------------------------+
//| Проверка параметров настройки.                                   |
//| INPUT:  нет.                                                     |
//| OUTPUT: true-если настройки правильные, иначе false.             |
//| REMARK: нет.                                                     |
//+------------------------------------------------------------------+
bool CSampleTrailing::ValidationSettings()
  {
   if(!CExpertTrailing::ValidationSettings())
      return(false);
//--- а вдруг не вызывался метод Init
   if(m_symbol==NULL) return(false);
//--- проверка параметров
   if((m_profit-m_stop_level)*m_adjusted_point<=m_symbol.StopsLevel()*m_symbol.Point() && m_profit!=0.0)
     {
      printf(__FUNCTION__+": уровень пороговой прибыли должен быть больше уровня установки ордеров");
      return(false);
     }
//--- ok
   return(true);
  }
 
Andy:

При использовании указанного в статье модуля выдаются ошибки в журнале эксперта во время загрузки советника на график:


Возможно он устарел, где взять новый или что исправить в этом?

Спасибо за сообщение, статью поправили

 
Andy:

При открытой позиции шорт и установке в параметрах обычного стоплосса (не трейлинга) в 0, не устанавливается трейлинг стоп в безубыток, а если чуть сдвинуть обычный стоп и задать ему хотя бы -1 пипс - то все работает. В лонге все работает нормально. В проверке условия, что уже есть безубыток (стоп меньше цены), изначально 0 в значении стопа и он не пускает дальше.


Всё верно. Именно указанный Stop Loss является спусковым крючком для работы ДАННОГО модуля трейлинга в безубыток. То есть предполагается, что позиция ДОЛЖНА иметь stop loss изначально.


Добавлено:

цель любой статьи - показать и ознакомить с подходами решения какой-то проблемы. Дальше уже пользователь сам должен на основании полученных знаний развивать свой код.

 
Andy:

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

(У меня пуш уведомление пришло на 2 Ваших сообщения, но одного нет - удалили)?


Если нужно что-то изменить - это уже не данной статьи проблема. Тут Вы дальше сами, на основе полученных знаний. То есть если Вы хотите составить Техническое Задание и думаете, что под него будет переписываться статья - то это не так.

Как я вижу Ваши действия: переписываете модуль (немного изменяете) и пользуетесь.


Добавлено: В ПОСЛЕДНИЙ РАЗ УБЕДИТЕЛЬНО ПРОШУ ПОЛЬЗОВАТЬСЯ КНОПКОЙ "ОТВЕТИТЬ". В противном случае отвечать не буду.

 
Andy:

Хорошо, да я сам напишу. А сообщение одно свое удалили (скажите, если да, чтобы я не искал)?


Вы можете открыть новую тему, что-то вроде "Модуль сопровождения открытых позиций в безубыток" - думаю такой тема будет полезна.

Таки да, я редактировал своё сообщение и ткнул ошибочно на "удалить" - то есть по факту я написал ДВА сообщения и одно удалил. Поэтому push прилетели верно.

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