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

 

здравствуйте владимир,


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

 
Tafadzwa Nyamwanza :

Здравствуйте, Владимир,


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

Вы уверены, что ваш вопрос относится к статье MQL5 Wizard: How to Teach an EA to Open Pending Orders at Any Price?

 
Привет, Владимир.

Я знаю, что эта статья об отложенных ордерах, но как вы программируете своего эксперта на открытие рыночного ордера?

 
Ayanda Mhlauli:
Привет, Владимир.

Я знаю, что эта статья об отложенных ордерах, но как вы программируете своего эксперта на открытие рыночного ордера?

input double             Signal_PriceLevel         =0.0;         // Уровень цены для совершения сделки
 
Разве не достаточно вызвать PriceLevel() непосредственно внутри генератора сигналов, зачем передавать указатель *signal в генератор сигналов?
 

Привет @Владимир Карпутов - это была очень поучительная статья, спасибо за нее!

Лично я нахожу этот ООП фреймворк в MQL5 довольно интересным для создания ботов путем компоновки объектов, представляющих экспертов, сигналы, фильтры, индикаторы, риск-менеджеров и так далее - очень элегантный подход, на мой взгляд, так как он способствует повторному использованию кода и расширяемости без видимого ущерба для мощности... однако из-за его сложности кривая обучения кажется довольно крутой.

В любом случае, поскольку я перехожу исключительно на MQL5 и имею хороший опыт в концепциях/языках ООП, я очень хочу адаптировать его для собственного использования в прототипировании новых торговых идей и разработке торговых систем. Я изучал и играл с кодом библиотеки и хотел узнать, как вы рекомендуете поступить в следующих случаях:

ВОПРОС: Как бы вы интегрировали трендовый фильтр для сигналов, получаемых в эксперте?

В библиотеке есть свойство CExpertBase::m_trend_type, но, к сожалению, оно нигде не используется в примерах, поставляемых с платформой. Я разрываюсь между двумя вариантами дизайна... Добавить объект фильтрации трендов непосредственно в мой подкласс CExpert (см. фрагмент кода ниже), который мог бы предложить больше контроля над принятием торговых решений на уровне эксперта. Другой способ решения проблемы может заключаться в том, чтобы возиться с фильтрами моего основного объекта сигнала и каким-то образом вычислять тренд и принимать решение внутри моего подкласса CSignalExpert, например, внутри CSignalWithTrendFilter::Direction(). Пока не совсем понимаю, в чем преимущества и недостатки одного метода по сравнению с другим, и какой из них обеспечит мне большую гибкость для требований моих будущих проектов, т.е. большее повторное использование кода без усложнений и меньше переделок моих базовых классов.

class CExpertWithTrendFilter : public CExpert
{
protected:
   CExpertSignal    *m_trend;   // работайте параллельно с CExpert::m_signal для фильтрации генерируемых им сигналов
// ...
   virtual bool      Processing(void);
   virtual bool      CheckOpen(void);
// ...
};

bool CExpertWithTrendFilter::Processing(void)
{
   CExpertBase::m_trend_type = (ENUM_TYPE_TREND) m_trend.Direction();   // определяем текущий тренд на основе специализированного объекта, полученного из CExpertSignal
   
   m_signal.TrendType(m_trend_type);             // передайте тип/силу тренда в качестве входного сигнала в m_signal, также подклассифицированный из CExpertSignal
   m_signal.SetDirection();                      // ВАРИАНТ №1 >>> вычислить направление сигнала, возможно, принимая во внимание (или нет) тренд, установленный выше

// ...

   if(CheckOpen())                               // ВАРИАНТ №2 >>> в качестве альтернативы, тип/силу тренда может проверить эксперт перед открытием длинной или короткой позиции
      return(true);

   retun(false);                                 // возврат без каких-либо операций
}

bool CExpertWithTrendFilter::CheckOpen(void)
{
   if(m_trend_type > TYPE_TREND_FLAT && CheckOpenLong())    // разрешаем открывать длинные позиции, только если направление трендового фильтра совпадает
      return(true);
   if(m_trend_type < TYPE_TREND_FLAT && CheckOpenShort())   // разрешаем открывать короткую позицию только в том случае, если направление трендового фильтра совпадает
      return(true);

   return(false);                                // возврат без каких-либо операций
}

Заранее спасибо за помощь и рекомендации.

 
Я давно перешел на свой торговый движок . Попытка разработать конструктор советника - он более гибкий.
An attempt at developing an EA constructor
An attempt at developing an EA constructor
  • www.mql5.com
In this article, I offer my set of trading functions in the form of a ready-made EA. This method allows getting multiple trading strategies by simply adding indicators and changing inputs.
 
Vladimir Karputov #:
Я давно перешел на свой торговый движок Попытка разработать конструктор советника - он более гибкий.

Хорошо, я понял - я читаю статью и посмотрю на приложенный код... в любом случае, я все равно буду благодарен за ваш комментарий/мнение по вопросу выше, если вы не против. Большое спасибо!

 
Dima Diall # :

Хорошо, я понял - я читаю статью и посмотрю на приложенный код... в любом случае, я был бы признателен за ваш комментарий/мнение по вопросу выше, если вы не возражаете. Большое спасибо!

CExpertSignal - это прошлое. Комментариев нет.

 
Vladimir Karputov #:

CExpertSignal - это прошлое. Комментариев нет.

:-)