IND_PotentialEntriesWithAlerts

Author: Copyright 2020, Mario Gharib. mario.gharib@hotmail.com
Miscellaneous
It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
IND_PotentialEntriesWithAlerts
//+------------------------------------------------------------------+
//|                                                VolatilityBox.mq5 |
//|                                    Copyright 2018, Mario Gharib. |
//|                                         mario.gharib@hotmail.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, Mario Gharib. mario.gharib@hotmail.com"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+

#include <Candlestick.mqh>             // Candlesticks OHLC, charateristics & type
#include <OnNewBarCalculate.mqh>

// INPUT TYPE TREND
enum iTrend{
   A1 = 1, //Bullish Trend
   A2 = 2, //Bearish Trend
};
input iTrend PA_TYPE = A1;

string sArrowBuy1 = "";
string sArrowBuy2 = "";
string sArrowSell1 = "";
string sArrowSell2 = "";

string sTradeIdentification = "";

int OnInit()
  {
//--- create a timer with a 60 second period
   return(INIT_SUCCEEDED);
  }
  
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+

int OnNewBarCalculate(const int rates_total,
                      const int prev_calculated,
                      const datetime &time[],
                      const double &open[],
                      const double &high[],
                      const double &low[],
                      const double &close[],
                      const long &tick_volume[],
                      const long &volume[],
                      const int &spread[]){

      cCandlestick cCS1, cCS2;
      
      // OHLC, Characteristics and type of Candle 1
      cCS1.mvGetCandleStickCharateristics(_Symbol,1);
      
      // OHLC, Characteristics and type of Candle 2
      cCS2.mvGetCandleStickCharateristics(_Symbol,2);

         // =====================================
         // BULLISH REVERSAL CANDLESTICK PATTERNS 
         // =====================================         

       if (PA_TYPE==1) {            
            // TRADE IDENTIFICATION 1: BULLISH HAMMER
            if (cCS1.bBullCandle && cCS2.bBearCandle && 2*cCS1.dBodyCandle<cCS1.dLowerWickCandle && cCS1.dLowerWickCandle>3*cCS1.dUpperWickCandle) {
               StringConcatenate(sTradeIdentification, "sTradeIdentification: ",string(iTimeMQL4(_Symbol,PERIOD_CURRENT,1)));
               ObjectCreateMQL4(sTradeIdentification,OBJ_TEXT,0,iTimeMQL4(_Symbol,PERIOD_CURRENT,1),cCS1.dLowPrice);
               ObjectSetTextMQL4(sTradeIdentification,"HAM",10,"");
               ObjectSetMQL4(sTradeIdentification,OBJPROP_COLOR, clrGreen);
               Alert("BULLISH HAMMER");
            }      
   
            // TRADE IDENTIFICATION 2: BULLISH INVERTED HAMMER
            else if (cCS1.bBullCandle && cCS2.bBearCandle && 2*cCS1.dBodyCandle<cCS1.dUpperWickCandle && 3*cCS1.dLowerWickCandle<cCS1.dUpperWickCandle) {
               StringConcatenate(sTradeIdentification, "sTradeIdentification: ",string(iTimeMQL4(_Symbol,PERIOD_CURRENT,1)));
               ObjectCreateMQL4(sTradeIdentification,OBJ_TEXT,0,iTimeMQL4(_Symbol,PERIOD_CURRENT,1),cCS1.dLowPrice);
               ObjectSetTextMQL4(sTradeIdentification,"IVH",10,"");
               ObjectSetMQL4(sTradeIdentification,OBJPROP_COLOR, clrGreen);
               Alert("BULLISH INVERTED HAMMER");
           }       
            
            // TRADE IDENTIFICATION 3: BULLISH ENGULFING
            else if (cCS1.bBullCandle && cCS2.bBearCandle && cCS1.dRangeCandle>cCS2.dRangeCandle && cCS1.dBodyCandle>cCS2.dBodyCandle && cCS1.dHighPrice>cCS2.dHighPrice && cCS1.dLowPrice<cCS2.dLowPrice) {
               StringConcatenate(sTradeIdentification, "sTradeIdentification: ",string(iTimeMQL4(_Symbol,PERIOD_CURRENT,1)));
               ObjectCreateMQL4(sTradeIdentification,OBJ_TEXT,0,iTimeMQL4(_Symbol,PERIOD_CURRENT,1),cCS1.dLowPrice);
               ObjectSetTextMQL4(sTradeIdentification,"ENG",10,"");
               ObjectSetMQL4(sTradeIdentification,OBJPROP_COLOR, clrGreen);           
               Alert("BULLISH ENGULFING");
            }       
   
            // TRADE IDENTIFICATION 4: BULLISH HARAMI
            else  if (cCS1.bBullCandle && cCS2.bBearCandle && cCS1.dRangeCandle<cCS2.dRangeCandle && cCS1.dBodyCandle<cCS2.dBodyCandle && cCS1.dHighPrice<cCS2.dHighPrice && cCS1.dLowPrice>cCS2.dLowPrice) {
               StringConcatenate(sTradeIdentification, "sTradeIdentification: ",string(iTimeMQL4(_Symbol,PERIOD_CURRENT,1)));
               ObjectCreateMQL4(sTradeIdentification,OBJ_TEXT,0,iTimeMQL4(_Symbol,PERIOD_CURRENT,1),cCS1.dLowPrice);
               ObjectSetTextMQL4(sTradeIdentification,"HAR",10,"");
               ObjectSetMQL4(sTradeIdentification,OBJPROP_COLOR, clrGreen);
               Alert("BULLISH HARAMI");
            }      
   
            // TRADE IDENTIFICATION 5: MORNING STAR
            else if (cCS1.bBullCandle && cCS2.bBearCandle && cCS1.dBodyCandle < cCS1.dLowerWickCandle && cCS1.dBodyCandle < cCS1.dUpperWickCandle && cCS1.dLowerWickCandle ==cCS1.dUpperWickCandle) {
               StringConcatenate(sTradeIdentification, "sTradeIdentification: ",string(iTimeMQL4(_Symbol,PERIOD_CURRENT,1)));
               ObjectCreateMQL4(sTradeIdentification,OBJ_TEXT,0,iTimeMQL4(_Symbol,PERIOD_CURRENT,1),cCS1.dLowPrice);
               ObjectSetTextMQL4(sTradeIdentification,"MOS",10,"");
               ObjectSetMQL4(sTradeIdentification,OBJPROP_COLOR, clrGreen);
               Alert("MORNING STAR");
            }       

            // TRADE IDENTIFICATION 6: BUILDING MOMEMTUM:
            if (cCS1.bBullCandle && cCS2.bBullCandle && cCS1.dRangeCandle>cCS2.dRangeCandle && cCS1.dBodyCandle>=2*cCS2.dBodyCandle) {
               StringConcatenate(sArrowBuy1,"sArrowBuy1",string(iTimeMQL4(_Symbol,PERIOD_CURRENT,1)));
               ObjectCreate(0,sArrowBuy1,OBJ_ARROW_BUY,0,iTimeMQL4(_Symbol,PERIOD_CURRENT,1),cCS1.dOpenPrice);
               StringConcatenate(sArrowBuy2,"sArrowBuy2",string(iTimeMQL4(_Symbol,PERIOD_CURRENT,2)));
               ObjectCreate(0,sArrowBuy2,OBJ_ARROW_BUY,0,iTimeMQL4(_Symbol,PERIOD_CURRENT,2),cCS2.dOpenPrice);
               Alert("BUILDING MOMEMTUM");
            }        
         }

      // =====================================
      // BEARISH REVERSAL CANDLESTICK PATTERNS 
      // =====================================
       
       if (PA_TYPE==2) {     
            // TRADE IDENTIFICAITON 1: SHOOTING STAR
            if (cCS1.bBearCandle && cCS2.bBullCandle && 2*cCS1.dBodyCandle<cCS1.dUpperWickCandle && 3*cCS1.dLowerWickCandle<cCS1.dUpperWickCandle) {
               StringConcatenate(sTradeIdentification, "sTradeIdentification: ",string(iTimeMQL4(_Symbol,PERIOD_CURRENT,1)));
               ObjectCreateMQL4(sTradeIdentification,OBJ_TEXT,0,iTimeMQL4(_Symbol,PERIOD_CURRENT,1),cCS1.dHighPrice);
               ObjectSetTextMQL4(sTradeIdentification,"SHS",10,"");
               ObjectSetMQL4(sTradeIdentification,OBJPROP_COLOR, clrRed);
               Alert("SHOOTING STAR");
            }
   
            // TRADE IDENTIFICAITON 2: HANGING MAN
            else if (cCS1.bBearCandle && cCS2.bBullCandle && 2*cCS1.dBodyCandle<cCS1.dLowerWickCandle && cCS1.dLowerWickCandle>3*cCS1.dUpperWickCandle) {
               StringConcatenate(sTradeIdentification, "sTradeIdentification: ",string(iTimeMQL4(_Symbol,PERIOD_CURRENT,1)));
               ObjectCreateMQL4(sTradeIdentification,OBJ_TEXT,0,iTimeMQL4(_Symbol,PERIOD_CURRENT,1),cCS1.dHighPrice);
               ObjectSetTextMQL4(sTradeIdentification,"HGM",10,"");
               ObjectSetMQL4(sTradeIdentification,OBJPROP_COLOR, clrRed);
               Alert("HANGING MAN");
            }
            
            // TRADE IDENTIFICAITON 3: BEARISH ENGULFING
            else if (cCS1.bBearCandle && cCS2.bBullCandle && cCS1.dRangeCandle>cCS2.dRangeCandle && cCS1.dBodyCandle>cCS2.dBodyCandle && cCS1.dHighPrice>cCS2.dHighPrice && cCS1.dLowPrice<cCS2.dLowPrice) {
               StringConcatenate(sTradeIdentification, "sTradeIdentification: ",string(iTimeMQL4(_Symbol,PERIOD_CURRENT,1)));
               ObjectCreateMQL4(sTradeIdentification,OBJ_TEXT,0,iTimeMQL4(_Symbol,PERIOD_CURRENT,1),cCS1.dHighPrice);
               ObjectSetTextMQL4(sTradeIdentification,"ENG",10,"");
               ObjectSetMQL4(sTradeIdentification,OBJPROP_COLOR, clrRed);    
                Alert("BEARISH ENGULFING");
           }
   
            // TRADE IDENTIFICAITON 4: BEARISH HARAMI
            else if (cCS1.bBearCandle && cCS2.bBullCandle && cCS1.dRangeCandle<cCS2.dRangeCandle && cCS1.dBodyCandle<cCS2.dBodyCandle && cCS1.dHighPrice<cCS2.dHighPrice && cCS1.dLowPrice>cCS2.dLowPrice) {
               StringConcatenate(sTradeIdentification, "sTradeIdentification: ",string(iTimeMQL4(_Symbol,PERIOD_CURRENT,1)));
               ObjectCreateMQL4(sTradeIdentification,OBJ_TEXT,0,iTimeMQL4(_Symbol,PERIOD_CURRENT,1),cCS1.dHighPrice);
               ObjectSetTextMQL4(sTradeIdentification,"HAR",10,"");
               ObjectSetMQL4(sTradeIdentification,OBJPROP_COLOR, clrRed);
               Alert("BEARISH HARAMI");
            }
               
            // TRADE IDENTIFICAITON 5: EVENING STAR
            else if (cCS1.bBearCandle && cCS2.bBullCandle && cCS1.dBodyCandle < cCS1.dLowerWickCandle && cCS1.dBodyCandle < cCS1.dUpperWickCandle && cCS1.dLowerWickCandle ==cCS1.dUpperWickCandle) {
               StringConcatenate(sTradeIdentification, "sTradeIdentification: ",string(iTimeMQL4(_Symbol,PERIOD_CURRENT,1)));
               ObjectCreateMQL4(sTradeIdentification,OBJ_TEXT,0,iTimeMQL4(_Symbol,PERIOD_CURRENT,1),cCS1.dHighPrice);
               ObjectSetTextMQL4(sTradeIdentification,"EVS",10,"");
               ObjectSetMQL4(sTradeIdentification,OBJPROP_COLOR, clrRed);
               Alert("EVENING STAR");
            }
            
            // TRADE IDENTIFICATION 6: BUILDING MOMEMTUM
            else if (cCS1.bBearCandle && cCS2.bBearCandle && cCS1.dBodyCandle>cCS2.dBodyCandle && cCS1.dRangeCandle>=2*cCS2.dRangeCandle) {
               StringConcatenate(sArrowSell1,"sArrowSell1",string(iTimeMQL4(_Symbol,PERIOD_CURRENT,1)));
               ObjectCreate(0,sArrowSell1,OBJ_ARROW_SELL,0,iTimeMQL4(_Symbol,PERIOD_CURRENT,1),cCS1.dOpenPrice);
               StringConcatenate(sArrowSell2,"sArrowSell2",string(iTimeMQL4(_Symbol,PERIOD_CURRENT,2)));
               ObjectCreate(0,sArrowSell2,OBJ_ARROW_SELL,0,iTimeMQL4(_Symbol,PERIOD_CURRENT,2),cCS2.dOpenPrice);
               Alert("BUILDING MOMEMTUM");
            }
         }
   return(rates_total);
  }
//+------------------------------------------------------------------+

Comments