Specification
#property copyright "Copyright 2024, Trade Smart Fx Tools"
#property link "tradesmartfxtools.online"
#property version "1.00"
#property strict
// Global Varibles
int MAGIC_NUMBER = 0907200406;
string labelName = "tradesmartfxtools.online";
string updatedLabelName = "updated_version_label";
string updatedLabelText = "Updated version available at tradesmartfxtools.online";
string labelText = "EA by tradesmartfxtools.online";
string buyProfitLabelName = "OverallBuyProfitLabel";
string sellProfitLabelName = "OverallSellProfitLabel";
int labelFontSize = 16;
int updatedLabelFontSize = 12;
color labelColor = Yellow;
color profitLabelColor = White;
color lossLabelColor = White;
int spaceFromBottom = 50;
color updatedLabelColor = White;
int updatedSpaceFromBottom = 20;
input int fastMAPeriod = 10; // Period for fast MA
input int slowMAPeriod = 25; // Period for slow MA
//+------------------------------------------------------------------+
//| Labels |
//+------------------------------------------------------------------+
void createOrUpdateLabels(double buyProfit, double sellProfit)
{
if(ObjectFind(0, labelName) == -1)
{
ObjectCreate(0, labelName, OBJ_LABEL, 0, 0, 0);
}
ObjectSetInteger(0, labelName, OBJPROP_CORNER, CORNER_LEFT_LOWER);
ObjectSetInteger(0, labelName, OBJPROP_XDISTANCE, 10);
ObjectSetInteger(0, labelName, OBJPROP_YDISTANCE, spaceFromBottom);
ObjectSetInteger(0, labelName, OBJPROP_COLOR, labelColor);
ObjectSetInteger(0, labelName, OBJPROP_FONTSIZE, labelFontSize);
ObjectSetInteger(0, labelName, OBJPROP_SELECTABLE, false);
ObjectSetInteger(0, labelName, OBJPROP_SELECTED, false);
ObjectSetString(0, labelName, OBJPROP_TEXT, labelText);
if(ObjectFind(0, updatedLabelName) == -1)
{
ObjectCreate(0, updatedLabelName, OBJ_LABEL, 0, 0, 0);
}
ObjectSetInteger(0, updatedLabelName, OBJPROP_CORNER, CORNER_LEFT_LOWER);
ObjectSetInteger(0, updatedLabelName, OBJPROP_XDISTANCE, 10);
ObjectSetInteger(0, updatedLabelName, OBJPROP_YDISTANCE, updatedSpaceFromBottom);
ObjectSetInteger(0, updatedLabelName, OBJPROP_COLOR, updatedLabelColor);
ObjectSetInteger(0, updatedLabelName, OBJPROP_FONTSIZE, updatedLabelFontSize);
ObjectSetString(0, updatedLabelName, OBJPROP_TEXT, updatedLabelText);
// Create or update the buy profit label
string buyProfitText = "Overall Buy Profit: " + DoubleToString(buyProfit, 2);
if(ObjectFind(0, buyProfitLabelName) == -1)
{
ObjectCreate(0, buyProfitLabelName, OBJ_LABEL, 0, 0, 0);
}
ObjectSetInteger(0, buyProfitLabelName, OBJPROP_CORNER, CORNER_LEFT_UPPER);
ObjectSetInteger(0, buyProfitLabelName, OBJPROP_XDISTANCE, 20);
ObjectSetInteger(0, buyProfitLabelName, OBJPROP_YDISTANCE, spaceFromBottom - 6); // Adjusted Y position
ObjectSetInteger(0, buyProfitLabelName, OBJPROP_COLOR, profitLabelColor);
ObjectSetInteger(0, buyProfitLabelName, OBJPROP_FONTSIZE, labelFontSize);
ObjectSetInteger(0, buyProfitLabelName, OBJPROP_SELECTABLE, false);
ObjectSetInteger(0, buyProfitLabelName, OBJPROP_SELECTED, false);
ObjectSetString(0, buyProfitLabelName, OBJPROP_TEXT, buyProfitText);
// Create or update the sell profit label
string sellProfitText = "Overall Sell Profit: " + DoubleToString(sellProfit, 2);
if(ObjectFind(0, sellProfitLabelName) == -1)
{
ObjectCreate(0, sellProfitLabelName, OBJ_LABEL, 0, 0, 0);
}
ObjectSetInteger(0, sellProfitLabelName, OBJPROP_CORNER, CORNER_LEFT_UPPER);
ObjectSetInteger(0, sellProfitLabelName, OBJPROP_XDISTANCE, 20);
ObjectSetInteger(0, sellProfitLabelName, OBJPROP_YDISTANCE, spaceFromBottom - 36); // Adjusted Y position
ObjectSetInteger(0, sellProfitLabelName, OBJPROP_COLOR, lossLabelColor);
ObjectSetInteger(0, sellProfitLabelName, OBJPROP_FONTSIZE, labelFontSize);
ObjectSetInteger(0, sellProfitLabelName, OBJPROP_SELECTABLE, false);
ObjectSetInteger(0, sellProfitLabelName, OBJPROP_SELECTED, false);
ObjectSetString(0, sellProfitLabelName, OBJPROP_TEXT, sellProfitText);
}
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
createOrUpdateLabels(0.0, 0.0); // Initialize labels with 0 profit and trade counts
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
// Delete the main EA label
if(ObjectFind(0, labelName) != -1)
ObjectDelete(0, labelName);
// Delete the updated version label
if(ObjectFind(0, updatedLabelName) != -1)
ObjectDelete(0, updatedLabelName);
// Delete the buy profit label
if(ObjectFind(0, buyProfitLabelName) != -1)
ObjectDelete(0, buyProfitLabelName);
// Delete the sell profit label
if(ObjectFind(0, sellProfitLabelName) != -1)
ObjectDelete(0, sellProfitLabelName);
Print("All labels have been removed.");
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
double totalBuyProfit = 0.0;
double totalSellProfit = 0.0;
// Calculate total buy and sell profits and count trades
for(int i = OrdersTotal() - 1; i >= 0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderSymbol() == _Symbol)
{
if(OrderType() == OP_BUY)
{
totalBuyProfit += OrderProfit();
}
else
if(OrderType() == OP_SELL)
{
totalSellProfit += OrderProfit();
}
}
}
createOrUpdateLabels(totalBuyProfit, totalSellProfit);
CloseProfitableTradesOnMACrossover();
}
//+------------------------------------------------------------------+
//| Close Profitable Trades On MA Crossover |
//+------------------------------------------------------------------+
void CloseProfitableTradesOnMACrossover()
{
double fastMA = iMA(NULL, 0, fastMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 0);
double slowMA = iMA(NULL, 0, slowMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 0);
double fastMA_prev = iMA(NULL, 0, fastMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);
double slowMA_prev = iMA(NULL, 0, slowMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);
// Check for crossover
bool bullishCrossover = fastMA_prev < slowMA_prev && fastMA > slowMA;
bool bearishCrossover = fastMA_prev > slowMA_prev && fastMA < slowMA;
if(bullishCrossover || bearishCrossover)
{
// Loop through all open trades
int totalOrders = OrdersTotal();
if(totalOrders == 0)
{
Print("No open orders found.");
return;
}
for(int i = totalOrders - 1; i >= 0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
// Check if the trade is profitable
double profit = OrderProfit();
if(profit >= 0)
{
// Attempt to close the order
bool closed = false;
if(OrderType() == OP_BUY)
{
closed = OrderClose(OrderTicket(), OrderLots(), Bid, 2, clrRed);
if(closed)
Print("Closed profitable Buy order ", OrderTicket(), " with profit: ", profit);
else
Print("Error closing Buy order ", OrderTicket(), ": Error code ", GetLastError());
}
else
if(OrderType() == OP_SELL)
{
closed = OrderClose(OrderTicket(), OrderLots(), Ask, 2, clrRed);
if(closed)
Print("Closed profitable Sell order ", OrderTicket(), " with profit: ", profit);
else
Print("Error closing Sell order ", OrderTicket(), ": Error code ", GetLastError());
}
}
else
{
Print("Order ", OrderTicket(), " is not profitable, skipping.");
}
}
else
{
Print("Error selecting order ", i, ": Error code ", GetLastError());
}
}
}
}
//+------------------------------------------------------------------+
Responded
1
Rating
Projects
363
30%
Arbitration
37
27%
/
65%
Overdue
10
3%
Busy
Published: 10 codes
2
Rating
Projects
209
61%
Arbitration
10
80%
/
0%
Overdue
0
Free
Published: 1 code
3
Rating
Projects
570
37%
Arbitration
106
39%
/
33%
Overdue
17
3%
Free
4
Rating
Projects
2
0%
Arbitration
1
0%
/
0%
Overdue
0
Free
5
Rating
Projects
403
28%
Arbitration
40
40%
/
50%
Overdue
1
0%
Free
6
Rating
Projects
741
34%
Arbitration
49
53%
/
39%
Overdue
15
2%
Working
7
Rating
Projects
269
29%
Arbitration
2
50%
/
0%
Overdue
3
1%
Working
Published: 2 codes
8
Rating
Projects
478
40%
Arbitration
105
40%
/
24%
Overdue
82
17%
Loaded
Published: 2 codes
Similar orders
Staddle
30+ USD
"10 * 0.01, 10 * 0.03, 10 * 0.05. Place a limit order one dollar above the market price, a sell-side limit order below the market price, and a trailing stop loss. The goal is to safely book profits incrementally as the market moves." Agar aapko is poore concept ya strategy ko kisi MQL5 code comment ke liye ya apne trading plan mein document karne ke liye ek formal description chahiye, toh aap yeh bhi use kar sakte
SELINA
30+ USD
1. Delta: choose the contract Calls: delta between +0.45 and +0.60 . Puts: delta between −0.45 and −0.60 . Prefer liquid contracts with tight spreads. Skip if no contract fits the risk budget. 2. Gamma: control rapid changes in exposure Read the contract’s live gamma and monitor it each minute. Reject contracts with missing or stale Greeks. Flag high gamma near the strike, especially as expiry approaches. If gamma
Hello developers,I am looking for an experienced MQL5 developer to create an EA based on Moving Average retest strategy with advanced recovery system.The concept is simple: Entry is based on MA close and retest. Initial trade has small TP and no SL.If price goes against the initial position, the EA should manage it using:Opposite hedge tradePending limit grid systemBasket take profitMartingale lot multiplier after
Thujkkds
30 - 200 USD
Me and I will be there thank you for your help and sub and sub and sub in the morning to get the season and the screen is on the way home now and I will motho
Goldn zon
30+ USD
Hello, I am looking for a developer. I have a robust strategy based on Fibonacci, which I call "Goldn Zon." I tested it myself throughout the month of September, and now I would like to have a bot implement it so that it can trade continuously
Hello, I am looking for an experienced MQL5 developer to design, develop, and test one very fast, aggressive ultra-scalping Expert Advisor exclusively for MetaTrader 5 (MT5). I do not have a predefined trading strategy, so I need someone who can independently research and develop a suitable strategy rather than simply code existing instructions. My requirements include: Strategy research, design, and MQL5 development
buy stop sell stop logic experienced understand programmer need for this job... first understand logic and interested please message .... i need minimum 4 exit logic idea from developer same logic existing ea welcomes with mql file 4 types of entry 1-place stop orders candle high above and low below based 2- when i start point ea hh candle buy stop entry, after ll sell stop 3- i put entry point for buy stop or sell
I am looking for MQL5 developers to pitch solutions or build an Expert Advisor (EA) for XAUUSD (Gold) designed to capture high-volatility price movements during major high-impact news events (NFP, CPI, FOMC). Key Requirements: News Filter: Must use MQL5's built-in economic calendar ( CalendarValueHistory ) to automatically detect and trigger during high-impact USD news, remaining inactive during normal hours
I need an experienced MQL5 developer to build a simple, reliable Expert Advisor for MetaTrader 5. Trading Strategy Symbol: EURUSD (configurable) Timeframe: M15 (configurable) Buy Conditions: Candle 2 closes below the lower Bollinger Band. Candle 1 closes back above the lower Bollinger Band. Enter BUY at the first available tick of the next candle. Sell Conditions: Candle 2 closes above the upper Bollinger Band
MT5 to MEXC web trading
50+ USD
Hi gentlemen, I want MT5 market orders placed (open and close orders) on MEXC trading through web browser. MEXC doesnt allow algo trading. - Need source code budget: USD 50 (quote me your price and delivery time) I need this at the earliest and this job is only for mexc.com, not binance or any other exchange I look forward to your price offer and your suggestions. Appreciate
Project information
Budget
40+ USD