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

 

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

Генератор торговых стратегий Мастера MQL5 значительно упрощает проверку торговых идей. В статье рассказывается о том, как написать и подключить в Мастер MQL5 свой собственный модуль управления открытыми позициями, устанавливающий уровень Stop Loss в безубыток при движении цены в благоприятном направлении, что позволяет защитить прибыль и уменьшить потери. Рассматривается структура и формат описания созданного класса для Мастера MQL5.

Рисунок 1. Структура базового класса CExpert

Автор: MetaQuotes

 

помогите пожалуйста. как этот код использовать в советнике. допустим вот этом https://www.mql5.com/ru/articles/100

никак это ООП не доходит. помогите. покажите как этот код или трал вставить в свой советник. который создан без помощи мастера. Спасибо 

Пошаговое руководство по написанию MQL5-советников для начинающих
Пошаговое руководство по написанию MQL5-советников для начинающих
  • 2010.06.09
  • Samuel
  • www.mql5.com
Написание советников на MQL5 проще чем кажется, вы легко можете этому научиться. В этом руководстве вы познакомитесь с основными моментами, необходимыми для написания простого советника на основе конкретной торговой стратегии. Рассмотрена структура советника, использование встроенных технических индикаторов и торговых функций, вопросы отладки и тестирования советника на исторических данных.
 
Необходимо переписать советник в виде модуля торговых сигналов. Тогда к нему можно будет легко подцепить любой из существующих типов трейлинга.
Мастер MQL5: Создание эксперта без программирования
Мастер MQL5: Создание эксперта без программирования
  • 2010.12.15
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы хотите быстро проверить торговую идею, не тратя времени на программирование? Выберите в "Мастере MQL5" нужный тип торговых сигналов, подключите модули сопровождения позиций и управления капиталом - на этом вся работа закончена. Создайте свои реализации модулей или закажите их через сервис "Работа" - и комбинируйте новые модули с уже существующими.
 
Trolls:

помогите пожалуйста. как этот код использовать в советнике. допустим вот этом https://www.mql5.com/ru/articles/100

никак это ООП не доходит. помогите. покажите как этот код или трал вставить в свой советник. который создан без помощи мастера. Спасибо 

 

"этот код или трал вставить в свой советник", с учётом того, что "никак это ООП не доходит" не получится.

Модуль сопровождения открытых позиций написан с учётом особенностей его (модуля) взаимодействия с классом CExpert.

Теоретически, можно написать некую программную "прослойку", но это потребует знаний ООП и дополнительных усилий.

 

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

плохо, очень плохо, что эти стандартные классы, тот же алгоритм установки SL в без убыток, нельзя вставить допустим в код Николая Косицина https://www.mql5.com/ru/articles/105 или в советнике пошаговое руководство https://www.mql5.com/ru/articles/100.

Получается нужно писать все по новой, снова изобретать велосипед когда он вот готовый лежит (((

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

Создание эксперта, торгующего на разных инструментах
Создание эксперта, торгующего на разных инструментах
  • 2010.06.30
  • Nikolay Kositsin
  • www.mql5.com
Тема диверсификации активов на финансовых рынках стара, как мир и всегда привлекала к себе внимание всякого мало-мальски разбирающегося в этом деле трейдера. В данной статье автором предложен вариант максимально простого подхода для построения мультивалютного эксперта для первоначального знакомства с этим направлением торговых стратегий.
 
Trolls:

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

плохо, очень плохо, что эти стандартные классы, тот же алгоритм установки SL в без убыток, нельзя вставить допустим в код Николая Косицина https://www.mql5.com/ru/articles/105 или в советнике пошаговое руководство https://www.mql5.com/ru/articles/100.

Получается нужно писать все по новой, снова изобретать велосипед когда он вот готовый лежит (((

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

 

Невозможно создать класс, который можно использовать "например тут" или "допустим здесь". Класс содержит набор интерфейсов, которые можно использовать ОПРЕДЕЛЁННЫМ образом.

Если Вы хотите использовать готовый "велосипед", Вы просто ставите ноги на педали и крутите их (педали).

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

 
uncleVic:

Невозможно создать класс, который можно использовать "например тут" или "допустим здесь". Класс содержит набор интерфейсов, которые можно использовать ОПРЕДЕЛЁННЫМ образом.

Если Вы хотите использовать готовый "велосипед", Вы просто ставите ноги на педали и крутите их (педали).

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

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

Зачем по новой изобретать колесо, когда вот оно готовое лежит.

есть в статьях готовые велосипеды (советники я давал ссылку). помогите пользователю, покажите как правильно прикрутить созданные Вами стандартные классы к этим советникам...

 
Trolls:

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

Зачем по новой изобретать колесо, когда вот оно готовое лежит.

есть в статьях готовые велосипеды (советники я давал ссылку). помогите пользователю, покажите как правильно прикрутить созданные Вами стандартные классы к этим советникам...

Хорошо, попробую объяснить, но не "прямо сейчас".

Для начала, давайте определимся какой именно "этот код" Вы хотите использовать в советнике.

Потом, (не обещаю, что это будет выполняться в первоочередном порядке) будем тихо-тихо решать Ваши проблемы с прикручиванием.

 

Здравствуйте уважаемые друзья.В своем модуле сопровождения позиций использую простой алгоритм закрытия части позиции, и модификация стопа в безубыток.До не давнего времени модуль работал а с новыми обновлениями не работае,не может инициализовать функцию и ищет какой то индикатор хотя их там нет.При использовании того ж експерта с другими модулями трала  такой проблемы не возникает.Програмист который писал этот модуль сказал что надо обратится  к Вам , связано что то с обновлениями.Помогите пожалуйста решить вопрос. 

2012.02.02 12:14:38 Core 1 tester stopped because OnInit failed

Даже если генирировать експерт  с модулем  SampleTrailing.mqh та сама картина что делать ? 

Как заказать торгового робота на MQL5 и MQL4
Как заказать торгового робота на MQL5 и MQL4
  • 2010.06.18
  • MetaQuotes Software Corp.
  • www.mql5.com
С запуском сервиса "Работа" MQL5.community становится идеальным местом для размещения заказов и оказания услуг программирования. Тысячи трейдеров и разработчиков ежедневно посещают этот ресурс и с легкостью могут помочь друг другу. Для трейдера сервис "Работа" - это легкая возможность получить свой собственный эксперт. Для MQL5-разработчика это возможность легко найти новых клиентов. В данной статье мы рассмотрим возможности этого сервиса.
 
maxxttro:

Здравствуйте уважаемые друзья.В своем модуле сопровождения позиций использую простой алгоритм закрытия части позиции, и модификация стопа в безубыток.До не давнего времени модуль работал а с новыми обновлениями не работае,не может инициализовать функцию и ищет какой то индикатор хотя их там нет.При использовании того ж експерта с другими модулями трала  такой проблемы не возникает.Програмист который писал этот модуль сказал что надо обратится  к Вам , связано что то с обновлениями.Помогите пожалуйста решить вопрос. 

2012.02.02 12:14:38 Core 1 tester stopped because OnInit failed

Даже если генирировать експерт  с модулем  SampleTrailing.mqh та сама картина что делать ? 

Маловато информации:

2012.02.02 12:14:38 Core 1 tester stopped because OnInit failed

Кроме этого сообщения, в журнале есть ещё что-то. Возможно дело не в модуле трала, а в чём то ещё.

Чтобы это понять нужны исходники.

Поставьте заявку в сервисдеск и приложите исходники (они "умрут" вместе заявкой).

 

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

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

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

 

 //+------------------------------------------------------------------+
//|                                            TrailingFixedPips.mqh |
//|                   Copyright 2009-2013, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#include <Expert\ExpertTrailing.mqh>
// wizard description start
//+----------------------------------------------------------------------+
//| Description of the class                                             |
//| Title=Trailing with floating Stop Loss (Fox104)                       |
//| Type=Trailing                                                        |
//| Name=FixedPips                                                       |
//| Class=CTrailingFixedPips                                             |
//| Page=                                                                |
//| Parameter=StopLevel,int,30,Stop Loss trailing level (in points)      |
//| Parameter=ProfitLevel,int,50,Take Profit trailing level (in points)  |
//+----------------------------------------------------------------------+
// wizard description end
//+------------------------------------------------------------------+
//| Class CTrailingFixedPips.                                        |
//| Purpose: Class of trailing stops with fixed stop level in pips.  |
//|              Derives from class CExpertTrailing.                 |
//+------------------------------------------------------------------+
class CTrailingFixedPips : public CExpertTrailing
  {
protected:
   //--- input parameters
   int               m_stop_level;
   int               m_profit_level;

public:
                     CTrailingFixedPips(void);
                    ~CTrailingFixedPips(void);
   //--- methods of initialization of protected data
   void              StopLevel(int stop_level)     { m_stop_level=stop_level;     }
   void              ProfitLevel(int profit_level) { m_profit_level=profit_level; }
   virtual bool      ValidationSettings(void);
   //---
   virtual bool      CheckTrailingStopLong(CPositionInfo *position,double &sl,double &tp);
   virtual bool      CheckTrailingStopShort(CPositionInfo *position,double &sl,double &tp);
  };
//+------------------------------------------------------------------+
//| Constructor                                                      |
//+------------------------------------------------------------------+
void CTrailingFixedPips::CTrailingFixedPips(void)
  {
            m_stop_level = 30;
            m_profit_level = 50;
  }
//+------------------------------------------------------------------+
//| Destructor                                                       |
//+------------------------------------------------------------------+
CTrailingFixedPips::~CTrailingFixedPips(void)
  {
  }
//+------------------------------------------------------------------+
//| Validation settings protected data.                              |
//+------------------------------------------------------------------+
bool CTrailingFixedPips::ValidationSettings(void)
  {
   if(!CExpertTrailing::ValidationSettings())
      return(false);
//--- initial data checks
   if((m_profit_level-m_stop_level)*m_adjusted_point<=m_symbol.StopsLevel()*m_symbol.Point() && m_profit_level!=0.0)
     {
      printf(__FUNCTION__+": уровень пороговой прибыли должен быть больше уровня установки ордеров");
      return(false);
     }
//--- ok
   return(true);
  }
//+------------------------------------------------------------------+
//| Checking trailing stop and/or profit for long position.          |
//+------------------------------------------------------------------+
bool CTrailingFixedPips::CheckTrailingStopLong(CPositionInfo *position,double &sl,double &tp)
  {
//--- check
   if(position==NULL)
      return(false);
   if(m_stop_level==0)
      return(false);
//--- проверка параметра      
   if(m_profit_level==0.0)  return(false);
//--- уже в безубытке?
   double open=position.PriceOpen();
   if(position.StopLoss()>=open) return(false);
//--- проверка прибыли
   sl=EMPTY_VALUE;
   tp=EMPTY_VALUE;
   if(m_symbol.Bid()-open>m_profit_level*m_adjusted_point)
      sl=m_symbol.NormalizePrice(open+m_stop_level*m_adjusted_point);
//---
   return(sl!=EMPTY_VALUE);
  }
//+------------------------------------------------------------------+
//| Checking trailing stop and/or profit for short position.         |
//+------------------------------------------------------------------+
bool CTrailingFixedPips::CheckTrailingStopShort(CPositionInfo *position,double &sl,double &tp)
  {
//--- check
   if(position==NULL)
      return(false);
   if(m_stop_level==0)
      return(false);
//--- проверка параметра
   if(m_profit_level==0.0)  return(false);
//--- уже в безубытке?
   double open=position.PriceOpen();
   if(position.StopLoss()<=open) return(false);
//--- проверка прибыли
   sl=EMPTY_VALUE;
   tp=EMPTY_VALUE;
   if(open-m_symbol.Ask()>m_profit_level*m_adjusted_point)
      sl=m_symbol.NormalizePrice(open-m_stop_level*m_adjusted_point);
//---
   return(sl!=EMPTY_VALUE);
  }
//+------------------------------------------------------------------+

Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
Причина обращения: