Candle_Signal





//+------------------------------------------------------------------+
//|                                                Candle_Signal.mq4 |
//|                      Copyright © 2006, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#property link      " cja "

#property indicator_chart_window

extern int PIP_Difference = 15;
extern int PERIOD = 240;//0 = all timeframes
extern string IIIIIIIIIIIIIIIIIIIIIIIII="<<<< Alert TEXT on Screen >>>>>>>>>>>>>>>>>"; 
extern bool Show_AlertTEXT = true;
extern string IIIIIIIIIIIIIIIIIIIIIIIIII="<<<< POP/UP Alert >>>>>>>>>>>>>>>>>>>>>>>>";
extern bool AlertON = true;
extern int Shift_UP_DN = 0;
extern int Shift_Left_Right = 0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   ObjectsDeleteAll(0,OBJ_LABEL);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
//----
  double CURR,PIPS,PPIPS,TARGET_UP,TARGET_DN;
  //double OPEN = iOpen(NULL,30,0);
 // double CLOSE = iClose(NULL,30,0);
  double CUROPEN = iOpen(NULL,PERIOD,0);
  double PREVCLOSE = iClose(NULL,PERIOD,1);
   PIPS =  (PREVCLOSE-Bid);
   PPIPS =  (PREVCLOSE+Ask);
   TARGET_UP = ((PREVCLOSE+PIP_Difference*Point));
   TARGET_DN = ((PREVCLOSE-PIP_Difference*Point));
   string PRC1="";
   //PRICE = iMA(Symbol(),0,1,0,MODE_EMA,PRICE_CLOSE,0);
  
  if(Show_AlertTEXT==true)
  {
  string CandleSignal="",CandleSignal2="",CandleSignal3=""; color col,col2,col3; 
     
  CandleSignal = "Currently Signals Pending ................................."; col =  C'250,250,0';
    
  if((Ask)>=(PREVCLOSE+PIP_Difference*Point)){CandleSignal = "ALERT : PRICE Above Previous CLOSE By [ "+(DoubleToStr(PIP_Difference,Digits-4))+" ] "+"";
                                             col = C'0,225,0';
                                             }
   
  if((Bid)<=(PREVCLOSE-PIP_Difference*Point)){CandleSignal = "ALERT : PRICE Below Previous CLOSE By [ "+(DoubleToStr(PIP_Difference,Digits-4))+" ] "+"";
                                             col = C'250,0,0';
                                             }
                                             
     
  if((Ask)>=(PREVCLOSE)){CandleSignal2 = "Upper Entry Target [ "+(DoubleToStr(TARGET_UP,Digits))+" ] "+"";
                                             col2 = C'180,225,0';
                                             } 
  if((Bid)<=(PREVCLOSE)){CandleSignal2 = "Lower Entry Target [ "+(DoubleToStr(TARGET_DN,Digits))+" ] "+"";
                                             col2 = C'250,100,0';
                                             }    
   // Determin whether Open above/Below Previous Close                                          
      
  if((CUROPEN)>=(PREVCLOSE)){CandleSignal3 = "OPEN > PREV / CLOSE"+"";
                                             col3 = C'0,225,0';
                                             } 
  if((CUROPEN)<(PREVCLOSE)){CandleSignal3 = "OPEN < PREV / CLOSE"+"";
                                             col3 = C'250,0,0';
                                             }                                                                                                                                    
                                            
   ObjectCreate("CandleSignal", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("CandleSignal", CandleSignal, 12,"Arial Bold", col);
   ObjectSet("CandleSignal", OBJPROP_CORNER, 0);
   ObjectSet("CandleSignal", OBJPROP_XDISTANCE, 250+Shift_Left_Right);
   ObjectSet("CandleSignal", OBJPROP_YDISTANCE, 20+Shift_UP_DN);
   
                                             
   ObjectCreate("CandleSignal2", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("CandleSignal2", CandleSignal2, 12,"Arial Bold", col2);
   ObjectSet("CandleSignal2", OBJPROP_CORNER, 0);
   ObjectSet("CandleSignal2", OBJPROP_XDISTANCE, 250+Shift_Left_Right);
   ObjectSet("CandleSignal2", OBJPROP_YDISTANCE, 52+Shift_UP_DN);
   
   ObjectCreate("CandleSignal3", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("CandleSignal3", CandleSignal3, 7,"Arial Bold", col3);
   ObjectSet("CandleSignal3", OBJPROP_CORNER, 0);
   ObjectSet("CandleSignal3", OBJPROP_XDISTANCE, 362+Shift_Left_Right);
   ObjectSet("CandleSignal3", OBJPROP_YDISTANCE, 8+Shift_UP_DN);
   
    
                                              
   ObjectCreate("Signal1", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("Signal1","Signal Auto Display", 9, "Arial", Silver);
   ObjectSet("Signal1", OBJPROP_CORNER, 0);
   ObjectSet("Signal1", OBJPROP_XDISTANCE, 250+Shift_Left_Right);
   ObjectSet("Signal1", OBJPROP_YDISTANCE, 5+Shift_UP_DN);
   
   ObjectCreate("Signal2", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("Signal2","Target  TF = [ "+PERIOD+" ]", 9, "Arial", Silver);
   ObjectSet("Signal2", OBJPROP_CORNER, 0);
   ObjectSet("Signal2", OBJPROP_XDISTANCE, 250+Shift_Left_Right);
   ObjectSet("Signal2", OBJPROP_YDISTANCE, 37+Shift_UP_DN);
   
   double Price1 = iMA(Symbol(),0,1,0,MODE_EMA,PRICE_CLOSE,0);   
    PRC1 = DoubleToStr(Price1,Digits);
    
        
           ObjectCreate("Signalprice", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("Signalprice",""+PRC1+"", 30, "Arial",  col);
   ObjectSet("Signalprice", OBJPROP_CORNER, 0);
   ObjectSet("Signalprice", OBJPROP_XDISTANCE,250+Shift_Left_Right);
   ObjectSet("Signalprice", OBJPROP_YDISTANCE, 70+Shift_UP_DN); 
   }
   
   if (AlertON==true)
   {   
  if((Ask)>=(PREVCLOSE+PIP_Difference*Point)){   if (BarChanged())
     {
   Alert(Symbol()," M",Period()," ALERT : PRICE Above CLOSE By [ "+(DoubleToStr(PIP_Difference,Digits-4))+" ] "+"");}}
   
    if((Bid)<=(PREVCLOSE-PIP_Difference*Point)){   if (BarChanged())
     {
   Alert(Symbol()," M",Period()," ALERT : PRICE Below CLOSE By [ "+(DoubleToStr(PIP_Difference,Digits-4))+" ] "+"");}}}
//----
   return(0);
  }
//+------------------------------------------------------------------+


bool BarChanged()
{
 static datetime dt = 0;

  if (dt != Time[0])
  {
   dt = Time[0];
   return(true);
  }
   return(false);
}

//---- done
return(0);



Sample





Analysis



Market Information Used:

Series array that contains open prices of each bar
Series array that contains close prices for each bar
Series array that contains open time of each bar


Indicator Curves created:


Indicators Used:

Moving average indicator


Custom Indicators Used:

Order Management characteristics:

Other Features:

It issuies visual alerts to the screen