Specifiche

//+------------------------------------------------------------------+
//| XAUUSD Ultimate Institutional EA                                  |
//| Features:                                                         |
//| - True swing-based market structure                                |
//| - BOS sniper entries on M5                                         |
//| - Liquidity sweep filter                                           |
//| - Partial TP + breakeven                                           |
//| - Visual BOS, swings, liquidity                                   |
//| - ATR-based dynamic SL                                             |
//| - Trailing stop                                                    |
//| - Session filter (London + NY)                                     |
//| - Risk management (1% per trade)                                   |
//+------------------------------------------------------------------+
#property strict
#include <Trade/Trade.mqh>
CTrade trade;

//================ INPUTS =================
input double RiskPercent = 1.0;           // % risk per trade
input double RR = 2.0;                    // Target RR
input double PartialClosePercent = 50.0;  // % to close at first TP
input int    SL_Buffer_Points = 400;      // SL buffer (XAU volatility)
input int    MaxSL_Points = 3000;         // Skip trades if SL too wide
input ENUM_TIMEFRAMES HTF = PERIOD_H1;    // Higher timeframe
input ENUM_TIMEFRAMES LTF = PERIOD_M5;    // Lower timeframe
input int LondonStart = 10;               // London session start
input int LondonEnd   = 13;               // London session end
input int NYStart     = 15;               // NY session start
input int NYEnd       = 18;               // NY session end
input bool UseNewsFilter = true;          // Toggle news filter
input int NewsPauseBefore = 30;           // Minutes before news
input int NewsPauseAfter  = 30;           // Minutes after news
input int FractalDepth = 2;               // For true swing detection
input int ATR_Period = 14;                // ATR period
input double ATR_Multiplier = 1.5;        // ATR multiplier for SL
input double TrailingStart = 1.0;         // RR ratio to start trailing
input double TrailingStep = 50;           // Points per trailing move

//================ GLOBALS =================
datetime LastTradeDay;
bool PartialTaken = false;
bool BuyLiquidityTaken = false;
bool SellLiquidityTaken = false;
double LastSwingHigh = 0;
double PrevSwingHigh = 0;
double LastSwingLow  = 0;
double PrevSwingLow  = 0;

//================ SESSION CHECK =================
bool InSession()
{
   int h = TimeHour(TimeCurrent());
   return (h>=LondonStart && h<=LondonEnd) || (h>=NYStart && h<=NYEnd);
}

//================ TRUE SWING DETECTION =================
void DetectSwings()
{
   for (int i = 5; i < 100; i++)
   {
      double fh = iFractals(_Symbol, HTF, MODE_UPPER, i);
      double fl = iFractals(_Symbol, HTF, MODE_LOWER, i);

      if (fh != 0)
      {
         PrevSwingHigh = LastSwingHigh;
         LastSwingHigh = fh;
      }
      if (fl != 0)
      {
         PrevSwingLow = LastSwingLow;
         LastSwingLow = fl;
      }
      if (PrevSwingHigh > 0 && PrevSwingLow > 0) break;
   }
}

//================ MARKET STRUCTURE =================
bool BullishStructure()
{
   DetectSwings();
   return (LastSwingHigh > PrevSwingHigh &&
           LastSwingLow  > PrevSwingLow);
}

bool BearishStructure()
{
   DetectSwings();
   return (LastSwingHigh < PrevSwingHigh &&
           LastSwingLow  < PrevSwingLow);
}

//================ LOT CALCULATION =================
double LotByRisk(double sl_points)
{
   double bal = AccountInfoDouble(ACCOUNT_BALANCE);
   double riskMoney = bal * RiskPercent / 100.0;
   double tickVal = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE);
   double tickSz  = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE);
   double lot = riskMoney / (sl_points * tickVal / tickSz);
   return NormalizeDouble(lot, 2);
}

//================ LIQUIDITY SWEEP =================
void DetectLiquiditySweep(double ltf_low, double ltf_high, double close)
{
   BuyLiquidityTaken  = (ltf_low < LastSwingLow && close > LastSwingLow);
   SellLiquidityTaken = (ltf_high > LastSwingHigh && close < LastSwingHigh);

   // Visualize sweeps
   if(BuyLiquidityTaken)
      DrawLabel("LIQ_SWEEP_BUY", TimeCurrent(), LastSwingLow, "Sell-side Liquidity Taken", clrDodgerBlue);
   if(SellLiquidityTaken)
      DrawLabel("LIQ_SWEEP_SELL", TimeCurrent(), LastSwingHigh, "Buy-side Liquidity Taken", clrOrangeRed);
}

//================ DRAWING FUNCTIONS =================
void DrawLine(string name, datetime t1, double p1, datetime t2, double p2, color clr)
{
   ObjectDelete(0, name);
   ObjectCreate(0, name, OBJ_TREND, 0, t1, p1, t2, p2);
   ObjectSetInteger(0, name, OBJPROP_COLOR, clr);
   ObjectSetInteger(0, name, OBJPROP_WIDTH, 2);
}
void DrawLabel(string name, datetime t, double p, string text, color clr)
{
   ObjectDelete(0, name);
   ObjectCreate(0, name, OBJ_TEXT, 0, t, p);
   ObjectSetText(name, text, 10, "Arial", clr);
}

//================ ATR =================
double ATR(int period, ENUM_TIMEFRAMES tf)
{
   return iATR(_Symbol, tf, period, 0);
}

//================ PARTIAL TP + BREAKEVEN =================
void ManagePosition()
{
   if (!PositionSelect(_Symbol)) return;

   double entry = PositionGetDouble(POSITION_PRICE_OPEN);
   double sl    = PositionGetDouble(POSITION_SL);
   double tp    = PositionGetDouble(POSITION_TP);
   double vol   = PositionGetDouble(POSITION_VOLUME);
   int type     = PositionGetInteger(POSITION_TYPE);
   double price = (type==POSITION_TYPE_BUY) ? SymbolInfoDouble(_Symbol, SYMBOL_BID)
                                            : SymbolInfoDouble(_Symbol, SYMBOL_ASK);
   double risk = MathAbs(entry - sl);
   double oneR = (type==POSITION_TYPE_BUY) ? entry + risk : entry - risk;

   // Partial TP
   if (!PartialTaken &&
       ((type==POSITION_TYPE_BUY && price >= oneR) ||
        (type==POSITION_TYPE_SELL && price <= oneR)))
   {
      trade.PositionClosePartial(_Symbol, vol * PartialClosePercent / 100.0);
      trade.PositionModify(_Symbol, entry, tp); // move SL to breakeven
      PartialTaken = true;
   }

   // Trailing Stop
   double rrAchieved = (type==POSITION_TYPE_BUY) ? (price - entry)/risk : (entry - price)/risk;
   if(rrAchieved >= TrailingStart)
   {
      double new_sl;
      if(type==POSITION_TYPE_BUY)
         new_sl = price - TrailingStep*_Point;
      else
         new_sl = price + TrailingStep*_Point;

      if((type==POSITION_TYPE_BUY && new_sl > sl) ||
         (type==POSITION_TYPE_SELL && new_sl < sl))
      {
         trade.PositionModify(_Symbol, new_sl, tp);
      }
   }
}

//================ NEWS FILTER PLACEHOLDER =================
bool NewsSafe()
{
   if(!UseNewsFilter) return true;
   // Placeholder: safe, can integrate news API
   return true;
}

//================ MAIN LOGIC =================
void OnTick()
{
   if(_Symbol != "XAUUSD") return;
   if(!InSession()) return;
   if(!NewsSafe()) return;

   ManagePosition();
   if(PositionsTotal() > 0) return;

   double close = iClose(_Symbol, LTF, 1);
   double prevHigh = iHigh(_Symbol, LTF, 2);
   double prevLow  = iLow(_Symbol, LTF, 2);

   DetectLiquiditySweep(prevLow, prevHigh, close);

   double atr = ATR(ATR_Period, LTF);

   //================ BUY =================
   if(BullishStructure() && BuyLiquidityTaken && close > prevHigh)
   {
      double entry = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
      double sl = entry - atr * ATR_Multiplier;
      double sl_points = (entry - sl)/_Point;
      if(sl_points > MaxSL_Points) return;
      double tp = entry + (entry - sl) * RR;
      double lot = LotByRisk(sl_points);

      trade.Buy(lot, _Symbol, entry, sl, tp);
      PartialTaken = false;

      DrawLine("BOS_BUY", iTime(_Symbol,LTF,2), prevHigh, iTime(_Symbol,LTF,1), close, clrLime);
      DrawLabel("BOS_BUY_LABEL", iTime(_Symbol,LTF,1), close, "BOS BUY", clrLime);
   }

   //================ SELL =================
   if(BearishStructure() && SellLiquidityTaken && close < prevLow)
   {
      double entry = SymbolInfoDouble(_Symbol, SYMBOL_BID);
      double sl = entry + atr * ATR_Multiplier;
      double sl_points = (sl - entry)/_Point;
      if(sl_points > MaxSL_Points) return;
      double tp = entry - (sl - entry) * RR;
      double lot = LotByRisk(sl_points);

      trade.Sell(lot, _Symbol, entry, sl, tp);
      PartialTaken = false;

      DrawLine("BOS_SELL", iTime(_Symbol,LTF,2), prevLow, iTime(_Symbol,LTF,1), close, clrRed);
      DrawLabel("BOS_SELL_LABEL", iTime(_Symbol,LTF,1), close, "BOS SELL", clrRed);
   }
}

Con risposta

1
Sviluppatore 1
Valutazioni
(23)
Progetti
34
53%
Arbitraggio
1
100% / 0%
In ritardo
1
3%
Gratuito
2
Sviluppatore 2
Valutazioni
Progetti
0
0%
Arbitraggio
0
In ritardo
0
Gratuito
3
Sviluppatore 3
Valutazioni
(3)
Progetti
3
0%
Arbitraggio
0
In ritardo
0
Gratuito
4
Sviluppatore 4
Valutazioni
Progetti
0
0%
Arbitraggio
0
In ritardo
0
Gratuito
5
Sviluppatore 5
Valutazioni
(4)
Progetti
3
33%
Arbitraggio
2
0% / 100%
In ritardo
0
Gratuito
6
Sviluppatore 6
Valutazioni
(10)
Progetti
15
13%
Arbitraggio
6
0% / 67%
In ritardo
2
13%
Gratuito
7
Sviluppatore 7
Valutazioni
(6)
Progetti
8
0%
Arbitraggio
8
13% / 88%
In ritardo
0
Gratuito
8
Sviluppatore 8
Valutazioni
(13)
Progetti
20
40%
Arbitraggio
3
0% / 67%
In ritardo
3
15%
Gratuito
9
Sviluppatore 9
Valutazioni
(1)
Progetti
1
0%
Arbitraggio
3
0% / 100%
In ritardo
1
100%
Gratuito
10
Sviluppatore 10
Valutazioni
(5)
Progetti
5
60%
Arbitraggio
1
0% / 0%
In ritardo
2
40%
Gratuito
Pubblicati: 1 codice
11
Sviluppatore 11
Valutazioni
(64)
Progetti
144
46%
Arbitraggio
20
40% / 20%
In ritardo
32
22%
Gratuito
12
Sviluppatore 12
Valutazioni
Progetti
0
0%
Arbitraggio
1
0% / 0%
In ritardo
0
In elaborazione
13
Sviluppatore 13
Valutazioni
Progetti
0
0%
Arbitraggio
0
In ritardo
0
Gratuito
Ordini simili
### ** Main EA File** - `InstitutionalTrendPullbackScalper.mq5` **Core Features Implemented:** **Multi-Timeframe Analysis** - M15 trend filter (EMA20 > EMA50 for uptrends) - M5 entry signals with 5-condition confirmation - Independent indicator sets for both symbols **Advanced Entry Logic** - RSI reversal detection (crosses thresholds) - Price pullback zone validation - Bullish/bearish candle close confirmation -
I am looking for an experienced MQL5 developer to build a professional-grade Expert Advisor (EA) for MetaTrader 5. The strategy is based on liquidity sweeps, market structure (Break of Structure), and institutional concepts (order blocks), specifically optimized for XAUUSD (Gold). This is not a basic bot. I need a structured, optimized, and reliable system suitable for live trading after testing
I need an Ai trading bot for Binance and BTC on MT5 that also uses order flow data. It should also make use of TSI- Temporal indicator sampling and also it should make use of fundamental analysis in the process of signal generation
Hello, I need a MetaTrader 5 Expert Advisor (EA) for XAUUSD. Place Buy Stop orders above current price every 0.300 distance Place Sell Stop orders below current price every 0.300 distance 10 levels up and 10 levels down Lot size fixed 0.01 No TP/SL required, manual close only No duplicate orders on restart Please confirm if you can build this and your final price and delivery time
I have a EA for XAUUSD which works awesome in sideways and trending market as well, capital requirement is only 2000USd and weekly profit is around 1500-2000 USD. I am using this bot from 3 months and getting continuous good result
I’m looking for an experienced MT4 developer to create a custom indicator (or EA) with mobile push notifications based on the following strategy. Trend Filter (Daily Timeframe) Daily Close above 50 EMA = Bullish Bias Daily Close below 50 EMA = Bearish Bias Entry Timeframe (H1) RSI Settings RSI Period: 14 (default) Upper Level: 65 Lower Level: 35 Buy Signal Generate a BUY signal when: Daily bias is Bullish (Daily
✅ MT4 EA Developer Checklist (For Your Ladder EA) 1️⃣ Indicator Integration EA reads signals from provided custom indicator (.ex4 or .mq4) Detects “Buy Next” / “Sell Next” signals on current candle Works with arrow-based or buffer-based signals 2️⃣ Next Candle Execution EA does not trade on the candle where the signal appears Orders placed only at first tick of the next candle Timeframes supported: M1, M5, M15
Hello, I am looking for someone who can help me to build a MT4/MT5 forex EA, by analyzing the trading history. You are responsible to find out trading logic behind the EA and Build a new EA that accurately replicates the existing strategy. I need someone who has proven previous experience to build a new EA by reverse engineering. Thanks
I am looking for an experienced MT4/MT5 developer to analyze my trading history and replicate the strategy in a new Expert Advisor (EA). The developer must have proven experience in reverse engineering strategies, analyzing trading data, and developing EAs across various trading methodologies. A deep understanding of XAUUDS and BTCUSD behavior, as well as chart analysis, is essential. Please note that we do not have
Title: MT5 Forex Trading Robot Development I need a MetaTrader 5 (MT5) Expert Advisor (EA) for automated Forex trading. Requirements: 1. The robot must be fully automated and capable of opening and closing trades without manual intervention. 2. Compatible with MetaTrader 5 (MT5). 3. Adjustable lot size, Stop Loss, and Take Profit settings. 4. Built-in risk management based on account balance. 5. Ability to trade

Informazioni sul progetto

Budget
300+ USD
Scadenze
da 1 a 10 giorno(i)