Spécifications
//+------------------------------------------------------------------+
//| ICT Strategy EA |
//+------------------------------------------------------------------+
#include <Trade/Trade.mqh>
CTrade trade;
input double LotSize = 0.1; // Taille du lot
input int FVG_Lookback = 3; // Période pour détecter les FVG
input int OB_Sensitivity = 2; // Sensibilité des Order Blocks
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit() {
Print("ICT Strategy EA démarré");
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick() {
// Ne trader qu'au début d'une nouvelle bougie
if (!isNewBar()) return;
// Vérifier les sessions London/New York (ex: 8h-17h GMT)
if (!isTradingSession()) return;
// 1. Détecter les FVG
bool hasBullishFVG = detectFVG(FVG_Lookback, MODE_BULLISH);
bool hasBearishFVG = detectFVG(FVG_Lookback, MODE_BEARISH);
// 2. Identifier les Order Blocks
bool hasBullishOB = detectOrderBlock(MODE_BULLISH);
bool hasBearishOB = detectOrderBlock(MODE_BEARISH);
// 3. Vérifier la structure du marché
bool isBOS = checkMarketStructure(MODE_BULLISH);
bool isCHoCH = checkMarketStructure(MODE_BEARISH);
// Signal d'achat : FVG + OB + BOS
if (hasBullishFVG && hasBullishOB && isBOS) {
double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
trade.Buy(LotSize, _Symbol, ask, 0, 0, "ICT Buy Signal");
}
// Signal de vente : FVG + OB + CHoCH
if (hasBearishFVG && hasBearishOB && isCHoCH) {
double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
trade.Sell(LotSize, _Symbol, bid, 0, 0, "ICT Sell Signal");
}
}
//+------------------------------------------------------------------+
//| Détecte les Fair Value Gaps (FVG) |
//+------------------------------------------------------------------+
bool detectFVG(int lookback, int mode) {
double currentLow = iLow(_Symbol, PERIOD_CURRENT, 1);
double currentHigh = iHigh(_Symbol, PERIOD_CURRENT, 1);
if (mode == MODE_BULLISH) {
double highestHigh = 0;
for (int i = 2; i <= lookback + 1; i++) {
highestHigh = MathMax(highestHigh, iHigh(_Symbol, PERIOD_CURRENT, i));
}
return currentLow > highestHigh;
}
else { // MODE_BEARISH
double lowestLow = DBL_MAX;
for (int i = 2; i <= lookback + 1; i++) {
lowestLow = MathMin(lowestLow, iLow(_Symbol, PERIOD_CURRENT, i));
}
return currentHigh < lowestLow;
}
}
//+------------------------------------------------------------------+
//| Détecte les Order Blocks |
//+------------------------------------------------------------------+
bool detectOrderBlock(int mode) {
double bodySize = MathAbs(iClose(_Symbol, PERIOD_CURRENT, 1) - iOpen(_Symbol, PERIOD_CURRENT, 1));
double avgBody = 0;
for (int i = 2; i <= 10; i++) {
avgBody += MathAbs(iClose(_Symbol, PERIOD_CURRENT, i) - iOpen(_Symbol, PERIOD_CURRENT, i));
}
avgBody /= 9;
if (mode == MODE_BULLISH) {
return (iClose(_Symbol, PERIOD_CURRENT, 1) < iOpen(_Symbol, PERIOD_CURRENT, 1)) &&
(bodySize > OB_Sensitivity * avgBody) &&
(iClose(_Symbol, PERIOD_CURRENT, 0) > iOpen(_Symbol, PERIOD_CURRENT, 0));
}
else { // MODE_BEARISH
return (iClose(_Symbol, PERIOD_CURRENT, 1) > iOpen(_Symbol, PERIOD_CURRENT, 1)) &&
(bodySize > OB_Sensitivity * avgBody) &&
(iClose(_Symbol, PERIOD_CURRENT, 0) < iOpen(_Symbol, PERIOD_CURRENT, 0));
}
}
//+------------------------------------------------------------------+
//| Vérifie la structure du marché (BOS/CHoCH) |
//+------------------------------------------------------------------+
bool checkMarketStructure(int mode) {
if (mode == MODE_BULLISH) {
return (iHigh(_Symbol, PERIOD_CURRENT, 0) > iHigh(_Symbol, PERIOD_CURRENT, 1)) &&
(iHigh(_Symbol, PERIOD_CURRENT, 1) > iHigh(_Symbol, PERIOD_CURRENT, 2));
}
else { // MODE_BEARISH
return (iLow(_Symbol, PERIOD_CURRENT, 0) < iLow(_Symbol, PERIOD_CURRENT, 1)) &&
(iLow(_Symbol, PERIOD_CURRENT, 1) < iLow(_Symbol, PERIOD_CURRENT, 2));
}
}
//+------------------------------------------------------------------+
//| Vérifie si c'est une nouvelle bougie |
//+------------------------------------------------------------------+
bool isNewBar() {
static datetime lastBarTime;
datetime currentBarTime = iTime(_Symbol, PERIOD_CURRENT, 0);
if (lastBarTime != currentBarTime) {
lastBarTime = currentBarTime;
return true;
}
return false;
}
//+------------------------------------------------------------------+
//| Vérifie les heures de trading (London/NY) |
//+------------------------------------------------------------------+
bool isTradingSession() {
MqlDateTime timeStruct;
TimeCurrent(timeStruct);
int hour = timeStruct.hour; // Heure GMT
return (hour >= 8 && hour <= 17); // Session London 8h-17h GMT
}
//| ICT Strategy EA |
//+------------------------------------------------------------------+
#include <Trade/Trade.mqh>
CTrade trade;
input double LotSize = 0.1; // Taille du lot
input int FVG_Lookback = 3; // Période pour détecter les FVG
input int OB_Sensitivity = 2; // Sensibilité des Order Blocks
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit() {
Print("ICT Strategy EA démarré");
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick() {
// Ne trader qu'au début d'une nouvelle bougie
if (!isNewBar()) return;
// Vérifier les sessions London/New York (ex: 8h-17h GMT)
if (!isTradingSession()) return;
// 1. Détecter les FVG
bool hasBullishFVG = detectFVG(FVG_Lookback, MODE_BULLISH);
bool hasBearishFVG = detectFVG(FVG_Lookback, MODE_BEARISH);
// 2. Identifier les Order Blocks
bool hasBullishOB = detectOrderBlock(MODE_BULLISH);
bool hasBearishOB = detectOrderBlock(MODE_BEARISH);
// 3. Vérifier la structure du marché
bool isBOS = checkMarketStructure(MODE_BULLISH);
bool isCHoCH = checkMarketStructure(MODE_BEARISH);
// Signal d'achat : FVG + OB + BOS
if (hasBullishFVG && hasBullishOB && isBOS) {
double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
trade.Buy(LotSize, _Symbol, ask, 0, 0, "ICT Buy Signal");
}
// Signal de vente : FVG + OB + CHoCH
if (hasBearishFVG && hasBearishOB && isCHoCH) {
double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
trade.Sell(LotSize, _Symbol, bid, 0, 0, "ICT Sell Signal");
}
}
//+------------------------------------------------------------------+
//| Détecte les Fair Value Gaps (FVG) |
//+------------------------------------------------------------------+
bool detectFVG(int lookback, int mode) {
double currentLow = iLow(_Symbol, PERIOD_CURRENT, 1);
double currentHigh = iHigh(_Symbol, PERIOD_CURRENT, 1);
if (mode == MODE_BULLISH) {
double highestHigh = 0;
for (int i = 2; i <= lookback + 1; i++) {
highestHigh = MathMax(highestHigh, iHigh(_Symbol, PERIOD_CURRENT, i));
}
return currentLow > highestHigh;
}
else { // MODE_BEARISH
double lowestLow = DBL_MAX;
for (int i = 2; i <= lookback + 1; i++) {
lowestLow = MathMin(lowestLow, iLow(_Symbol, PERIOD_CURRENT, i));
}
return currentHigh < lowestLow;
}
}
//+------------------------------------------------------------------+
//| Détecte les Order Blocks |
//+------------------------------------------------------------------+
bool detectOrderBlock(int mode) {
double bodySize = MathAbs(iClose(_Symbol, PERIOD_CURRENT, 1) - iOpen(_Symbol, PERIOD_CURRENT, 1));
double avgBody = 0;
for (int i = 2; i <= 10; i++) {
avgBody += MathAbs(iClose(_Symbol, PERIOD_CURRENT, i) - iOpen(_Symbol, PERIOD_CURRENT, i));
}
avgBody /= 9;
if (mode == MODE_BULLISH) {
return (iClose(_Symbol, PERIOD_CURRENT, 1) < iOpen(_Symbol, PERIOD_CURRENT, 1)) &&
(bodySize > OB_Sensitivity * avgBody) &&
(iClose(_Symbol, PERIOD_CURRENT, 0) > iOpen(_Symbol, PERIOD_CURRENT, 0));
}
else { // MODE_BEARISH
return (iClose(_Symbol, PERIOD_CURRENT, 1) > iOpen(_Symbol, PERIOD_CURRENT, 1)) &&
(bodySize > OB_Sensitivity * avgBody) &&
(iClose(_Symbol, PERIOD_CURRENT, 0) < iOpen(_Symbol, PERIOD_CURRENT, 0));
}
}
//+------------------------------------------------------------------+
//| Vérifie la structure du marché (BOS/CHoCH) |
//+------------------------------------------------------------------+
bool checkMarketStructure(int mode) {
if (mode == MODE_BULLISH) {
return (iHigh(_Symbol, PERIOD_CURRENT, 0) > iHigh(_Symbol, PERIOD_CURRENT, 1)) &&
(iHigh(_Symbol, PERIOD_CURRENT, 1) > iHigh(_Symbol, PERIOD_CURRENT, 2));
}
else { // MODE_BEARISH
return (iLow(_Symbol, PERIOD_CURRENT, 0) < iLow(_Symbol, PERIOD_CURRENT, 1)) &&
(iLow(_Symbol, PERIOD_CURRENT, 1) < iLow(_Symbol, PERIOD_CURRENT, 2));
}
}
//+------------------------------------------------------------------+
//| Vérifie si c'est une nouvelle bougie |
//+------------------------------------------------------------------+
bool isNewBar() {
static datetime lastBarTime;
datetime currentBarTime = iTime(_Symbol, PERIOD_CURRENT, 0);
if (lastBarTime != currentBarTime) {
lastBarTime = currentBarTime;
return true;
}
return false;
}
//+------------------------------------------------------------------+
//| Vérifie les heures de trading (London/NY) |
//+------------------------------------------------------------------+
bool isTradingSession() {
MqlDateTime timeStruct;
TimeCurrent(timeStruct);
int hour = timeStruct.hour; // Heure GMT
return (hour >= 8 && hour <= 17); // Session London 8h-17h GMT
}
Répondu
1
Évaluation
Projets
461
18%
Arbitrage
29
45%
/
24%
En retard
28
6%
Occupé
2
Évaluation
Projets
0
0%
Arbitrage
0
En retard
0
Gratuit
3
Évaluation
Projets
0
0%
Arbitrage
0
En retard
0
Gratuit
4
Évaluation
Projets
0
0%
Arbitrage
0
En retard
0
Gratuit
5
Évaluation
Projets
0
0%
Arbitrage
0
En retard
0
Gratuit
6
Évaluation
Projets
70
21%
Arbitrage
0
En retard
0
Gratuit
7
Évaluation
Projets
115
70%
Arbitrage
5
80%
/
0%
En retard
11
10%
Gratuit
Commandes similaires
Hello Great developer i have one existing work on trade station that i just need to correct two line and send me the correct code back i will be looking for a great developer that will build for it Thank Best regards
Automate my strategy
200+ USD
Hello Great Developer I need someone to automate my trading strategy to streamline operations and improve efficiency. Scope of work - Develop and implement an automated trading system based on my strategy. - Ensure compatibility with my current trading platform. - Provide ongoing support and updates as needed. Ideal Candidate - Experience in trading automation and algorithm development. - Proficient with trading
Grid EA Built with DCA method
30+ USD
My budget is 30USD Maximum. Here I uploaded My EA of grid strategy. 1. Run the EA an get an idea about how it works. 2. Then you see if trend goes against the order type it make more open orders. 3. I want to add DCA method for certain opened orders without affecting normal sequence of the given EA. For example if 5 consecutive orders are open, from the 6th order the grid sequence should be occur. there might me 2
hello I want to hire a developer to build a a custom Exper Advisor(EA) for meta trader 5(MT5) That Trades XAUUSD Using the following logic TIME FRAME ...5 min chart(M5) entry condition EMA 9 crossover above EMA 21-Buy EMA 9 crossover below EMA 21 -sell Confirm entry using RSI filter; Buy only if RSI above 50 sell only if RSI below 50 EXIT CONDITION; Take profit 10 pips or point(For example if trade executed at 3300
TEXTTT ME FOR MORE INFO. I need a fully automated Expert Advisor (EA) for MetaTrader 5 based on my sniper trading strategy. The EA must be precise, professional, and disciplined — capable of operating completely on its own in a real account, respecting strict risk parameters and entry rules. The EA must detect strong Support/Resistance zones on the H4 timeframe, refined/validated on H1. It must enter trades only with
Kevin
30+ USD
Hi there, I am looking for EA that can: risk percentage of the account automate take profit and stop loss When TP or SL is hit open a new order open trades at the specific time
This indicator detects ABCD structure-based trading setups using a custom pullback and breakout logic, as discussed below. It works for both bullish and bearish scenarios (mirror logic), with user control over direction selection on the chart. ─────────────── 🔹 1. Pullback Logic: - Pullback is confirmed only after at least 2 red candles (in bullish case) have formed. - The body of one of these red candles must close
Hello everyone I need a good MQL5 developer to build a fully automated Expert Advisor (EA) for MT5 that uses price action strategy. (No grid, no indicator & no martingale) just a normal Expert Advisor (EA) . 🔸 ENTRY STRATEGY: Detect price action patterns: (Bullish/Bearish) Engulfing candles Pin bars (bullish /bearish) including spike rejections Breakouts of support and resistance (bearish/bullish) Use confirmed
Automated Trading Bot Development
80 - 100 USD
Project goal: To develop a trading bot that interprets highs and lows for strategic long and short positions. Scope of work: - Develop a bot to long on Higher Low, Lower Low, or Double bottom signals. - Create bot to short on Higher High, Lower High, or Double top signals. - Incorporate support and resistance levels into the strategy. - Suggest improvements considering volume and market trends. Standard Support and
Hello Great Developer I need a NinjaTrader 8 bot built completely from scratch based on the following logic and also have to fix one issue here Detect the latest valid M5 Fair Value Gap (FVG) only Entry when price enters the M5 FVG and a violated M1 FVG (IFVG) confirms the setup Trade direction based on FVG bias (long/short) SL = lowest candle since M5 entry, TP = 1:3 RR (editable) Max 1 open trade at a time , max 2
Informations sur le projet
Budget
50+ USD
Client
Commandes passées1
Nombre d'arbitrages0