Termos de Referência
//+------------------------------------------------------------------+
//| 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;
}
Respondido
1
Classificação
Projetos
192
58%
Arbitragem
10
80%
/
0%
Expirado
0
Trabalhando
Publicou: 1 código
2
Classificação
Projetos
312
28%
Arbitragem
33
27%
/
64%
Expirado
10
3%
Trabalhando
3
Classificação
Projetos
38
21%
Arbitragem
5
0%
/
60%
Expirado
0
Livre
4
Classificação
Projetos
505
19%
Arbitragem
32
44%
/
31%
Expirado
34
7%
Carregado
5
Classificação
Projetos
20
10%
Arbitragem
4
50%
/
50%
Expirado
5
25%
Livre
6
Classificação
Projetos
628
54%
Arbitragem
30
53%
/
23%
Expirado
6
1%
Carregado
7
Classificação
Projetos
8
13%
Arbitragem
3
0%
/
33%
Expirado
2
25%
Livre
Publicou: 1 código
8
Classificação
Projetos
13
23%
Arbitragem
7
0%
/
71%
Expirado
3
23%
Trabalhando
9
Classificação
Projetos
105
60%
Arbitragem
0
Expirado
0
Livre
10
Classificação
Projetos
6
17%
Arbitragem
0
Expirado
3
50%
Livre
11
Classificação
Projetos
2
0%
Arbitragem
5
0%
/
80%
Expirado
1
50%
Livre
12
Classificação
Projetos
134
66%
Arbitragem
36
25%
/
56%
Expirado
22
16%
Livre
Publicou: 10 códigos
13
Classificação
Projetos
486
75%
Arbitragem
6
67%
/
17%
Expirado
0
Trabalhando
14
Classificação
Projetos
165
24%
Arbitragem
23
9%
/
78%
Expirado
16
10%
Trabalhando
15
Classificação
Projetos
632
33%
Arbitragem
39
38%
/
49%
Expirado
11
2%
Carregado
16
Classificação
Projetos
1
0%
Arbitragem
1
0%
/
100%
Expirado
0
Livre
17
Classificação
Projetos
0
0%
Arbitragem
0
Expirado
0
Livre
Publicou: 1 código
18
Classificação
Projetos
81
43%
Arbitragem
27
11%
/
70%
Expirado
8
10%
Livre
19
Classificação
Projetos
0
0%
Arbitragem
0
Expirado
0
Trabalhando
Pedidos semelhantes
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
Informações sobre o projeto
Orçamento
100+ USD