Обсуждение статьи "Рецепты MQL5 - Торговые сигналы пивотов"

 

Опубликована статья Рецепты MQL5 - Торговые сигналы пивотов:

В статье представлен процесс разработки и реализации класса-сигнальщика на основе пивотов — разворотных уровней. На базе этого класса строится стратегия с использованием Стандартной библиотеки. Рассматриваются возможности развития стратегии пивотов посредством добавления фильтров.

Итак, визуально индикатор выглядит как набор горизонтальных уровней, строящихся по разным ценам. Первый запуск индикатора на график построит уровни только для текущего дня (рис.1).


Рис.1 Индикатор пивотов: отрисовка для текущего дня

Рис. 1 Индикатор пивотов: отрисовка для текущего дня


Автор: Dennis Kirichenko

 
Делал такое, в итоге чисто по пивотам получается монетка, нужно чем-то разбавлять и фильтровать более эффективно :)
 
Maxim Dmitrievsky:
Делал такое, в итоге чисто по пивотам получается монетка, нужно чем-то разбавлять и фильтровать более эффективно :)

Вспомнился анекдот.

- Доктор, мой сосед, ему уже 70, говорит, что за ночь может пять раз.


- Откройте рот. Так, язык на месте... Что вам мешает говорить то же самое?

 
MetaQuotes Software Corp.:

Опубликована статья Рецепты MQL5 - Торговые сигналы пивотов:

Автор: Dennis Kirichenko


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


А также в SignalPivots.mqh из папки Model есть расхождение в LongCondition и ShortCondition:

//+------------------------------------------------------------------+
//| Проверка условия на покупку                                      |
//+------------------------------------------------------------------+
int CSignalPivots::LongCondition(void)
  {
   int result=0;
//--- если Модель 0 учитывается
   if(IS_PATTERN_USAGE(0))
      //--- если Модель 0 не отработана
      if(!m_pattern_0_done)
        {
         m_is_signal=false;
         //--- если день открылся ниже пивота
         if(m_daily_open_pr<m_pivot_val)
           {
            //--- максимальная цена на прошлом баре
            double last_high=m_high.GetData(1);
            //--- если цена получена
            if(last_high>WRONG_VALUE && last_high<DBL_MAX)
               //--- если было касание снизу (с учётом допуска)
               if(last_high>=(m_pivot_val-m_pnt_near))
                 {
                  result=m_pattern_0;
                  m_is_signal=true;
                  //--- в Журнал
                  this.Print(last_high,ORDER_TYPE_BUY);
                 }
           }
         //--- если Модель 1 учитывается
         if(IS_PATTERN_USAGE(1))
           {
            //--- если на прошлом баре был бычий тренд
            if(m_trend_val>0. && m_trend_val!=EMPTY_VALUE)
              {
               //--- если есть ускорение
               if(m_trend_color==0. && m_trend_color!=EMPTY_VALUE)
                  result+=(m_pattern_1+m_speedup_allowance);
               //--- если нет ускорения
               else
                  result+=(m_pattern_1-m_speedup_allowance);
              }
           }
        }
//---
   return result;
  }
//+------------------------------------------------------------------+
//| Проверка условия на продажу                                      |
//+------------------------------------------------------------------+
int CSignalPivots::ShortCondition(void)
  {
   int result=0;
//--- если Модель 0 учитывается
   if(IS_PATTERN_USAGE(0))
      //--- если Модель 0 не отработана
      if(!m_pattern_0_done)
        {
         //--- если день открылся выше пивота
         if(m_daily_open_pr>m_pivot_val)
           {
            //--- минимальная цена на прошлом баре
            double last_low=m_low.GetData(1);
            //--- если цена получена
            if(last_low>WRONG_VALUE && last_low<DBL_MAX)
               //--- если было касание сверху (с учётом допуска)
               if(last_low<=(m_pivot_val+m_pnt_near))
                 {
                  result=m_pattern_0;
                  m_is_signal=true;
                  //--- в Журнал
                  this.Print(last_low,ORDER_TYPE_SELL);
                 }
           }
         //--- если Модель 1 учитывается
         if(IS_PATTERN_USAGE(1))
           {
            //--- если на прошлом баре был медвежий тренд
            if(m_trend_val<0. && m_trend_val!=EMPTY_VALUE)
              {
               //--- если есть ускорение
               if(m_trend_color==0. && m_trend_color!=EMPTY_VALUE)
                  result+=(m_pattern_1+m_speedup_allowance);
               //--- если нет ускорения
               else
                  result+=(m_pattern_1-m_speedup_allowance);
              }
           }
        }
//---
   return result;
  }
 
Igor Nistor:


А также в SignalPivots.mqh из папки Model есть расхождение в LongCondition и ShortCondition:


Оно мнимое :-)

Просто сбрасывается флаг в методе CSignalPivots::LongCondition(), т.к. он вызывается первым.

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

От Вас нужны подробности. Брокер, тип счёта, настройки советника и Тестера.

У себя такого поведения не замечал...

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