SMC Ultimate
- Indicateurs
-
Ahmed Hamed Hamed Eadwan
FRENCH TRANSLATION — FRANÇAIS
===============================
TITLE:
Développeur MQL5 & Trader | Fondateur de R protocols
ABOUT:
Bonjour, je suis Ahmed — un trader et développeur MQL5 basé aux
Émirats Arabes Unis, et fondateur de R protocols. - Version: 1.0
- Activations: 5
SMC Ultimate
Moteur de décision institutionnel Smart Money Concepts (SMC) / ICT pour MetaTrader 5. Il analyse la structure de marché, la liquidité, les Order Blocks et les Fair Value Gaps, puis les convertit en score, état encodé et signaux Buy/Sell confirmés.
Fonctionne entièrement en autonomie (tableau de bord, dessins, alertes). Il est aussi prêt pour EA via un contrat stable de 4 buffers et 88 entrées figées pour une intégration fiable avec iCustom.
Prix de lancement de la première version publique (version 1.0). Le prix peut augmenter après les premières mises à jour et avis.
Fonctionnalités clés
- Structure HTF et LTF : swings, BOS et CHoCH
- Carte de liquidité : equal highs/lows et détection de sweeps
- Order Blocks et Fair Value Gaps avec états de toucher et mitigation
- Score de contexte Premium / Discount
- Score multi-facteurs pondéré avec verrou d'hystérésis
- Anti-Repaint : signaux confirmés sur la bougie clôturée (shift 1)
- Tableau de bord : tendance, zone, score, signal et buffers
- Alertes : popup, son et push, avec cooldown et once-per-bar
- EA Mode : désactive les dessins et alimente les EA compatibles
- Préfixe d'objets sûr via ChartID (multi-instances)
- Tolérances ATR adaptatives optionnelles pour EQH/EQL et FVG
- Filtre de spread, session et jours ouvrés, mode compte cent
Fonctionnement des signaux
Les moteurs de structure et de liquidité se mettent à jour sur la logique de bougie clôturée. Le contexte place le prix en Premium, Discount ou Neutral. Le moteur de décision construit un score plafonné à partir de poids configurables. Les règles Strict-SMC optionnelles filtrent les entrées faibles. Avec Anti-Repaint (par défaut), les Buy/Sell confirmés sont verrouillés sur shift 1 et ne sont pas réécrits après clôture. Les flèches n'apparaissent que sur les bougies clôturées confirmées.
Anti-Repaint et Two-Pass
Anti-Repaint est une fonction d'intégrité centrale, activée par défaut. Les signaux historiques confirmés restent fixes après la clôture.
Two-Pass Mitigation est expérimental et désactivé par défaut. Il peut affiner la mitigation historique OB/FVG.
Si les deux sont activés, Anti-Repaint a la priorité automatique :
- Two-Pass est désactivé pour la session en cours
- La valeur de l'input n'est jamais modifiée (contrat EA 88 slots intact)
- Un avertissement est écrit dans le journal Experts
- Une alerte graphique s'affiche si le GUI est autorisé
- Le tableau de bord affiche : 2-Pass:OFF(AR-Override)
Pour utiliser Two-Pass volontairement, mettez Anti-Repaint = false. La fusion complète des modes est prévue dans une future mise à jour.
Tableau de bord
- Tendance LTF et HTF
- Zone Premium-Discount avec tag extreme
- Compteurs Swing, BOS, CHoCH et Sweep
- Nombre d'OB et FVG actifs
- Score et signal : BUY, SELL ou No Signal
- État du verrou d'hystérésis
- Anti-Repaint et statut effectif Two-Pass
- Spread, nombre d'objets, santé du flux HTF
- Lecture des buffers : Score, Signal, State
Buffers EA
Quatre buffers exportés pour Expert Advisors et outils personnalisés :
- Buffer 0 - SMC_BUY : 1.0 sur BUY confirmé, shift 1 uniquement
- Buffer 1 - SMC_SELL : 1.0 sur SELL confirmé, shift 1 uniquement
- Buffer 2 - SMC_SCORE : force de décision, plafond souple env. +/-200
- Buffer 3 - SMC_STATE : tendance HTF/LTF et sweep encodés ; +100000 si spread bloqué
Buy/Sell confirmés uniquement en shift 1. Score et State en shift 0 sont un aperçu live du contexte bar-1. Le filtre horaire supprime Buy/Sell mais conserve State. 88 entrées figées pour des lectures positionnelles iCustom stables.
Intégration iCustom (style code EA)
Utilisez le nom exact de l'indicateur dans le Navigator après installation Market. Exemples avec Market\SMC Ultimate. Entrées confirmées uniquement en shift 1. Disposition des buffers figée :
- 0 = SMC_BUY
- 1 = SMC_SELL
- 2 = SMC_SCORE
- 3 = SMC_STATE
Lisez toujours la confirmation en shift 1.
Entrées : 88 slots positionnels. Ne pas réordonner. Slots 41-46 réservés. Les inputs de fin omis gardent les défauts.
Code MQL5 (squelette EA)
#define SMC_BUF_BUY 0
#define SMC_BUF_SELL 1
#define SMC_BUF_SCORE 2
#define SMC_BUF_STATE 3
#define SMC_SHIFT_CONFIRMED 1
#define SMC_SPREAD_BLOCK_MARK 100000.0
int g_smc_handle = INVALID_HANDLE;
datetime g_smc_last_bar = 0;
int OnInit()
{
g_smc_handle = iCustom(_Symbol, PERIOD_CURRENT, "Market\\SMC Ultimate");
if(g_smc_handle == INVALID_HANDLE)
{
Print("SMC Ultimate: iCustom failed, error=", GetLastError());
return INIT_FAILED;
}
return INIT_SUCCEEDED;
}
// Optional: pass inputs by frozen 88-slot order only if needed
// g_smc_handle = iCustom(_Symbol, PERIOD_CURRENT, "Market\\SMC Ultimate", ...);
// Enable EA Mode in indicator inputs for chart-less EA use.
bool SMC_Read(const int buffer_index, const int shift, double &out_value)
{
out_value = EMPTY_VALUE;
if(g_smc_handle == INVALID_HANDLE) return false;
double tmp[];
ArraySetAsSeries(tmp, true);
if(CopyBuffer(g_smc_handle, buffer_index, shift, 1, tmp) != 1)
return false;
out_value = tmp[0];
return true;
}
bool SMC_IsValidNum(const double v)
{
return (v != EMPTY_VALUE && MathIsValidNumber(v));
}
bool SMC_DecodeState(double state_raw,
bool &spread_blocked,
int &htf_trend,
int <f_trend,
int &sweep_enc)
{
spread_blocked = false;
htf_trend = 0; ltf_trend = 0; sweep_enc = 0;
if(!SMC_IsValidNum(state_raw)) return false;
double s = state_raw;
if(s >= SMC_SPREAD_BLOCK_MARK)
{
spread_blocked = true;
s -= SMC_SPREAD_BLOCK_MARK;
}
int sv = (int)MathRound(s);
htf_trend = sv / 100 - 1; // -1 bear, 0 flat, +1 bull
ltf_trend = (sv % 100) / 10 - 1; // -1 bear, 0 flat, +1 bull
sweep_enc = sv % 10; // 0 none, 1 buy-side, 2 sell-side
return true;
}
void OnTick()
{
datetime t[];
ArraySetAsSeries(t, true);
if(CopyTime(_Symbol, PERIOD_CURRENT, 0, 2, t) != 2) return;
if(t[0] == g_smc_last_bar) return;
g_smc_last_bar = t[0];
double buy=0, sell=0, score=0, state=0;
if(!SMC_Read(SMC_BUF_BUY, SMC_SHIFT_CONFIRMED, buy)) return;
if(!SMC_Read(SMC_BUF_SELL, SMC_SHIFT_CONFIRMED, sell)) return;
if(!SMC_Read(SMC_BUF_SCORE,SMC_SHIFT_CONFIRMED, score)) return;
if(!SMC_Read(SMC_BUF_STATE,SMC_SHIFT_CONFIRMED, state)) return;
bool spread_blocked; int htf, ltf, sweep;
if(!SMC_DecodeState(state, spread_blocked, htf, ltf, sweep)) return;
if(spread_blocked) return;
const bool is_buy =
SMC_IsValidNum(buy) && buy > 0.5 && buy < 1.0e10;
const bool is_sell =
SMC_IsValidNum(sell) && sell > 0.5 && sell < 1.0e10;
if(is_buy)
{
PrintFormat("SMC BUY confirmed | score=%.0f htf=%d ltf=%d sweep=%d",
score, htf, ltf, sweep);
// --- risk + OrderSend / trade.Buy() ---
}
else if(is_sell)
{
PrintFormat("SMC SELL confirmed | score=%.0f htf=%d ltf=%d sweep=%d",
score, htf, ltf, sweep);
// --- risk + OrderSend / trade.Sell() ---
}
}
void OnDeinit(const int reason)
{
if(g_smc_handle != INVALID_HANDLE)
{
IndicatorRelease(g_smc_handle);
g_smc_handle = INVALID_HANDLE;
}
}
Règles d'intégration
- Trader uniquement Buy/Sell en shift 1, jamais en shift 0
- Score/State en shift 0 = aperçu de suivi, pas l'entrée finale
- EMPTY_VALUE / nombres invalides = pas de signal confirmé
- Si State >= 100000, soustraire 100000 et ne pas ouvrir (spread bloqué)
- Encodage State : (htf+1)*100 + (ltf+1)*10 + sweepEnc
- Activer EA Mode si l'EA doit tourner sans panel/objets
- Toujours vérifier le retour de CopyBuffer
- Lot, SL/TP et money management uniquement dans votre EA
SMC Ultimate fournit les buffers de décision. L'exécution et le risque restent dans votre EA.
Démarrage recommandé
- Attachez à votre timeframe de travail (M15-H1 fréquent ; tout TF supporté)
- Gardez Anti-Repaint = true
- Gardez Two-Pass = false sauf besoin volontaire
- Réglez MaxSpread selon le symbole
- Ajustez MinDecisionScore et poids seulement après observation live
- Pour EA : activez EA Mode et lisez les 4 buffers via iCustom
Bonnes pratiques
- Traitez l'outil comme un moteur de décision, pas une imprimante de trades garantis
- Conviction plus forte : alignement HTF + sweep de soutien + zone non extrême
- Respectez le spread du broker et vos limites de risque
- En Strategy Tester, utilisez le mode Visual pour objets et alertes
- Une instance par graphique est idéale ; plusieurs sont isolées par ChartID
Groupes d'entrées (88 au total, ordre figé)
- Sécurité : spread, Strict SMC, Anti-Repaint, EA Mode
- Filtres horaires et jours ouvrés
- Tolérances ATR adaptatives
- Poids du score de décision
- Structure : HTF, swing strength, lookback
- Seuil de décision et mitigation de zones, incl. Two-Pass expérimental
- Constantes mode fixe
- Slots réservés de compatibilité EA
- Limite d'objets graphique
- Visuels, alertes et layout du panel
- Couleurs et journalisation
Ne réordonnez, ne supprimez ni ne réaffectez les slots réservés en intégration positionnelle.
Version 1.0
Première publication publique MQL5 Market. Stack SMC/ICT complet, moteur Anti-Repaint par snapshots, Two-Pass expérimental avec résolution active du conflit AR, contrat 4 buffers, 88 inputs figés, préfixe ChartID multi-instances, dimensionnement ATR, tableau de bord institutionnel et contrôles spread/session/hystérésis.
Support
Utilisez la messagerie MQL5.org sur le profil de l'auteur. Indiquez symbole, timeframe, capture des inputs et messages Experts. Laissez un délai de réponse raisonnable.
Avertissement
Le trading comporte un risque de perte. Les motifs structurels historiques ne garantissent pas les résultats futurs. SMC Ultimate est un indicateur d'aide à la décision analytique, pas un conseil financier. Vous êtes seul responsable de la gestion du risque et de l'exécution.
