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
- Bermaui Pin Bars Demo: https://www.mql5.com/en/market/product/43091
- Bermaui Pin Bars: https://www.mql5.com/en/market/product/40945
- Bermaui Pin Bars Formula: https://www.mql5.com/en/blogs/post/729139
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
Files: