По следам статьи "Изучаем классы торговых стратегий из Стандартной Библиотеки - Пользовательские стратегии"

 

Всем доброго времени!

Собственно в статье https://www.mql5.com/ru/articles/488

Описана модификация файла SignalCCI.mqh...

//+------------------------------------------------------------------+
//| Constructor CSignalCCIxx.                                        |
//| INPUT:  no.                                                      |
//| OUTPUT: no.                                                      |
//| REMARK: no.                                                      |
//+------------------------------------------------------------------+
void CSignalCCIxx::CSignalCCIxx()
  {
//--- initialization of protected data
   m_used_series=USE_SERIES_HIGH+USE_SERIES_LOW;
//--- setting default values for the oscillator parameters
   m_periodCCIxx  =14;
//--- setting default "weights" of the market models
   m_pattern_0  =90;         // model 0 "the oscillator has required direction"
   m_pattern_1  =60;         // model 1 "reverse behind the level of overbuying/overselling"
   m_pattern_2  =100;        // model 2 "divergence of the oscillator and price"
   m_pattern_3  =50;         // model 3 "double divergence of the oscillator and price"
   m_pattern_4  =90;         // model 4 "our own first new pattern: "
   m_pattern_5  =90;         // model 5 "our own second new pattern: 
}

Цитата из статьи: "Мы присвоили значение 90 переменным m_pattern_4 и m_pattern_5, но вам необходимо подобрать свои значения: это веса для новых рыночных моделей и они целиком и полностью влияют на все торговое поведение советника."

ОК, генерирую советника, указываю ему модифицированную библиотеку:

#include <Expert\Signal\SignalMACD_extra.mqh>

В библиотеке модифицирую "веса":

CSignalMACD::CSignalMACD(void) : m_period_fast(12),
                                 m_period_slow(24),
                                 m_period_signal(9),
                                 m_applied(PRICE_CLOSE),
                                 m_pattern_0(0),
                                 m_pattern_1(100),
                                 m_pattern_2(0),
                                 m_pattern_3(0),
                                 m_pattern_4(0),
                                 m_pattern_5(0)

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

https://www.mql5.com/ru/docs/standardlibrary/expertclasses/csignal/signal_macd

Однако торговля по ходу происходит по любому из паттернов... Почему?


 

Ну вобщем заставил я эту штуковину (страшным костылем) генерировать нужные мне сигналлы... Не торговать, а всего-лишь генерировать сигналлы (что мне и нужно было изначатьно!)

Но вот всплыл не очень хороший момент (покрайней мере для меня) Паттерн "Дивергенция"герерирует сигнал не со следующего бара (после собственно дивергенции), а через один бар... Но в принципе на картинке по ссылке выше так и обозначено... Для всех паттернов со следующего бара, а для "дивергенции" и "двойной дивергенции" через бар! Печально... Придется наверное просто "с нуля" написать свои сигналлы, несколько попозже...

 
Delta.800 #:

Но вот всплыл не очень хороший момент (покрайней мере для меня) Паттерн "Дивергенция"герерирует сигнал не со следующего бара (после собственно дивергенции), а через один бар... Но в принципе на картинке по ссылке выше так и обозначено... Для всех паттернов со следующего бара, а для "дивергенции" и "двойной дивергенции" через бар! Печально... Придется наверное просто "с нуля" написать свои сигналлы, несколько попозже...

для дивергенции нужна идентификация локального максимума/минимума -- это минимум трёх барная конструкция (бар до, максимум, бар после) -- поэтому сигнал по дивергенции минимум через 1 бар

 
Andrey F. Zelinsky #:

для дивергенции нужна идентификация локального максимума/минимума -- это минимум трёх барная конструкция (бар до, максимум, бар после) -- поэтому сигнал по дивергенции минимум через 1 бар

ААА, точно! СПС!
Причина обращения: