//***********************************************************************// //***********************************************************************// //* Moving_Average_CD(BS).mq4 *// //* Copyright © 2009, BACKSPACE *// //* Updating from 27.02.2010 *// //***********************************************************************// //***********************************************************************// //* Торгуй тренды *// //* Уменьшай потери *// //* Давай прибыли расти *// //* Управляй рисками *// //***********************************************************************// //***********************************************************************// #property copyright "Copyright © 2009, BACKSPACE" // #property link "Updating from 27.02.2010" // // #property indicator_separate_window // #property indicator_buffers 2 // #property indicator_color1 Blue // #property indicator_color2 Red // //******************// Ввод параметров индикатора extern int FastPeriod=12; // - период Fast Moving Average extern int SlowPeriod=26; // - период Slow Moving Average extern int SignalPeriod=9; // - период Signal Moving Average extern double MARound=5; // - коэффициент округления //******************// Составные части индикатора double MACD[], // - Moving Average CD SignalMA[], // - Signal Moving Average MACDAle[], // - Slow Alert MACDRond[]; // - Slow Ronding Off //******************// Глобальные переменные int Counter, // - счётчик баров FaPer, // - период Fast Moving Average SlPer, // - период Slow Moving Average SiPer; // - период Signal Moving Average double MaRo; // - коэффициент округления //***********************************************************************// //**********************-Indicator Initialization-***********************// //***********************************************************************// // int init() // { //******************// Настройки графического отображения IndicatorBuffers(4); // SetIndexLabel(0,"MACDRond"); // SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2); // SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexBuffer(0,MACDRond); // SetIndexLabel(1,"SignalMA"); // SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2); // SetIndexBuffer(1,SignalMA); // SetIndexBuffer(2,MACD); // SetIndexBuffer(3,MACDAle); // // //******************// Проверка периода индикатора if(FastPeriod>=1 && FastPeriod<=48) // FaPer=FastPeriod; // else // FaPer=12; // if(SlowPeriod>=1 && SlowPeriod<=120) // SlPer=SlowPeriod; // else // SlPer=26; // if(SignalPeriod>=1 && SignalPeriod<=22) // SiPer=SignalPeriod; // else // SiPer=9; // //******************// Проверка величины округления if(MARound>=0 && MARound<=50) // MaRo = Point*MARound; // else // MaRo = Point*5; // //*********// return(0); // } // // //***********************************************************************// //**************************-Moving_Average_CD-**************************// //***********************************************************************// // int start() // { // //******************// Проверка работы индикатора if(FaPer>Bars||SlPer>Bars||SiPer>Bars||MaRo>Bars) // { // Alert("Недостаточно информации для работы индикатора."); // return(0); // } // int counted_bars = IndicatorCounted(); if(counted_bars < 0) return(-1); if(counted_bars > 0) counted_bars--; int limit = Bars - counted_bars; if(counted_bars==0) limit--; for(int macd=limit-1; macd>=0; macd--) // { // Moving_Average_CD(macd); //******************// Moving Average CD MACD_Rounding_Off(macd); //******************// MACD Rounding Off } // for(int sima=limit-1; sima>=0; sima--) // { // SignalMA[sima]=iMAOnArray(MACD,Bars,SiPer,0,MODE_SMA,sima); // } // //*********// return(0); // } // // //***********************************************************************// //******************************-SubPogramms-****************************// //***********************************************************************// // //***********************************// Moving Average CD double Moving_Average_CD(int ma) // { // MACD[ma]=iMA(NULL,0,FaPer,0,MODE_EMA,PRICE_CLOSE,ma)- // iMA(NULL,0,SlPer,0,MODE_EMA,PRICE_CLOSE,ma); // //*********// return(0); // } // // //***********************************// MACD Rounding Off double MACD_Rounding_Off(int mro) // { // if(MACD[mro]>MACD[mro+1]+MaRo|| // MACD[mro]MACDRond[mro+1]+MaRo|| // MACD[mro]MACDRond[mro+1] && MACDAle[mro+1]==1)|| // (MACD[mro]MACDRond[mro+1]) MACDAle[mro]=1; // if(MACDRond[mro]==MACDRond[mro+1])MACDAle[mro]=MACDAle[mro+1]; // //*********// return(0); // } // // //***********************************************************************// //********************************************************************BS*// //***********************************************************************//