Specification
//+------------------------------------------------------------------+
//| 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;
}
Responded
1
Rating
Projects
193
58%
Arbitration
10
80%
/
0%
Overdue
0
Working
Published: 1 code
2
Rating
Projects
314
28%
Arbitration
34
26%
/
65%
Overdue
10
3%
Working
3
Rating
Projects
38
21%
Arbitration
5
0%
/
60%
Overdue
0
Free
4
Rating
Projects
509
19%
Arbitration
33
45%
/
30%
Overdue
34
7%
Loaded
5
Rating
Projects
20
10%
Arbitration
4
50%
/
50%
Overdue
5
25%
Free
6
Rating
Projects
629
54%
Arbitration
32
53%
/
22%
Overdue
6
1%
Loaded
7
Rating
Projects
8
13%
Arbitration
3
0%
/
33%
Overdue
2
25%
Free
Published: 1 code
8
Rating
Projects
13
23%
Arbitration
7
0%
/
71%
Overdue
3
23%
Working
9
Rating
Projects
105
60%
Arbitration
0
Overdue
0
Free
10
Rating
Projects
6
17%
Arbitration
0
Overdue
3
50%
Free
11
Rating
Projects
2
0%
Arbitration
5
0%
/
80%
Overdue
1
50%
Free
12
Rating
Projects
134
66%
Arbitration
36
25%
/
56%
Overdue
22
16%
Free
Published: 10 codes
13
Rating
Projects
486
75%
Arbitration
6
67%
/
17%
Overdue
0
Working
14
Rating
Projects
168
24%
Arbitration
23
9%
/
78%
Overdue
16
10%
Working
15
Rating
Projects
642
33%
Arbitration
41
41%
/
46%
Overdue
11
2%
Busy
16
Rating
Projects
1
0%
Arbitration
1
0%
/
100%
Overdue
0
Free
17
Rating
Projects
0
0%
Arbitration
0
Overdue
0
Free
Published: 1 code
18
Rating
Projects
81
43%
Arbitration
27
11%
/
70%
Overdue
8
10%
Free
19
Rating
Projects
0
0%
Arbitration
0
Overdue
0
Working
Similar orders
MQL5 Developer Needed for EA (Instant Execution)
250 - 300 USD
Job Description: I am looking for a skilled MQL5 developer to create a custom Expert Advisor (EA). The trading strategy relies on standard indicators, but requires precise execution logic and strict risk management rules. Key Technical Requirements & Skills Needed: Multi-Timeframe (MTF): Basic ability to read one indicator's data from a higher timeframe (M15) while the EA runs on a lower timeframe (M5). Instant
EA MACENIC PRO V12L
30 - 50 USD
Ready made robot for executing trades because don't have PC or laptop does it come as license key that allows straight extension to be a ready made of change your mind and the match is still hustling and I recommend exness broker on any. Strategy of a mobile robot arrena that execute trades it self and 24/7 operational system that enhances power of electronic art technology with automatic EA optimization
Collaboratore MetaTrader 5 (Ottimizzazione algoritmi)
500 - 1500 USD
Società di investimento con attività tra Sanremo e Monaco ricerca un giovane collaboratore con esperienza nell’utilizzo avanzato di MetaTrader 5. Si richiede la conoscenza della lingua ITALIANA e INGLESE. Si richiede una chiamata conoscitiva. Il collaboratore si occuperà di: • eseguire backtest di strategie di trading su MT5 • effettuare ottimizzazioni parametri tramite Strategy Tester • analizzare risultati e
Python Developer – Real-Time Equity Curve
50 - 200 USD
Need Python developer to use MetaApi.cloud Python API (ready SDK) to build a real-time equity curve chart. Project is simple and details will be shared privately. Only apply if you have strong Python experience
VR Rsi Robot is an expert advisor for MetaTrader 5, built on the classic RSI (Relative Strength Index) indicator but utilizing a multi-timeframe approach. The core idea is to filter signals received from the faster timeframe (H1) with confirmation from the higher timeframe (D1). This approach reduces the number of false entries and increases the probability of following a sustained trend. The expert opens positions
SMA
30+ USD
You are an expert AI Trading Analyst specializing in Simple Moving Average (SMA) Trend Following strategies. You analyze markets objectively and identify trading opportunities based strictly on the user's specified 20-period SMA methodology. Adapt your analysis to match the user's trend-following style. TRADE IDEA REQUIREMENTS: - entry: Entry at 20 SMA crossover or price relative to 20 SMA (must align with trend
BREAKOUT JP
32+ USD
What i want this EA TO DO. Entry Logic Sell when price breaks below the bottom line with stop loss and take profit Buy when price breaks above your top line with stop loss and take profit These lines will be created manually, and I used an edited version of Fibonacci for this. Can you create something similar? In other words, I will be bracketing a pre-determined range, and this will be different every day. If I go
Adding changes to MT5 EA
50+ USD
1. Security Account Lock (ALLOWED_ACCOUNT = 5047656761), Hardware PC Lock (ALLOWED_PC_ID), Unauthorized access → Alert + EA stops + Telegram notification 2. Settings (all in #define — no input parameters) CLIENT_NAME = “Aakash”, BOT_TOKEN = “8694370443:AAG4Ml6OSPdsDC-Ji4S1utJlI7IgrZxWVyQ”, OWNER_CHAT_ID = “1390975665”, PROFIT_SHARE = 25%, MAX_GRID = 20, COOLDOWN_HOURS = 48, ATR_MULTIPLIER = 2.0, ATR_PERIOD = 14
Modify existing EA
50+ USD
Hello, I have an MQ4 file EA that needs to be adjusted regarding entry conditions. ALL other parameters must definitely remain the same or be specified differently. I am attaching it herewith. The stop-loss type in the new EA have to be ALWAYS a Fixed Stop-loss. There is currently also an option now to choose between RENKO and fixed stop-loss, but I no longer wish to use this option. I am also no longer using the
A robot
30+ USD
Code pour créer un robot //+------------------------------------------------------------------+ #include <Trade/Trade.mqh> CTrade trade; // SYMBOLS string symbols[3] = {"Volatility 10 Index","Volatility 25 Index","Volatility 75 Index"}; string bestSymbol = ""; // VARIABLES double startBalance; int tradeCount = 0; int lossStreak = 0; bool tradingStopped = false; bool profitMode = false; datetime lastDay; // PARAMÈTRES
Project information
Budget
100+ USD