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;
}
Han respondido
1
Evaluación
Proyectos
192
58%
Arbitraje
10
80%
/
0%
Caducado
0
Trabaja
Ha publicado: 1 ejemplo
2
Evaluación
Proyectos
312
28%
Arbitraje
33
27%
/
64%
Caducado
10
3%
Trabaja
3
Evaluación
Proyectos
38
21%
Arbitraje
5
0%
/
60%
Caducado
0
Libre
4
Evaluación
Proyectos
505
19%
Arbitraje
32
44%
/
31%
Caducado
34
7%
Trabajando
5
Evaluación
Proyectos
20
10%
Arbitraje
4
50%
/
50%
Caducado
5
25%
Libre
6
Evaluación
Proyectos
628
54%
Arbitraje
30
53%
/
23%
Caducado
6
1%
Trabajando
7
Evaluación
Proyectos
8
13%
Arbitraje
3
0%
/
33%
Caducado
2
25%
Libre
Ha publicado: 1 ejemplo
8
Evaluación
Proyectos
13
23%
Arbitraje
7
0%
/
71%
Caducado
3
23%
Trabaja
9
Evaluación
Proyectos
105
60%
Arbitraje
0
Caducado
0
Libre
10
Evaluación
Proyectos
6
17%
Arbitraje
0
Caducado
3
50%
Libre
11
Evaluación
Proyectos
2
0%
Arbitraje
5
0%
/
80%
Caducado
1
50%
Libre
12
Evaluación
Proyectos
134
66%
Arbitraje
36
25%
/
56%
Caducado
22
16%
Libre
Ha publicado: 10 ejemplos
13
Evaluación
Proyectos
486
75%
Arbitraje
6
67%
/
17%
Caducado
0
Trabaja
14
Evaluación
Proyectos
165
24%
Arbitraje
23
9%
/
78%
Caducado
16
10%
Trabaja
15
Evaluación
Proyectos
632
33%
Arbitraje
39
38%
/
49%
Caducado
11
2%
Trabajando
16
Evaluación
Proyectos
1
0%
Arbitraje
1
0%
/
100%
Caducado
0
Libre
17
Evaluación
Proyectos
0
0%
Arbitraje
0
Caducado
0
Libre
Ha publicado: 1 ejemplo
18
Evaluación
Proyectos
81
43%
Arbitraje
27
11%
/
70%
Caducado
8
10%
Libre
19
Evaluación
Proyectos
0
0%
Arbitraje
0
Caducado
0
Trabaja
Solicitudes similares
Olá, Sou um comprador sério interessado em adquirir um Expert Advisor (EA) já existente, estável e rentável, projetado especificamente para: 👉 principalmente (XAUUSD) ou qualquer outro câmbio Trata-se de um pedido de compra integral. ⚠️ Não estou interessado em criar um novo EA do zero. Somente sistemas prontos para uso e comprovados, com histórico real de desempenho. ✅ Requisitos da EA (Rigorosos) 📌 Símbolo e
Money Manger/monitor changes
30 - 100 USD
My EA (Expert Advisor) is a powerhouse! 💪 With rock-solid 100% risk management, it lets you trade stress-free while maximizing gains. Free to manage manually, it's designed to boost profitability. 🚀
Grid bot for pionex bitmart, gateio
100 - 350 USD
Hello, Primary goal: convert the existing MQL5 strategy logic to Python as soon as possible and make it work for API trading (order management, exchange connection, basic bot structure). I want to keep the core logic unchanged . I haven’t chosen the exchange yet (must be usable in the EU ). Binance, OKX, Kraken, and Bybit are not options. Bitmart, pionex, gateio are options. Secondary goal (code reduction): the
This post is subject to developers response . Edit the post as you like . May be with me you can make a come back . So , , , Shift calculations . More to the calculation then you can comprehend is known . What else comes to your mind
This first robot I'm needing to order a robot that will help me with my trading and make it most efficient Help me with my margins my signals or anything I need to do associated to my trading or classroom
1- In the Universal EA that I currently have, in MA mode under the Take Profit options, when using the “Kill positions + clean one buy one” option, the counter resets itself before the accumulated loss is fully recovered while the loss stored in memory is being cleared. If fixing this is not possible, then I would like to modify the method as follows: Instead of clearing the accumulated losses in the Losses Pool one
1. Shift the Time Gate (Critical) Current start time: 08:30 New required start time: 08:35:01 The EA is currently triggering trades too early (between 08:25 – 08:30 ), which is causing incorrect entries. Please ensure the EA cannot enter any trade before 08:35:01 . 2. Change Order Execution Logic The current code is using Pending Orders . Please remove pending order logic completely . Replace it with Direct Market
Robot auto trading
30+ USD
Here is an example of Requirements Specification for the development of the MACD Sample Expert Advisor, which is available in the MetaTrader 5 standard package. 1. The idea of the trading system is as follows : market entries are performed when MACD's main and signal lines intersect in the current trend direction . 2. Trend is determined based on the Exponential Moving Average with the specified period
Here is an example of Requirements Specification for the development of the MACD Sample Expert Advisor, which is available in the MetaTrader 5 standard package. 1. The idea of the trading system is as follows: market entries are performed when MACD's main and signal lines intersect in the current trend direction. 2. Trend is determined based on the Exponential Moving Average with the specified period
I am looking for a pre-built MetaTrader 5 (MT5) Expert Advisor (EA) that can fully automate trading on major currency pairs such as EURUSD, AUDUSD, EURCAD, and USDCAD. Requirements: Fully automated trading (no manual intervention required) Compatible with MT5 platform Designed for consistent, long-term performance Demonstrated average monthly return of at least 3% Verified backtest and/or live trading results showing
Información sobre el proyecto
Presupuesto
100+ USD