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
210
61%
Arbitration
10
80%
/
0%
Overdue
0
Free
Published: 1 code
2
Rating
Projects
367
30%
Arbitration
37
27%
/
65%
Overdue
10
3%
Working
Published: 10 codes
3
Rating
Projects
38
21%
Arbitration
5
0%
/
60%
Overdue
0
Free
4
Rating
Projects
515
19%
Arbitration
35
46%
/
31%
Overdue
34
7%
Working
5
Rating
Projects
20
10%
Arbitration
4
50%
/
50%
Overdue
5
25%
Free
6
Rating
Projects
649
53%
Arbitration
35
63%
/
20%
Overdue
7
1%
Working
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
492
75%
Arbitration
6
67%
/
17%
Overdue
0
Loaded
14
Rating
Projects
184
25%
Arbitration
25
16%
/
76%
Overdue
16
9%
Free
15
Rating
Projects
743
34%
Arbitration
49
53%
/
39%
Overdue
14
2%
Loaded
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
83
45%
Arbitration
27
11%
/
70%
Overdue
8
10%
Free
19
Rating
Projects
0
0%
Arbitration
0
Overdue
0
Working
Similar orders
Fast Scalper EA for multiple Pairs and Gold
30 - 100 USD
USD54 Applications The bot should open trades when the price breaks out of the band by a specified percentage, for example, 0.10%. If the price breaks above the band, the bot should open a long position. If the price breaks below the band, it should open a short position. The bot should also open trades when the price touches a band: Bullish band cross: When a bullish cross occurs between the bands, the bot should
TrendPullbackEA.mq5
30+ USD
#property strict #property version "1.00" #property description "EMA Trend + Pullback + Engulfing EA" // Include the standard MT5 trade library. #include <Trade/Trade.mqh> CTrade trade; //============================================================== // INPUT SETTINGS //============================================================== // Trend indicators input int FastEMA = 20; input int SlowEMA = 50; // Pullback
Ea trades per movement but covers spread
30 - 40 USD
Hi there great developers I need someone who can create an trading ea that can open order per movement but it must cover up the spread first if it going to place an order the ea should read the spread it can use and indicator that can calculate the market point using atr if the spread is 20 points then the ea calculation the next price if it will go more then 20 points it can automatically place orders and close in
Title: Build a Semi-Automated MT5 Execution Assistant (MQL5) with Custom Panel Description: I am looking for an experienced MQL5 developer to build a semi-automated execution assistant for MetaTrader 5. I know this is a standard semi-automated panel with trade management. I am looking for a developer who has an existing GUI/panel library and standard trade management modules that can be adapted quickly. If you are
Trade copier EA
40+ USD
Develop a low-latency trade copier EA supporting MT4 and MT5 in all directions, across different brokers, with one master account copying to multiple follower accounts. Automatically adapt symbol names, price digits, contract sizes, and lot-size limits, with manual symbol mapping available. Support fixed lots, lot multipliers, and equity-proportional sizing. Synchronize market and pending orders, modifications
Hello, I’m looking for an experienced MQL5 developer to build a genuine ultra-fast HFT robot for MetaTrader 5, not a conventional scalping EA. The main instruments are EURUSD, BTCUSD, and XAUUSD. Requirements include fast execution, independent strategies, strict risk management, spread/slippage protection, separate optimization for each instrument, full MQ5 source code without a mandatory license lock, and detailed
Best trader robot
499 - 550 USD
Objective: Develop a robust and highly profitable Expert Advisor (EA) for MetaTrader based on a precise custom trading strategy to achieve a high win rate. Instrument & Timeframe: XAUUSD (Gold), optimized for M5 / M15 timeframes. Entry Strategy: Open Buy/Sell orders based on strict confirmation signals (e.g., Moving Average crossover combined with Price Action or RSI threshold). Lot Size & Risk Management
Titolo: Cerco sviluppatore per EA su XAUUSD M1 per conto reale Cerco uno sviluppatore MQL5 per creare un Expert Advisor per MetaTrader 5 su XAUUSD M1, da utilizzare su conto reale con deposito iniziale di 100–200 €. La strategia prevede un Buy Stop a 1,00 sopra l’Ask e un Sell Stop a 1,00 sotto il Bid, entrambi con stop loss iniziale di 1,00 e senza take profit fisso. I pendenti devono restare fermi: quando uno viene
I am looking for a skilled MQL5 developer to create a robust, institutional-grade Expert Advisor for MT5, optimized for Gold (XAUUSD). The EA must comply strictly with prop firm rules. Key Requirements: Asset: XAUUSD (Gold) on MT5 Risk Management: Strict Stop-Loss & Take-Profit on every order. Absolute daily max loss, overall max drawdown guard, and percentage risk per trade. No High Risk: NO Martingale, Grid, or
Master Scalping EA
30+ USD
// Meta Scalper EA - RSI + Breakout + Lot Management #property strict #include <Trade\Trade.mqh> CTrade trade; input int RSI_Period=14; input double RSI_Overbought=70; input double RSI_Oversold=30; input int Breakout_Period=20; input int ATR_Period=14; input double ATR_Multiplier_SL=1.5; input double ATR_Multiplier_TP=3.0; input bool UseRiskPercent=true; input double RiskPercent=2.0; input double FixedLot=0.1; input
Project information
Budget
100+ USD