Bermaui Pin Bars Expert Advisor Example

Bermaui Pin Bars Expert Advisor Example

11 November 2019, 17:26
Muhammad Elbermawi
0
236

Hi forex trader,

In this blog I want to show you how to use Bermaui Pin Bars buffers to build a simple MT4 EA. You can know more about Bermaui Pin Bars from those links:

Important Information

Next screen shots show important buffers:

In this code I wrote function that call Bermaui Pin Bars buffer four and five that represent the buy and sell arrows on the chart. Here is the code.

//+------------------------------------------------------------------+
//|                                     Bermaui DBD%s EA Example.mq4 |
//|                       Copyright © 2019, Muhammad Al Bermawy,CMT. |
//|                         https://www.mql5.com/en/users/bermaui314 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com/en/users/bermaui314"
#property version   "1.00"
#property strict
#property description "BPB Important Output Buffers:"
#property description "=============================="
#property description "Buffer [ 4 ] = Body Center Percent."
#property description "Buffer [ 5 ] = Upper Bermaui Band."
#property description "Buffer [ 6 ] = Center Bermaui Band."
#property description "Buffer [ 7 ] = Lower Bermaui Band."

sinput string  Trading_Setup;                     // Trading Setup
extern int     MagicNumber          = 1234567890; // Magic Number
extern int     TakeProfit           = 500;        // Take Profit (points)
extern int     StopLoss             = 250;        // Stop Loss (points)
extern double  FirstLots            = 0.01;       // Lot Size
sinput  string Indicator_Settings;                // 1) >>>>>>>>>> INDICATOR INPUTS
sinput string  indAdress            = "Market\\Bermaui Pin Bars"; // Indicator Path & Name : 
extern int     Candles              = 50;         // Candles [Min =2]
extern double  Deviation_Multiplier = 2.1;        // Deviation Multiplier [>0]

//---Global Variables
int    Ticket1;
int    t1,t2;
datetime timeprev = 0;

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

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---Check trading at candle open only
if(timeprev == Time[0]) { return; }
   timeprev =  Time[0];

//---BPB Buffers
double PinBarPercent = BPBCustom(4); // Pin Bars Oscillator Percent
double BBUpper       = BPBCustom(5); // Upper Bermaui Bands
double BBLower       = BPBCustom(7); // Lower Bermaui Bands

//---Buy Order (1)
if(MyRealOrdersTotal(MagicNumber) == 0){
if(PinBarPercent > 80 && Close[1] > BBUpper) { OpenBUYOrder(MagicNumber);}}

//---Buy Order (2)
if(MyRealOrdersTotal(MagicNumber) == 0){
if(PinBarPercent < 20 && Close[1] > BBUpper) { OpenBUYOrder(MagicNumber);}}

//---Sell Order (1)
if(MyRealOrdersTotal(MagicNumber) == 0){
if(PinBarPercent > 80 && Close[1] < BBLower) { OpenSELLOrder(MagicNumber);}}

//---Sell Order (2)
if(MyRealOrdersTotal(MagicNumber) == 0){
if(PinBarPercent < 20 && Close[1] < BBLower) { OpenSELLOrder(MagicNumber);}}
   
  }
//+------------------------------------------------------------------+
//| Custom functions.                                                |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| The number of current Market orders only.                        |
//+------------------------------------------------------------------+
int MyRealOrdersTotal(int Magic)
  {
int c     = 0;
int total = OrdersTotal();
    t1    = -1;
    t2    = -1;
 
for(int cnt = 0 ; cnt < total ; cnt++)
  {
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
if(OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()==OP_BUY || OrderType()==OP_SELL))
 {
if(t1 == -1) { t1 = OrderTicket(); }
else
   {
if(t2 == -1) { t2 = OrderTicket(); }
   }
c++;
 }
  }
return(c);
  }

//+------------------------------------------------------------------+
//| Open a Buy Order Function.                                       |
//+------------------------------------------------------------------+
void OpenBUYOrder(int Magic)
   {
double en,sl,tp;
int    slippage = 30;
 
en = Ask;                  //---Enter of order
sl = Ask - (StopLoss * Point);   //---Stop Loss
tp = Ask + (TakeProfit * Point); //---Take Profit
 
if(FirstLots > 0)
 {Ticket1 = OrderSend(Symbol(),OP_BUY, FirstLots, en, slippage, sl, tp, "EA Comment", Magic, 0, clrGreen);}
else
   {Alert("Buying Error "," Err = ",GetLastError()," Price = ",Ask," Lots = ",FirstLots);}

   }

//+------------------------------------------------------------------+
//| Open a Sell Order Function.                                       |
//+------------------------------------------------------------------+
void OpenSELLOrder(int Magic)
   {
double en,sl,tp;
int    slippage = 30;
 
en = Bid;                  //---Enter of order
sl = Bid + (StopLoss * Point);   //---Stop Loss
tp = Bid - (TakeProfit * Point); //---Take Profit
 
if(FirstLots > 0)
 {Ticket1 = OrderSend(Symbol(),OP_SELL, FirstLots, en, slippage, sl, tp, "EA Comment", Magic, 0, clrRed);}
else
   {Alert("Selling Error "," Err = ",GetLastError()," Price = ",Ask," Lots = ",FirstLots);}

   }
//+==================================================================+
//| Bermaui Pin Bar iCustom Function.                                |            
//+==================================================================+
double BPBCustom(int buf)
     {
//+------------------------------------------------------------------+
//| Indicator Options                                                |
//+------------------------------------------------------------------+
enum CL
   {
aBlackground, // Black Background
bWhiteground, // White Background
cDoNothing,   // Do Nothing
   };

//+------------------------------------------------------------------+
//| iCustom Function                                                 |
//+------------------------------------------------------------------+
double BPB =iCustom(Symbol(),             // Symbol
                    Period(),             // Time-Frame
                    indAdress,            // Indicator Path and name
                    " ",                  // STYLE & BUTTONS SETTINGS
                    aBlackground,         // BPB Colors List
                    false,                // Show Buttons
                    " ",                  // ALERT SETTINGS
                    false,                // Alert:
                    false,                // eMail:
                    false,                // Notification:
                    " ",                  // BERMAUI BANDS SETTINGS
                    Candles,              // Candles [Min =2]
                    Deviation_Multiplier, // Deviation Multiplier [>0]
                    100+Candles,          // Max. Candles to Draw
                    buf,                  // Calculation Buffer
                    1);                   // Shift

return(BPB);
     }
     

This code is just an example about how to use the indicators buffer in building an expert advisor and It was not written to test the indicator ability to trade on real accounts.

I hope Bermaui Pin Bars to be a good trading tool for you. If you have any question send me a message and I will answer as soon as I am online.

Best regards
Muhammad Al Bermaui, CMT


Share it with friends: