Candle_Signal_v2





//+------------------------------------------------------------------+
//|                                                Candle_Signal.mq4 |
//|                      Copyright © 2006, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, MetaQuotes Software Corp."
#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