Помогите с индикатором по свечам

 

Добрый день всем !

Взял индикатор по свечам из этой статьи:

http://repository.crimea.edu/jspui/bitstream/123456789/2043/1/022_bez-1.pdf

Но до конца составить не могу,вот код:

//+------------------------------------------------------------------+
//|                                               analiz candles.mq4 |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 SteelBlue
#property indicator_color2 Orange
//----indicator buffers
double ExtMapBufferUP[];
double ExtMapBufferDOWN[];
//Затем объявляются параметры, которые могут изменяться пользователем (уровни
//подтверждения паттерна и уровень рыночного спрэда):
//----indicator parameters
extern double sprad, HighTen,LowTen,Body;
double draw_begin=10;

extern int Filter=50;
extern bool UseSpread=true;
//Инициализация индикатора происходит соответствующей функцией, в которой описывается
//название и разрядность индикатора, стиль выводимых значений:
int init() {
//----indicator short name
IndicatorShortName("Price Action Patterns");
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
//----drawing settings
SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,1);
SetIndexArrow(0,SYMBOL_ARROWUP);
SetIndexShift(0,0);
SetIndexDrawBegin(0,draw_begin);
SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,1);
SetIndexArrow(1,SYMBOL_ARROWDOWN);
SetIndexShift(1,0);
SetIndexDrawBegin(1,draw_begin);
//----indicator buffers mapping
SetIndexBuffer(0,ExtMapBufferUP);
SetIndexBuffer(1,ExtMapBufferDOWN);
//----initialization done
return(0); }
//Анализ паттернов реализован следующим образом.
//1.Определены переменные отражающие характеристики паттерна:
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[])
  {
  //--- prevent total recalculation
   int i=rates_total-prev_calculated-1;
string PatternName="",PatternDiv="";
//2. Определены направления теней для пин-бара:
if (Open[i+1]<Close[i+1]) { HighTen=High[i+1]-Close[i+1]; Body=Close[i+1]-Open[i+1];
LowTen=Open[i+1]-Low[i+1]; }
if (Open[i+1]>Close[i+1]) { HighTen=High[i+1]-Open[i+1]; Body=Open[i+1]-Close[i+1];
LowTen=Close[i+1]-Low[i+1];}
//3. В соответствии с описанными методами определения паттернов анализируются данные:
// __PinBar__
if (High[i+1]>High[i+2] && High[i+1]>High[i+3] && High[i+1]>High[i+4] &&
Close[i+1]<High[i+2] && HighTen/Body>2 && HighTen>LowTen) { PatternName="dPB";
PatternDiv="down"; }
if (Low[i+1]<Low[i+2] && Low[i+1]<Low[i+3] && Low[i+1]<Low[i+4] &&
Close[i+1]>Low[i+2] && LowTen/Body>2 && HighTen<LowTen) { PatternName="uPB";
PatternDiv="up"; }
// __Thrust__
if (High[i+1]>High[i+2] && Close[i+1]<Low[i+2]) { PatternName="dTR"; PatternDiv="down"; }
if (Low[i+1]<Low[i+2] && Close[i+1]>High[i+2]) { PatternName="uTR"; PatternDiv="up"; }
//4. Определяется спрэд, выводится название паттерна и стрелка с прогнозируемым
//направлением движения цены:
if (UseSpread) { sprad=MarketInfo( Symbol(), MODE_SPREAD); } else { sprad=0; }
if (PatternDiv=="down") { OutText( StringConcatenate( "PA_Pattern_",Time[i+1]),PatternName,High[i+1]+30*Point,i+1,Red);}
if (PatternName=="dPB") { ExtMapBufferDOWN[i] =Low[i+1]-sprad*Point-Filter*Point; }
if (PatternName=="dTR") { ExtMapBufferDOWN[i] =Low[i+1]-sprad*Point-Filter*Point; }

if (PatternDiv=="up") { OutText( StringConcatenate( "PA_Pattern_",Time[i+1]), PatternName,Low[i+1]-10*Point, i+1,Blue);}
if (PatternName=="uPB") { ExtMapBufferUP[i]= High[i+1]+sprad*Point+Filter*Point; }
if (PatternName=="uTR") { ExtMapBufferUP[i]= High[i+1]+sprad*Point+Filter*Point; }
return(rates_total);
}

Не компилируется.Кому не сложно подскажите,спасибо за внимание! 
 
'OutText' - function not defined s.mq4 98 29

 
Где ошибка то в коде? Как доработать чтоб видно было индюк на графике?
 
pistolet:
Где ошибка то в коде? Как доработать чтоб видно было индюк на графике?

Выше ведь указали на ошибку уже - в коде нет функции 'OutText', которую скрипт вызывает в строках 98 и 102, надо или убрать вызов этой функции, или написать её...
 

Вроде заработало,есть стрелки на графике GBPUSDm.


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