panamamike Posted December 31, 2014 Report Share Posted December 31, 2014 I have an indicator that I use as part of a 4 hour trading strategy. I would like to add alerts to it including email alerts. If someone could add that for me I would be very grateful. //+------------------------------------------------------------------+ //| MACD_arrows_v0.mq4 | //| SyDef Research | //+------------------------------------------------------------------+ #property copyright "SyDef Research" #property indicator_chart_window #property indicator_buffers 4 #property indicator_color1 Indigo #property indicator_color2 Red #property indicator_color3 SlateGray #property indicator_color4 SlateGray /* #property indicator_color5 MediumBlue #property indicator_color6 Maroon #property indicator_color7 Lime #property indicator_color8 Red */ //------------------------------- // Input parameters: //------------------------------- extern int FastMACD = 12; extern int SlowMACD = 26; extern int SignalMACD = 5; extern int space = 4; //------------------------------- // Buffers //------------------------------- double ExtMapBuffer1[]; double ExtMapBuffer2[]; double ExtMapBuffer3[]; double ExtMapBuffer4[]; /* double ExtMapBuffer5[]; double ExtMapBuffer6[]; double ExtMapBuffer7[]; double ExtMapBuffer8[]; */ //------------------------------- // Internal variables //------------------------------- double my_Point; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { // Buffers and style SetIndexStyle(0, DRAW_ARROW, 0, 2); SetIndexArrow(0, 217); SetIndexBuffer(0, ExtMapBuffer1); SetIndexStyle(1, DRAW_ARROW, 0, 2); SetIndexArrow(1, 218); SetIndexBuffer(1, ExtMapBuffer2); SetIndexStyle(2, DRAW_ARROW, 0, 0); SetIndexArrow(2, 222); SetIndexBuffer(2, ExtMapBuffer3); SetIndexStyle(3, DRAW_ARROW, 0, 0); SetIndexArrow(3, 221); SetIndexBuffer(3, ExtMapBuffer4); /* SetIndexStyle(4, DRAW_ARROW, 0, 2); SetIndexArrow(4, 228); SetIndexBuffer(4, ExtMapBuffer5); SetIndexStyle(5, DRAW_ARROW, 0, 2); SetIndexArrow(5, 230); SetIndexBuffer(5, ExtMapBuffer6); SetIndexStyle(6, DRAW_ARROW, 0, 0); SetIndexArrow(6, 221); SetIndexBuffer(6, ExtMapBuffer7); SetIndexStyle(7, DRAW_ARROW, 0, 0); SetIndexArrow(7, 222); SetIndexBuffer(7, ExtMapBuffer8); */ switch ( Digits ) { case 3: my_Point = Point * 10; case 4: my_Point = Point; case 5: my_Point = Point * 10; } // Data window IndicatorShortName("MACD_arrows"); SetIndexLabel(0, "Main UP signal"); SetIndexLabel(1, "Main DOWN signal"); SetIndexLabel(2, "Aux down signal"); SetIndexLabel(3, "Aux up signal"); return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { Comment(""); return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int limit; int counted_bars = IndicatorCounted(); // check for possible errors if(counted_bars < 0) return(-1); //last counted bar will be recounted if ( counted_bars > 0 ) counted_bars--; limit = Bars - counted_bars; // Check the signal for each bar for( int i = limit; i >= 0; i-- ) { // Classic MACD values double macd_signal_0 = iMACD( NULL, 0, FastMACD, SlowMACD, SignalMACD, PRICE_CLOSE, MODE_SIGNAL, i ); double macd_signal_1 = iMACD( NULL, 0, FastMACD, SlowMACD, SignalMACD, PRICE_CLOSE, MODE_SIGNAL, i + 1 ); double macd_main_0 = iMACD( NULL, 0, FastMACD, SlowMACD, SignalMACD, PRICE_CLOSE, MODE_MAIN, i ); double macd_main_1 = iMACD( NULL, 0, FastMACD, SlowMACD, SignalMACD, PRICE_CLOSE, MODE_MAIN, i + 1 ); // Green arrow - MACD < 0 and crossed signal from below to above if ( ( macd_main_0 < 0 ) && ( ( macd_main_1 < macd_signal_1 ) && ( macd_main_0 > macd_signal_0 ) ) ) ExtMapBuffer1 = Low - space * my_Point; else ExtMapBuffer1 = 0; // Red arrow - MACD > 0 and crossed signal from above to below if ( ( macd_main_0 > 0 ) && ( ( macd_main_1 > macd_signal_1 ) && ( macd_main_0 < macd_signal_0 ) ) ) ExtMapBuffer2 = High + space * my_Point; else ExtMapBuffer2 = 0; // Yellow arrow - MACD < 0 and crossed signal from above to below if ( ( macd_main_0 < 0 ) && ( ( macd_main_1 > macd_signal_1 ) && ( macd_main_0 < macd_signal_0 ) ) ) ExtMapBuffer3 = High + space * my_Point; else ExtMapBuffer3 = 0; // Yellow arrow - MACD > 0 and crossed signal from below to above if ( ( macd_main_0 > 0 ) && ( ( macd_main_1 < macd_signal_1 ) && ( macd_main_0 > macd_signal_0 ) ) ) ExtMapBuffer4 = Low - space * my_Point; else ExtMapBuffer4 = 0; } return(0); } //+------------------------------------------------------------------+ Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.