//-------------------------------------------------------------------- // ravi.mq4 //--------------------------------------------------------------- 1 -- #property copyright "Copyright © Roman Shiredchenko, 2009" //-------------------------------------------------------------------- #property indicator_separate_window #property indicator_buffers 1 // Количество буферов #property indicator_color1 Blue // Цвет линии 0 буфера #property indicator_level1 1 #property indicator_level2 -1 //--------------------------------------------------------------- 2 -- //---- indicator parameters extern int History =5000; // Колич.баров в расчётной истории extern int Period1=7; extern int Period2=65; double Line_0[]; // Инд. массив ravi //--------------------------------------------------------------- 4 -- int init() // Специальная функция init() { SetIndexBuffer(0,Line_0); // Назначение массива буферу SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Стиль линии IndicatorShortName("ravi_base"); //--------------------------------------------------------------- 5 -- return; // Выход из спец. функции init() } //--------------------------------------------------------------- 8 -- int start() // Специальная функция start() { //--------------------------------------------------------------- 9 -- double SMA1, SMA2; // 2 МА для расчета значений индикатора // формyла (SMA1-SMA2)*100)/SMA2; int i, // Индекс бара n, // Формальн. параметр(индекс бара) Counted_bars; // Количество просчитанных баров //-------------------------------------------------------------- 10 -- Counted_bars=IndicatorCounted(); // Количество просчитанных баров i=Bars-Counted_bars-1; // Индекс первого непосчитанного if (i>History-1) // Если много баров то .. i=History-1; // ..рассчитывать заданное колич. //-------------------------------------------------------------- 11 -- while(i>=0) // Цикл по непосчитанным барам { //-------------------------------------------------------- 12 -- SMA1=iMA(NULL,0,Period1,0,MODE_SMA,PRICE_CLOSE,i); // Значение МА1 SMA2=iMA(NULL,0,Period2,0,MODE_SMA,PRICE_CLOSE,i); // Значение МА2 Line_0[i] =0; if (SMA2>0) Line_0[i] = ((SMA1-SMA2)*100)/SMA2; // Индик. массив линии ravi //-------------------------------------------------------- 13 -- i--; // Расчёт индекса следующего бара //-------------------------------------------------------- 14 -- } return; // Выход из спец. ф-ии start() } //-------------------------------------------------------------- 15 --