EA_PotentialEntries

Author: Copyright 2020, Mario Gharib. mario.gharib@hotmail.com
Price Data Components
0 Views
0 Downloads
0 Favorites
EA_PotentialEntries
//+------------------------------------------------------------------+
//|                                EA_PotentialEntriesCommercial.mq5 |
//|                                    Copyright 2020, 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"

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

CTrade trade;

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

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

static int BARS;

//+------------------------------------------------------------------+
//| NewBar function                                                  |
//+------------------------------------------------------------------+
bool IsNewBar()
   {
      if(BARS!=Bars(_Symbol,_Period))
        {
            BARS=Bars(_Symbol,_Period);
            return(true);
        }
      return(false);
   }

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {

   return(INIT_SUCCEEDED);
  }
  
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {

   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(IsNewBar()) {

      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 
      // =====================================
      
      double dAsk = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
      double dBid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);

   
      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);
            trade.Buy(dVol,_Symbol, dAsk, MathMin(cCS1.dLowPrice,cCS2.dLowPrice),0 ,"");         
         }
      
         // 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);
            trade.Buy(dVol,_Symbol, dAsk, MathMin(cCS1.dLowPrice,cCS2.dLowPrice),0 ,"");         
        }
              
         // TRADE IDENTIFICATION 6: BUILDING MOMEMTUM:
         else 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);
            trade.Buy(dVol,_Symbol, dAsk, MathMin(cCS1.dLowPrice,cCS2.dLowPrice),0 ,"");         
         } 

      }
      
      // =====================================
      // 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);
            trade.Sell(dVol,_Symbol, dBid, MathMax(cCS1.dHighPrice,cCS2.dHighPrice),0 ,""); 
         }
      
         // 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);
            trade.Sell(dVol,_Symbol, dBid, MathMax(cCS1.dHighPrice,cCS2.dHighPrice),0 ,""); 
        }
         
         // 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);
            trade.Sell(dVol,_Symbol, dBid, MathMax(cCS1.dHighPrice,cCS2.dHighPrice),0 ,""); 
        }
         
      }
   }
}

Comments