Tarea técnica

//+------------------------------------------------------------------+
//| 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);
   }
}

Han respondido

1
Desarrollador 1
Evaluación
(23)
Proyectos
34
53%
Arbitraje
1
100% / 0%
Caducado
1
3%
Libre
2
Desarrollador 2
Evaluación
Proyectos
0
0%
Arbitraje
0
Caducado
0
Libre
3
Desarrollador 3
Evaluación
(3)
Proyectos
3
0%
Arbitraje
0
Caducado
0
Libre
4
Desarrollador 4
Evaluación
Proyectos
0
0%
Arbitraje
0
Caducado
0
Libre
5
Desarrollador 5
Evaluación
(4)
Proyectos
3
33%
Arbitraje
2
0% / 100%
Caducado
0
Libre
6
Desarrollador 6
Evaluación
(10)
Proyectos
15
13%
Arbitraje
6
0% / 67%
Caducado
2
13%
Libre
7
Desarrollador 7
Evaluación
(6)
Proyectos
8
0%
Arbitraje
8
13% / 88%
Caducado
0
Libre
8
Desarrollador 8
Evaluación
(13)
Proyectos
20
40%
Arbitraje
3
0% / 67%
Caducado
3
15%
Libre
9
Desarrollador 9
Evaluación
(1)
Proyectos
1
0%
Arbitraje
3
0% / 100%
Caducado
1
100%
Libre
10
Desarrollador 10
Evaluación
(5)
Proyectos
5
60%
Arbitraje
1
0% / 0%
Caducado
2
40%
Libre
Ha publicado: 1 ejemplo
11
Desarrollador 11
Evaluación
(64)
Proyectos
144
46%
Arbitraje
20
40% / 20%
Caducado
32
22%
Libre
12
Desarrollador 12
Evaluación
Proyectos
0
0%
Arbitraje
1
0% / 0%
Caducado
0
Trabaja
13
Desarrollador 13
Evaluación
Proyectos
0
0%
Arbitraje
0
Caducado
0
Libre
Solicitudes similares
We have a professionally built MT5 security and monitoring module with pre-written code. We need an experienced MQL5 developer to REVIEW, FIX, and CERTIFY the SENTINEL MODULE. YOU ARE NOT BUILDING FROM SCRATCH. You are reviewing 6 existing .mqh files. WHAT YOU WILL DO: 1. Review 6 pre-written Sentinel module files 2. Verify drawdown calculations (3% daily / 7% total) 3. Fix DD warning spam bug (fires every tick —
We have a professionally built MT5 Expert Advisor with pre-written code ready. We need an experienced MQL5 developer to REVIEW, FIX, and CERTIFY the ENGINE MODULE. YOU ARE NOT BUILDING FROM SCRATCH. You are reviewing 8 existing .mqh files. WHAT YOU WILL DO: 1. Review 8 pre-written .mqh engine files 2. Fix known shutdown bug: "invalid pointer access in AlmudoEngine.mqh (60,10)" 3. Achieve ZERO warnings in MT5 Build
I do not have any startegy, and I want you to create one with your experience, you will provide me EA along with source code. you may use Grid or any logic, but the EA should keep generating profit during Newyourk and Asian session
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
Hi,I am looking for an experienced developer specializing in the creation of Expert Advisors (EAs) for trading platforms. I would like to commission the development of an EA based on the open-source LuxAlgo code. The entry strategy will be based, among other things, on Martingale and Grid trading concepts. A detailed specification covering trade management, position sizing, and risk management rules will be provided
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
Dear All i am working on strategy in forex market specifically in xausud and i just want someone to make it automatic execution mode as per my requirements with propee risk management my broker is exness and i have an account in MT5
✅ 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 need expert developer that have been develop so many profitable AI bots that work for mt5 and ctrader autonomously if you know you can easily execute this requirement bid for it. NOTE:- YOU MUST COME WITH SAMPLE FOR THE 2 TRADING PLATFORM. While i take a look at your profile and reach out to you thanks

Información sobre el proyecto

Presupuesto
300+ USD
Plazo límite de ejecución
de 1 a 10 día(s)