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
21
38% / 24%
In ritardo
32
22%
Gratuito
12
Sviluppatore 12
Valutazioni
Progetti
0
0%
Arbitraggio
1
0% / 100%
In ritardo
0
Gratuito
13
Sviluppatore 13
Valutazioni
Progetti
0
0%
Arbitraggio
0
In ritardo
0
Gratuito
Ordini simili
Project Overview I have an existing MT5 Expert Advisor (EA) written in MQL5. The source code ( .mq5 ) will be provided. The underlying strategy is a trend-following system that performs well during trending market conditions, but requires professional quantitative research to improve its ability to identify and avoid highly sideways/range-bound market conditions. The objective of this project is not to build a new EA
I am looking for an experienced MQL5 Expert Advisor (EA) developer to analyze an existing trading setup and develop a similar automated trading robot. Project Overview I have access to a demo trading account where trades are being executed automatically. The trading results look very promising, but I do not know exactly what strategy, logic, indicators, or trade-management rules are being used. I will provide access
Most of the expert is already coded . Create a panel to show the Ratio for the Range . Trigger is based on ratio . Show Distribution / project starts after we clear Distribution
Modification of existing ea …. Add ema filter, add risk percentage per trade, and modify the pips per day filter. I already have the ea code I just need these things added and modifified
Expert Advisors 300+ USD
double CRiskManager::CalculateLotSize(double slPoints) { double balance = AccountInfoDouble(ACCOUNT_BALANCE); double riskMoney = balance * (m_riskPercent / 100.0); double tickValue = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE); double tickSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE); double pointValue = tickValue / tickSize; double lot = riskMoney / (slPoints * pointValue);
i share my strategy i need a bot trending bot fo mt5 . i attached the photo with this it help to make bot. it basicly 1 hours time frame base. i try but failed to make it
Title: Simple background trading bot for my Oanda account (v20 REST API) Overview Hi, I need a simple, lightweight event based standalone trading bot that connects directly to my Oanda account using broker’s standard REST API (V20 account) via VPS The bot just needs to look at group of 5 currency pairs (manually selectable and adjustable) in different 4 baskets, do some basic percentage math every period, and place
MQL5 Developer 30+ USD
📄 وثيقة المواصفات الفنية لروبوت التداول (MQL5 EA Specification) 📌 1. ملخص المشروع والهدف * اسم المشروع: Gold Cent Grid-Hedge EA * المنصة: MetaTrader 5 (MQL5) * أداة التداول: الذهب (XAUUSD) * نوع الحساب: حساب سنت (Cent Account) * فكرة الاستراتيجية: تداول شبكة هيدج متوازنة (Grid-Hedging) تفتح صفقات تعزيز كل مسافة محددة، وتغلق الطرف الأكثر ربحاً عند تحقيق هدف مالّي مجمع بالدولار/السنت لإعادة هيكلة التوازن. ⚙️ 2
I need a developer who also understands trading. I have a Telegram copy-trading bot that reads signals from a Telegram channel via a Python script and converts them into trading orders. I want to create a program that analyzes Gold (XAUUSD) charts specifically and sends signals in this exact format: #XAUUSD BUY 4324-4321 TP 4327 TP 4330 TP 4334 TP 4339 TP 4344 TP 4354 TP 4364 SL 4311 If the # symbol is missing at the
Hi developer I want to convert my mt4 EA to mt5 EA . I have a mt4 ea with source code. i want developer to copy same mt4 code and create mt5 EA

Informazioni sul progetto

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