• Home
  • Forums
  • Trades
  • News
  • Calendar
  • Market
  • Brokers
  • Login
  • Join
  • User/Email: Password:
  • 8:04am
Menu
  • Forums
  • Trades
  • News
  • Calendar
  • Market
  • Brokers
  • Login
  • Join
  • 8:04am
Sister Sites
  • Metals Mine
  • Energy EXCH
  • Crypto Craft

Options

Bookmark Thread

First Page First Unread Last Page Last Post

Print Thread

Similar Threads

VCustom3 help for adding some code 8 replies

Need help adding couple lines of code 3 replies

Help Please - Adding an Alert to this Indicator 4 replies

Adding an Alert after a trend change to this code 0 replies

Adding sound to Kaufman Average Cross Alert 1 reply

  • Platform Tech
  • /
  • Reply to Thread
  • Subscribe
Tags: help with adding MA cross alert to this code
Cancel

help with adding MA cross alert to this code

  • Post #1
  • Quote
  • First Post: Jan 5, 2012 5:39am Jan 5, 2012 5:39am
  •  pgtips
  • | Joined Nov 2007 | Status: Member | 162 Posts
Hi,

A forum member zznbrm kindly assisted me with this indicator code and I am trying to add an alert to this for sound and/or email.

I am not sure I have got the logic right following the if statement but basically when the MA crosses ( the histogram changes to orange) I would like an alert but I can't figure this. My best effort which i had to undo resulted in repeated alerts.

Code below, would appreciate if someone might be able to show me where I am going wrong with this.

PG

Inserted Code
//+------------------------------------------------------------------+
//|                                                 MA-Cross-MTF.mq4 |
//|                                         Copyright © 2011, zznbrm |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, zznbrm"
#property indicator_separate_window
#property indicator_buffers   4
#property indicator_color1 Green
#property indicator_color2 Orange
#property indicator_color3 Orange
#property indicator_color4 Red
#property indicator_width1 5
#property indicator_width2 5
#property indicator_width3 5
#property indicator_width4 5
#property indicator_maximum 1
#property indicator_minimum 0
  
//+------------------------------------------------------------------+
//| User Inputs                                                      |
//+------------------------------------------------------------------+
extern int  eintTF = PERIOD_M15;
extern int    eintPeriod1 = 5;
extern int    eintPeriod2 = 10;
extern string estrMethod0 = "0=SMA,1=EMA,2=SMMA,3=LWMA";
extern int    eintMethod1 = MODE_EMA;
extern int    eintMethod2 = MODE_EMA;

extern bool SoundON=true;
extern bool EmailON=false;

//+------------------------------------------------------------------+
//| Buffers                                                          |
//+------------------------------------------------------------------+
double gadblUp[];
double gadblCrossUp[];
double gadblCrossDown[];
double gadblDown[];

//+------------------------------------------------------------------+
//| Global Variables                                                 |
//+------------------------------------------------------------------+

//*********************************************************************************************
//* STANDARD FUNCTIONS BELOW                                                                  *
//*********************************************************************************************
//+------------------------------------------------------------------+
//| init()                                                           |
//+------------------------------------------------------------------+
int init()
{
   string strShortName = "MA-Cross-MTF(" + eintTF + ")";
   
   IndicatorShortName( strShortName );
   IndicatorDigits( 0 );
   
   SetIndexBuffer( 0, gadblUp );
   SetIndexLabel( 0, "Up" );
   SetIndexStyle( 0, DRAW_HISTOGRAM );
   SetIndexEmptyValue( 0, 0.0 );
   
   SetIndexBuffer( 1, gadblCrossUp );
   SetIndexLabel( 1, "CrossUp" );
   SetIndexStyle( 1, DRAW_HISTOGRAM );
   SetIndexEmptyValue( 1, 0.0 );
   
   SetIndexBuffer( 2, gadblCrossDown );
   SetIndexLabel( 2, "CrossDown" );
   SetIndexStyle( 2, DRAW_HISTOGRAM );
   SetIndexEmptyValue( 2, 0.0 );
   
   SetIndexBuffer( 3, gadblDown );
   SetIndexLabel( 3, "Down" );
   SetIndexStyle( 3, DRAW_HISTOGRAM );
   SetIndexEmptyValue( 3, 0.0 );
               
   return(0);
}

//+------------------------------------------------------------------+
//| deinit()                                                         |
//+------------------------------------------------------------------+
int deinit()
{
   return(0);
}

//+------------------------------------------------------------------+
//| start()                                                          |
//+------------------------------------------------------------------+
int start()
{  
   int intCountedBars = IndicatorCounted();

   if ( intCountedBars < 0 ) return( -1 );   
   if ( intCountedBars > 0 ) intCountedBars--;
   
   int jnx;
   int intLimit = Bars - intCountedBars;
   int intMax = Bars - ( MathMax( eintPeriod1, eintPeriod2 ) + 1 );
   double dblMA1, dblMA2;
   
   if ( intLimit > intMax )    intLimit = intMax;
            
   for( int inx = intLimit; inx >= 0; inx-- )
   {
      jnx = iBarShift( Symbol(), eintTF, Time[inx] );
      
      dblMA1 = calcMAAltClose( jnx, eintPeriod1, eintMethod1, Close[inx] ); 
      dblMA2 = calcMAAltClose( jnx, eintPeriod2, eintMethod2, Close[inx] );
      
      gadblUp[inx] = 0.0;
      gadblCrossUp[inx] = 0.0;
      gadblCrossDown[inx] = 0.0;
      gadblDown[inx] = 0.0;
            
      if ( dblMA1 > dblMA2 )
      {
         if ( ( gadblCrossUp[inx+1] > 0.0 ) || ( gadblUp[inx+1] > 0.0 ) )
            gadblUp[inx] = 1.0;
         else
            gadblCrossUp[inx] = 1.0;
      }
      else if ( dblMA1 < dblMA2 )
      {
         if ( ( gadblCrossDown[inx+1] > 0.0 ) || ( gadblDown[inx+1] > 0.0 ) )
            gadblDown[inx] = 1.0;
         else
            gadblCrossDown[inx] = 1.0;
      }
      else
      {
         gadblUp[inx] = gadblUp[inx+1];
         gadblCrossUp[inx] = gadblCrossUp[inx+1];
         gadblCrossDown[inx] = gadblCrossDown[inx+1];
         gadblDown[inx] = gadblDown[inx+1];
         
  // added to try to have alert function
         if (SoundON) Alert("MA Crossed =",Ask,"\n Bid=",Bid,"\n Time=",TimeToStr(CurTime(),TIME_DATE)," ",TimeHour(CurTime()),":",TimeMinute(CurTime()),"\n Symbol=",Symbol()," Period=",Period()); PlaySound("alert.wav");

         if (EmailON) SendMail("MA Crossed","BUY signal at Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+" "+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Symbol="+Symbol()+" Period="+Period());
         
      }
                                      
   } 


   return(0);
}

//+------------------------------------------------------------------+
//| calcMAAltClose                                                   |
//+------------------------------------------------------------------+ 
double calcMAAltClose( int intShift, int intPeriod, int intMethod, double dblPrice )
{
   double adblPrice[], adblTemp[];
   
   ArrayResize( adblTemp, intPeriod+100 );
   
   ArraySetAsSeries( adblTemp, true );
   ArrayCopySeries( adblPrice, MODE_CLOSE, Symbol(), eintTF );
   ArrayCopy( adblTemp, adblPrice, 0, intShift, intPeriod+100 );
   
   adblTemp[0] = dblPrice;
   
   return( iMAOnArray( adblTemp, WHOLE_ARRAY, intPeriod, 0, intMethod, 0 ) );
}
  • Post #2
  • Quote
  • Last Post: Jan 12, 2012 3:48am Jan 12, 2012 3:48am
  •  pgtips
  • | Joined Nov 2007 | Status: Member | 162 Posts
bump
 
 
  • Platform Tech
  • /
  • help with adding MA cross alert to this code
  • Reply to Thread
0 traders viewing now
Top of Page
  • Facebook
  • Twitter
About FF
  • Mission
  • Products
  • User Guide
  • Media Kit
  • Blog
  • Contact
FF Products
  • Forums
  • Trades
  • Calendar
  • News
  • Market
  • Brokers
  • Trade Explorer
FF Website
  • Homepage
  • Search
  • Members
  • Report a Bug
Follow FF
  • Facebook
  • Twitter

FF Sister Sites:

  • Metals Mine
  • Energy EXCH
  • Crypto Craft

Forex Factory® is a brand of Fair Economy, Inc.

Terms of Service / ©2023