Сandle parameters

 

Не скрою, что идею этого индикатора была подсмотрена в ветке 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Напишу индикатор бесплатно

enduard, 2017.03.14 14:41

Добрый день. 

П‌рошу помощи в создании индикатора. Нужен для тестов и проверки стратегии.

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

При обнаружении данной тени на графике выделить ее  и можно установить стрелку или точку.

И‌ндикатор обрабатывает данные только предыдущей свечи.

В‌ настройках задаем минимальное количество пипсов ( для фильтра ) и соответственно если тень получилась меньше заданного числа на предыдущей свече, то индикатор игнорирует ее, 

‌если тень получилась равной или больше, то отмечает ее и ставит стрелку, если образовалось две тени равной или больше заданного числа (и с верху, и с низу ), то индикатор опять

игнорирует ее.  Стрелки ставятся так - при появлении тени сверху свечи, стрелка устанавливается указывая на низ. При появлении тени с низу свечи, стрелка ставится указывая на верх.

Д‌анные должны появляться сразу по закрытию свечи.

В‌озможно такое сделать?


Но здесь возникла мысль: "А достаточно ли таких параметров? Может нужды другие параметры?".

В‌ общем начинаю ваять индикатор. На данный момент заявленный функционал поиска свечей по таким параметрам:

  • т‌ень верхняя есть/нет
  • тень нижняя есть/нет
свеча с подходящими параметрами отмечается стилем рисования индикатора DRAW_ARROW:

DRAW_ARROW

Документация по MQL5: Пользовательские индикаторы / Стили индикаторов в примерах / DRAW_ARROW
Документация по MQL5: Пользовательские индикаторы / Стили индикаторов в примерах / DRAW_ARROW
  • www.mql5.com
Пользовательские индикаторы / Стили индикаторов в примерах / DRAW_ARROW - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vladimir Karputov:

Не скрою, что идею этого индикатора была подсмотрена в ветке 


Но здесь возникла мысль: "А достаточно ли таких параметров? Может нужды другие параметры?".

В‌ общем начинаю ваять индикатор. На данный момент заявленный функционал поиска свечей по таким параметрам:

  • т‌ень верхняя есть/нет
  • тень нижняя есть/нет
свеча с подходящими параметрами отмечается стилем рисования индикатора DRAW_ARROW:


Там ещё было условие на минимальные расстояния - у вас их нет, поэтому такой плохой результат. Оптимально делать в процентах от величины свечи, к примеру так:

свеча не менее 15пп, верхняя тень 15%, нижняя 45% - синяя стрелка,

свеча не менее 15пп, верхняя тень 45%, нижняя 15% - красная стрелка

П‌араметры вынести в настройки

 
Vitaly Muzichenko:

Там ещё было условие на минимальные расстояния - у вас их нет, поэтому такой плохой результат. ***

Картинка вставлена из справки - просто для демонстрации, что такое стиль DRAW_ARROW :)

Vitaly Muzichenko:

*** Оптимально делать в процентах от величины свечи, к примеру так:

свеча не менее 15пп, верхняя тень 15%, нижняя 45% - синяя стрелка,

свеча не менее 15пп, верхняя тень 45%, нижняя 15% - красная стрелка

П‌араметры вынести в настройки

Пока будут просто параметры, как заявлено в (#1) - поиск свечи у которой нет верхней тени и/или нижней тени. Добавлен фильтр: при этом свеча должна иметь минимально заданный размер:

Сandle parameters inputs

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

Скриншоты торговой платформы MetaTrader

EURUSD, M1, 2017.03.15

MetaQuotes Software Corp., MetaTrader 5, Demo

Индикатор Сandle parameters

EURUSD, M1, 2017.03.15, MetaQuotes Software Corp., MetaTrader 5, Demo


‌Сам индикатор:

//+------------------------------------------------------------------+
//|                                            Сandle parameters.mq5 |
//|                              Copyright © 2017, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.000"

#property description "Индикатор поиска параметров свечи" 
#property description "Найденные свечи отмечаются символами из набора Wingdings" 

#property indicator_chart_window 
#property indicator_buffers 2 
#property indicator_plots   2 
//--- plot Arrows 
#property indicator_label1  "High" 
#property indicator_type1   DRAW_ARROW 
#property indicator_color1  clrBlue 
#property indicator_width1  1 
#property indicator_label2  "Low" 
#property indicator_type2   DRAW_ARROW 
#property indicator_color2  clrRed
#property indicator_width2  1 
//--- input параметры
sinput string  __1__             = "";          // Параметры верха свечи
input bool     IsTopShadow       = false;       // false -> верхней тени нет  
input ushort   top_shadow_code   = 226;         // Код символа верха свечи (32-255)
sinput string  __2__             = "";          // Параметр тела свечи
input ushort   min_size_candel   = 15;          // Минимальный размер тела свечи ()
sinput string  __3__             = "";          // Параметры низа свечи
input bool     IsLowerShadow     = false;       // false -> нижней тени нет  
input ushort   lower_shadow_code = 225;         // Код символа верха свечи (32-255)
sinput string  __4__             = "";          // Параметр смещения
input uchar    vertical_shift    = 15;          // Смещение стрелок по вертикали (0-255)
//--- индикаторные буфера для построения  
double         BufferTop[];
double         BufferLower[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping 
   SetIndexBuffer(0,BufferTop,INDICATOR_DATA);
   SetIndexBuffer(1,BufferLower,INDICATOR_DATA);
//--- зададим код символа для отрисовки в PLOT_ARROW 
   PlotIndexSetInteger(0,PLOT_ARROW,top_shadow_code);
   PlotIndexSetInteger(1,PLOT_ARROW,lower_shadow_code);
//--- зададим cмещение стрелок по вертикали в пикселях  
   PlotIndexSetInteger(0,PLOT_ARROW_SHIFT,-(int)vertical_shift);
   PlotIndexSetInteger(1,PLOT_ARROW_SHIFT,(int)vertical_shift);
//--- установим в качестве пустого значения 0 
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
   PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0);
//--- 
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   static datetime prev_time=0;
//--- работаем только в момент рождения нового бара, внутри бара не работаем
   if(prev_time==time[rates_total-1])
      return(rates_total);
//--- на новом баре запоминает время его рождения
   prev_time=time[rates_total-1];
//--- блок расчета значений индикатора 
   int start=1;
   if(prev_calculated>0)
      start=prev_calculated;
//--- цикл расчета 
   for(int i=start;i<rates_total;i++)
     {
      //--- если предыдущая свеча имеет тело больше минимального
      if(MathAbs(open[i-1]-close[i-1])/Point()>min_size_candel)
        {
         if(high[i-1]==open[i-1] || high[i-1]==close[i-1])
            BufferTop[i-1]=high[i-1];
         if(low[i-1]==open[i-1] || low[i-1]==close[i-1])
            BufferLower[i-1]=low[i-1];
        }
     }
//--- return value of prev_calculated for next call 
   return(rates_total);
  }
//+------------------------------------------------------------------+


‌Над другими параметрами свечи подумаю позже.

Документация по MQL5: Пользовательские индикаторы / Стили индикаторов в примерах / DRAW_ARROW
Документация по MQL5: Пользовательские индикаторы / Стили индикаторов в примерах / DRAW_ARROW
  • www.mql5.com
Пользовательские индикаторы / Стили индикаторов в примерах / DRAW_ARROW - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Файлы:
 

Candle parameters version   "1.001":

  • теперь входные параметры (искать или не искать свечи без верхней или без нижней тени) обрабатываются
  • дополнительно, в OnInit(), проверяется корректность входных параметров - если два параметра "отображать свечи без верхней/нижней тени" равны false, то индикатор останется на графике, но работать не будет и выдаст предупреждение (предупреждение будет во вкладке "Эксперты"):

Оба параметра "отображать свечи без верхней/нижней тени" равны false
Файлы:
 
Есть ли данный индикатор со встроенным алертом? 
 
jinxhjnkygy:
Есть ли данный индикатор со встроенным алертом? 

Нет, нету.

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