Техническое задание
#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());
}
}
}
}
//+------------------------------------------------------------------+
Откликнулись
1
Оценка
Проекты
322
30%
Арбитраж
34
26%
/
65%
Просрочено
10
3%
Работает
2
Оценка
Проекты
198
59%
Арбитраж
10
80%
/
0%
Просрочено
0
Работает
Опубликовал: 1 пример
3
Оценка
Проекты
570
37%
Арбитраж
106
39%
/
33%
Просрочено
17
3%
Свободен
4
Оценка
Проекты
2
0%
Арбитраж
1
0%
/
0%
Просрочено
0
Свободен
5
Оценка
Проекты
403
28%
Арбитраж
40
40%
/
50%
Просрочено
1
0%
Свободен
6
Оценка
Проекты
671
32%
Арбитраж
42
45%
/
45%
Просрочено
12
2%
Загружен
7
Оценка
Проекты
265
29%
Арбитраж
0
Просрочено
3
1%
Свободен
Опубликовал: 2 примера
8
Оценка
Проекты
477
40%
Арбитраж
105
40%
/
24%
Просрочено
81
17%
Загружен
Опубликовал: 2 примера
Похожие заказы
Project Overview I am looking for an experienced MQL4/MQL5 developer to create an Expert Advisor (EA) for MetaTrader 4 and MetaTrader 5 based on a Moving Average High/Low channel and Bollinger Bands strategy. The EA must support both BUY and SELL operations and use opposite signal exits. Indicators Required 1. Moving Average High Period: 5 Applied to: High Price Method: Simple Moving Average (SMA) User configurable
Joseph
30+ USD
I want robot to make money for me because the straight trading it doesn't make better money and the account shows me a R0 I don't know why but I want to make money
US30 Friday Range Breaker Pro
30 - 100 USD
Test instructions: - Run EA on US30 (Dow Jones) - Timeframe: H1 - Test period: last 3–6 months - Use default risk settings (1% per setup) - Check Friday breakout logic only Expected behavior: - EA should mark Friday High/Low - Wait for candle close breakout - Wait for retracement into range - Enter only when H1 candle closes inside range - Execute 2 trades per setup (TP1 = 1R, TP2 = 2R) - Respect 1.5% daily loss
I need help configuring my Sierra charts to run real time data, at the moment it’s running delayed data even though I have the proper subscriptions in place. I am at a last resort effort now where I want to get this problem solved efficiently. And build indicators. I need to find someone with flawless years of experience with Sierra who can accurately guide me and help me trouble shoot
MANAGERS FOR MT4 AND MT5 TRADES
49+ USD
ART 1: NUMBER OF TRADES ALLOWED IN ONE DIRECTION: Maximum number of trades in one direction = ------------------------------ ------------------------------ ------------------------------ -------------- par PART 2 PARTIAL CLOSURE OF STOPLOSS: Total STOPLOSS =------ Pips 1a: Percentage of Stoploss =--% 1b Percentage of Lot size =--% 2a: Percentage oe of Lot size =--% f Stoploss =--% 2b
MT5 Expert Advisor (EA) Acquisition Request – Proven XAUUSD Martingale / Grid EA I am looking to purchase a fully developed, actively traded, and proven MT5 Expert Advisor for XAUUSD (Gold) that uses Martingale, Grid, Averaging, Recovery, or Hybrid Recovery techniques. Mandatory Verification Requirement To be considered, please provide: - MT5 Investor Password (Read-Only Access) for verification - Account Number /
I'm looking to connect with an experienced MT5 developer who has previously built or worked on advanced trade copier systems beyond standard master-slave copying. Requirements: • Strong MT5 and MQL5 experience • Experience developing trade copiers • Familiarity with manual trade replication concepts • Knowledge of MT5 terminal architecture and execution workflows • Experience integrating MT5 with external
Asian trade session filter program
30 - 60 USD
Hello, I have two Expert Advisors (EAs) that I'm migrating to my MQL5 VPS. I need a program that I can run on a separate chart or other interface to: - Allow EA #2 (with the magic number) to trade only during the Asian session. Therefore, EA #2 needs to be blocked during all other sessions. - Allow EA #1 to trade without restriction. Thank you
Labouchere System has many series and can transfer the Units to any other Series when needed (this function is very important). Building a dedicated SeriesManager class to handle all eight arrays would be very useful to make the unit transfers "atomic," so the logic is bulletproof and we never have to worry about data errors during the series transitions. The coders who really knows this cancellation sytem can apply
Project Overview I need an MQL5 developer to review and confirm their understanding of this project before providing a quote. Objective: Backtest an Opening Range Breakout (ORB) strategy on NAS100USD and generate detailed trade documentation. Requirements: Instrument NAS100USD only. Backtesting Run the ORB strategy on historical data. Target a minimum of 200 trades if the available data allows. Advise how much
Информация о проекте
Бюджет
40+ USD