Оценить:
 Рейтинг: 0

Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5

Год написания книги
2016
<< 1 ... 13 14 15 16 17 18 19 20 21 ... 30 >>
На страницу:
17 из 30
Настройки чтения
Размер шрифта
Высота строк
Поля

double PSARBuffer [];

int EMA34HHandle;

int EMA34LHandle;

int EMA125Handle;

int PSARHandle;

В функции OnInit () для первого графического построения определим тип стрелки – стрелка вверх, пустое значение и сдвиг:

int OnInit ()

{

PlotIndexSetInteger (0,PLOT_ARROW,233);

PlotIndexSetDouble (0,PLOT_EMPTY_VALUE,0);

PlotIndexSetInteger (0,PLOT_ARROW_SHIFT, -10);

Для второго графического построения определим тип стрелки – стрелка вниз, пустое значение и сдвиг:

PlotIndexSetInteger (1,PLOT_ARROW,234);

PlotIndexSetDouble (1,PLOT_EMPTY_VALUE,0);

PlotIndexSetInteger (1,PLOT_ARROW_SHIFT,10);

Свяжем массивы с буферами индикатора:

SetIndexBuffer (0,IKBuyBuffer, INDICATOR_DATA);

SetIndexBuffer (1,ColorIKBuyBuffer, INDICATOR_COLOR_INDEX);

SetIndexBuffer (2,IKSellBuffer, INDICATOR_DATA);

SetIndexBuffer (3,ColorIKSellBuffer, INDICATOR_COLOR_INDEX);

SetIndexBuffer (4,EMA34HBuffer, INDICATOR_CALCULATIONS);

SetIndexBuffer (5,EMA34LBuffer, INDICATOR_CALCULATIONS);

SetIndexBuffer (6,EMA125Buffer, INDICATOR_CALCULATIONS);

SetIndexBuffer (7,PSARBuffer, INDICATOR_CALCULATIONS);

Получим хэндлы используемых индикаторов:

EMA34HHandle=iMA (NULL,0,34,0,MODE_EMA, PRICE_HIGH);

EMA34LHandle=iMA (NULL,0,34,0,MODE_EMA, PRICE_LOW);

EMA125Handle=iMA (NULL,0,125,0,MODE_EMA, PRICE_CLOSE);

PSARHandle=iSAR (NULL,0,0.02, 0.2);

В функции OnCalculate () произведем проверку размера доступной истории для расчета используемых индикаторов, определим количество копируемых значений используемых индикаторов и определим стартовую позицию расчета индикатора:

int values_to_copy;

int start;

int calculated=BarsCalculated (EMA34HHandle);

if (calculated <=0)

{

return (0);

}

if (prev_calculated==0 || calculated!=bars_calculated)

{

start=1;

if (calculated> rates_total) values_to_copy=rates_total;

else values_to_copy=calculated;

}

else

{

start=rates_total-1;

values_to_copy=1;

}

Переменную bars_calculated определим как глобальную int bars_calculated=0; в свойствах индикатора.

Далее произведем копирование из буферов используемых индикаторов в массивы буферов нашего индикатора:
<< 1 ... 13 14 15 16 17 18 19 20 21 ... 30 >>
На страницу:
17 из 30