EA_Gold_MNAKOO

MQL4 Asesores Expertos

Tarea técnica

//+------------------------------------------------------------------+
//| XAUUSD Automated Forex Robot                                     |
//| Enhanced Version with Error Handling and Improvements           |
//+------------------------------------------------------------------+
input int FastMA = 10;                 // Fast moving average period
input int SlowMA = 50;                 // Slow moving average period
input int RSI_Period = 14;             // RSI period
input double Overbought = 70;          // RSI overbought level
input double Oversold = 30;            // RSI oversold level
input double RiskPercent = 1.0;        // Risk per trade as a percentage of account equity
input double ATRMultiplier = 2.0;      // ATR multiplier for stop-loss
input double TrailingStop = 300;       // Trailing stop in points
input double MinLotSize = 0.01;        // Minimum lot size
input double LotStep = 0.01;           // Lot size increment
input int ATR_Period = 14;             // ATR period
input int MaxSlippage = 3;             // Maximum slippage in points
input int MAGIC_NUMBER = 123456;       // Unique identifier for trades
input string TradeComment = "XAUUSD Bot"; // Trade comment

//+------------------------------------------------------------------+
//| OnTick Function - Main Logic                                     |
//+------------------------------------------------------------------+
void OnTick() {
    // Calculate indicators
    static double fastMA, slowMA, rsi, atr;
    fastMA = iMA(NULL, 0, FastMA, 0, MODE_EMA, PRICE_CLOSE, 0);
    slowMA = iMA(NULL, 0, SlowMA, 0, MODE_EMA, PRICE_CLOSE, 0);
    rsi = iRSI(NULL, 0, RSI_Period, PRICE_CLOSE, 0);
    atr = iATR(NULL, 0, ATR_Period, 0);

    // Check for existing trades
    bool buyOpen = IsTradeOpen(OP_BUY);
    bool sellOpen = IsTradeOpen(OP_SELL);

    // Entry logic
    if (fastMA > slowMA && rsi > Oversold && rsi < 50 && !buyOpen) {
        // Buy Signal
        double sl = Bid - ATRMultiplier * atr;
        double tp = Bid + ATRMultiplier * atr * 2;
        double lotSize = CalculateLotSize(sl);
        OpenTrade(OP_BUY, lotSize, sl, tp);
    }

    if (fastMA < slowMA && rsi < Overbought && rsi > 50 && !sellOpen) {
        // Sell Signal
        double sl = Ask + ATRMultiplier * atr;
        double tp = Ask - ATRMultiplier * atr * 2;
        double lotSize = CalculateLotSize(sl);
        OpenTrade(OP_SELL, lotSize, sl, tp);
    }

    // Exit logic (Close trades when conditions reverse)
    if (buyOpen && (fastMA < slowMA || rsi >= Overbought)) {
        CloseTrade(OP_BUY);
    }

    if (sellOpen && (fastMA > slowMA || rsi <= Oversold)) {
        CloseTrade(OP_SELL);
    }

    // Manage Trailing Stop
    ManageTrailingStop();
}

//+------------------------------------------------------------------+
//| Calculate Lot Size Based on Risk                                 |
//+------------------------------------------------------------------+
double CalculateLotSize(double stopLossPrice) {
    double accountEquity = AccountEquity();
    double riskAmount = (RiskPercent / 100) * accountEquity;
    double stopLossDistance = MathAbs(Bid - stopLossPrice);
    double lotSize = riskAmount / (stopLossDistance * MarketInfo(Symbol(), MODE_TICKVALUE));

    // Adjust lot size to broker limits
    lotSize = MathMax(lotSize, MinLotSize);
    lotSize = NormalizeDouble(MathFloor(lotSize / LotStep) * LotStep, 2);
    return lotSize;
}

//+------------------------------------------------------------------+
//| Open Trade Function                                              |
//+------------------------------------------------------------------+
void OpenTrade(int tradeType, double lotSize, double stopLoss, double takeProfit) {
    double price = tradeType == OP_BUY ? Ask : Bid;
    int ticket = OrderSend(Symbol(), tradeType, lotSize, price, MaxSlippage, stopLoss, takeProfit, TradeComment, MAGIC_NUMBER, 0, Blue);
    if (ticket < 0) {
        int errorCode = GetLastError();
        Print("Error opening trade: ", errorCode, ". Retrying...");
        Sleep(1000); // Retry after 1 second
        ticket = OrderSend(Symbol(), tradeType, lotSize, price, MaxSlippage, stopLoss, takeProfit, TradeComment, MAGIC_NUMBER, 0, Blue);
        if (ticket < 0) {
            Print("Failed to open trade after retry. Error: ", GetLastError());
        }
    } else {
        Print("Trade opened: ", ticket);
    }
}

//+------------------------------------------------------------------+
//| Close Trade Function                                             |
//+------------------------------------------------------------------+
void CloseTrade(int tradeType) {
    for (int i = OrdersTotal() - 1; i >= 0; i--) {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
            if (OrderSymbol() == Symbol() && OrderType() == tradeType && OrderMagicNumber() == MAGIC_NUMBER) {
                int ticket = OrderClose(OrderTicket(), OrderLots(), tradeType == OP_BUY ? Bid : Ask, MaxSlippage, Red);
                if (ticket < 0) {
                    Print("Error closing trade: ", GetLastError());
                } else {
                    Print("Trade closed: ", ticket);
                }
            }
        }
    }
}

//+------------------------------------------------------------------+
//| Manage Trailing Stop Function                                    |
//+------------------------------------------------------------------+
void ManageTrailingStop() {
    for (int i = OrdersTotal() - 1; i >= 0; i--) {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == MAGIC_NUMBER) {
                double newStopLoss;
                if (OrderType() == OP_BUY) {
                    newStopLoss = Bid - TrailingStop * Point;
                    if (newStopLoss > OrderStopLoss()) {
                        OrderModify(OrderTicket(), OrderOpenPrice(), newStopLoss, OrderTakeProfit(), 0, Blue);
                    }
                } else if (OrderType() == OP_SELL) {
                    newStopLoss = Ask + TrailingStop * Point;
                    if (newStopLoss < OrderStopLoss()) {
                        OrderModify(OrderTicket(), OrderOpenPrice(), newStopLoss, OrderTakeProfit(), 0, Blue);
                    }
                }
            }
        }
    }
}

//+------------------------------------------------------------------+
//| Check if Trade Exists                                            |
//+------------------------------------------------------------------+
bool IsTradeOpen(int tradeType) {
    for (int i = OrdersTotal() - 1; i >= 0; i--) {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
            if (OrderSymbol() == Symbol() && OrderType() == tradeType && OrderMagicNumber() == MAGIC_NUMBER) {
                return true;
            }
        }
    }
    return false;
}

Archivos adjuntos:

Han respondido

1
Desarrollador 1
Evaluación
(156)
Proyectos
196
59%
Arbitraje
10
80% / 0%
Caducado
0
Trabaja
Ha publicado: 1 ejemplo
2
Desarrollador 2
Evaluación
(253)
Proyectos
316
29%
Arbitraje
34
26% / 65%
Caducado
10
3%
Libre
3
Desarrollador 3
Evaluación
(33)
Proyectos
38
21%
Arbitraje
5
0% / 60%
Caducado
0
Libre
4
Desarrollador 4
Evaluación
(328)
Proyectos
511
19%
Arbitraje
33
45% / 30%
Caducado
34
7%
Trabajando
5
Desarrollador 5
Evaluación
(9)
Proyectos
20
10%
Arbitraje
4
50% / 50%
Caducado
5
25%
Libre
6
Desarrollador 6
Evaluación
(432)
Proyectos
632
53%
Arbitraje
32
53% / 22%
Caducado
6
1%
Trabajando
7
Desarrollador 7
Evaluación
(5)
Proyectos
8
13%
Arbitraje
3
0% / 33%
Caducado
2
25%
Libre
Ha publicado: 1 ejemplo
8
Desarrollador 8
Evaluación
(12)
Proyectos
13
23%
Arbitraje
7
0% / 71%
Caducado
3
23%
Trabaja
9
Desarrollador 9
Evaluación
(102)
Proyectos
105
60%
Arbitraje
0
Caducado
0
Libre
10
Desarrollador 10
Evaluación
(3)
Proyectos
6
17%
Arbitraje
0
Caducado
3
50%
Libre
11
Desarrollador 11
Evaluación
(4)
Proyectos
2
0%
Arbitraje
5
0% / 80%
Caducado
1
50%
Libre
12
Desarrollador 12
Evaluación
(121)
Proyectos
134
66%
Arbitraje
36
25% / 56%
Caducado
22
16%
Libre
Ha publicado: 10 ejemplos
13
Desarrollador 13
Evaluación
(469)
Proyectos
487
75%
Arbitraje
6
67% / 17%
Caducado
0
Libre
14
Desarrollador 14
Evaluación
(104)
Proyectos
169
24%
Arbitraje
23
9% / 78%
Caducado
16
9%
Trabaja
15
Desarrollador 15
Evaluación
(566)
Proyectos
655
33%
Arbitraje
42
40% / 45%
Caducado
11
2%
Ocupado
16
Desarrollador 16
Evaluación
(2)
Proyectos
1
0%
Arbitraje
1
0% / 100%
Caducado
0
Libre
17
Desarrollador 17
Evaluación
Proyectos
0
0%
Arbitraje
0
Caducado
0
Libre
Ha publicado: 1 ejemplo
18
Desarrollador 18
Evaluación
(59)
Proyectos
81
43%
Arbitraje
27
11% / 70%
Caducado
8
10%
Trabaja
19
Desarrollador 19
Evaluación
Proyectos
0
0%
Arbitraje
0
Caducado
0
Trabaja
Solicitudes similares
📌 EXPERT ADVISOR (EA) DEVELOPMENT COMPLETE A–Z FINAL REQUIREMENT DOCUMENT (FINAL VERSION) 1. 🔐 SECURITY SYSTEM (MANDATORY) The EA must include strict security checks. If any security condition fails, EA must immediately STOP trading. 1.1 Account Lock #define ALLOWED_ACCOUNT 5047656761 EA must run ONLY on this account number If account does not match: ❌ EA stops trading 🚨 Alert message 📲 Telegram notification to
Hello, and please read everything !!! I am looking for a developer who can recreate a strategy similar to an EA I already have. The EA works well on demo, especially during specific volatility windows (for example DE40 between 09:00 and 10:00 Frankfurt time), but on real accounts it produces constant losses even with IC Markets Raw and VPS close to the broker. 🎯 Objective The goal is to recreate and adapt this
As the title suggests, I need an EA whose algorithm earns commission without incurring excessive losses from the trading volume at the broker....Like Exness/Vantage, or do you have any other ideas
I need for an EA for XAUUSD using a grid + Martingle + hedging strategy developer Main features: • Open Buy & Sell at start (hedging) • Grid system with adjustable step (price-based levels) • Lot multiplier (martingale-style) • Fixed TP per trade + basket TP (close all in profit) • Continuous re-entry after TP • Risk management (max trades, max lot, equity stop) EA should be stable, error-free, and work with
Darwish 50 - 100 USD
I want a bot that runs on any timeframe, but for now, I’ll set it on 1 minute. It should watch for buy and sell signals. Each time it opens a trade, as soon as it makes a small profit like 1, 2, or 3 dollars it closes, then checks for the next signal. If it sees a buy, it buys; if it sees a sell, it sells—just repeating the cycle, over and over, until I stop it
📢 Project Title:MT5 Expert Advisor (EA) – Advanced Renko Strategy (Full Automation) 📄 Project Description:I want to develop a fully automated MT5 Expert Advisor (EA) based on my existing TradingView Renko strategy.I already have a working Pine Script that generates Buy/Sell alerts with ATR and other logic. Now I need the same strategy to be fully converted into MT5 EA with built-in Renko logic (no external
Need trading robot 30 - 100 USD
I need a trading robot specifically for gold (XAUUSD) that follows a high-probability scalping and intraday strategy based on 15-minute candle confirmations. The bot should identify key support and resistance zones, detect breakouts, fake breakouts, and pullbacks before entering trades. It must include entry conditions based on candle patterns such as engulfing and rejection wicks, and optionally fair value gaps
I need a very accurate MT5 boom and crash indicator which shows when to buy and when to sell with no repaint. The indicator should show with an arrow where to buy for boom just before the spike and sell for crash just before the spike
looking for a highly experienced mql5 developer to build a professional trading ea based on multi timeframe top down analysis and market structure concepts the system should combine higher timeframe context with lower timeframe execution and provide both precise logic and clean visual representation on chart ⸻ core requirements • implementation of multi timeframe logic higher timeframe bias combined with lower
I need an Expert Advisor (EA) for XAUUSD using a Grid + Martingale + Hedging strategy. Main features: • Open Buy & Sell at start (hedging) • Grid system with adjustable step (price-based levels) • Lot multiplier (martingale-style) • Fixed TP per trade + basket TP (close all in profit) • Continuous re-entry after TP • Risk management (max trades, max lot, equity stop) Additional requirements: • EA must include access

Información sobre el proyecto

Presupuesto
100+ USD