SMC Ultimate
- Indicatori
-
Ahmed Hamed Hamed Eadwan
ITALIAN TRANSLATION — ITALIANO
================================
TITLE:
Sviluppatore MQL5 e Trader | Fondatore di R protocols
ABOUT:
Ciao, sono Ahmed — un trader e sviluppatore MQL5 basato negli
Emirati Arabi Uniti, e fondatore di R protocols. - Versione: 1.0
- Attivazioni: 5
SMC Ultimate
Motore decisionale istituzionale Smart Money Concepts (SMC) / ICT per MetaTrader 5. Analizza struttura di mercato, liquidità, Order Block e Fair Value Gap e li converte in score, stato codificato e segnali Buy/Sell confermati.
Funziona in completa autonomia (dashboard, disegni e alert). È anche pronto per EA tramite un contratto stabile a 4 buffer e 88 input fissi per un'integrazione affidabile con iCustom.
Prezzo di lancio della prima release pubblica (versione 1.0). Il prezzo può aumentare dopo i primi aggiornamenti e le recensioni.
Funzionalità principali
- Struttura HTF e LTF: swing, BOS e CHoCH
- Mappa di liquidità: equal high/low e rilevamento sweep
- Order Block e Fair Value Gap con stati di tocco e mitigazione
- Punteggio di contesto Premium / Discount
- Score multifattoriale ponderato con lock di isteresi
- Anti-Repaint: segnali confermati sulla barra chiusa (shift 1)
- Dashboard a chart: trend, zona, score, segnale e buffer
- Alert: popup, suono e push, con cooldown e once-per-bar
- EA Mode: disattiva i disegni e alimenta EA compatibili
- Prefisso oggetti sicuro con ChartID (multi-istanza)
- Tolleranze ATR adattive opzionali per EQH/EQL e FVG
- Filtro spread, sessione e giorni feriali, modalità conto cent
Come funzionano i segnali
I motori di struttura e liquidità si aggiornano sulla logica di barra chiusa. Il contesto colloca il prezzo in Premium, Discount o Neutral. Il motore decisionale costruisce uno score limitato con pesi configurabili. Le regole Strict-SMC opzionali filtrano ingressi deboli. Con Anti-Repaint attivo (default), Buy/Sell confermati restano su shift 1 e non vengono riscritti dopo la chiusura. Le frecce solo su barre chiuse confermate, non sulla candela in formazione.
Anti-Repaint e Two-Pass
Anti-Repaint è una funzione di integrità centrale ed è attiva di default. I segnali storici confermati restano fissi dopo la chiusura.
Two-Pass Mitigation è sperimentale e disattivo di default. Può affinare la mitigazione storica OB/FVG.
Se entrambi sono attivi, Anti-Repaint ha priorità automatica:
- Two-Pass viene disattivato per la sessione corrente
- Il valore dell'input non viene mai modificato (contratto EA a 88 slot intatto)
- Un warning viene scritto nel log Experts
- Viene mostrato un alert a chart se la GUI è consentita
- La dashboard mostra: 2-Pass:OFF(AR-Override)
Per usare Two-Pass in modo intenzionale, impostare Anti-Repaint = false. La fusione completa delle modalità è prevista in un aggiornamento futuro.
Dashboard
- Trend LTF e HTF
- Zona Premium-Discount con tag extreme
- Contatori Swing, BOS, CHoCH e Sweep
- Conteggio OB e FVG attivi
- Score e segnale: BUY, SELL o No Signal
- Stato del lock di isteresi
- Anti-Repaint e stato effettivo Two-Pass
- Monitor spread, oggetti e salute del feed HTF
- Lettura buffer: Score, Signal, State
Buffer EA
Quattro buffer esportati per Expert Advisor e strumenti custom:
- Buffer 0 - SMC_BUY: 1.0 su BUY confermato solo a shift 1
- Buffer 1 - SMC_SELL: 1.0 su SELL confermato solo a shift 1
- Buffer 2 - SMC_SCORE: forza decisionale, soft-cap circa +/-200
- Buffer 3 - SMC_STATE: trend HTF/LTF e sweep codificati; +100000 se spread bloccato
Buy/Sell confermati solo a shift 1. Score e State a shift 0 sono preview live del contesto bar-1. Il filtro tempo sopprime Buy/Sell ma conserva State. 88 input fissi per letture posizionali iCustom stabili.
Integrazione iCustom (stile codice EA)
Usare il nome esatto dell'indicatore nel Navigator dopo l'installazione Market. Esempi con Market\SMC Ultimate. Ingressi confermati solo a shift 1. Layout buffer fissato:
- 0 = SMC_BUY
- 1 = SMC_SELL
- 2 = SMC_SCORE
- 3 = SMC_STATE
Leggere sempre la conferma a shift 1.
Input: 88 slot posizionali. Non riordinare. Slot 41-46 riservati. Gli input finali omessi mantengono i default.
Codice MQL5 (scheletro 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;
}
}
Regole di integrazione
- Operare solo Buy/Sell a shift 1, mai a shift 0
- Score/State a shift 0 sono preview di monitoraggio, non ingresso finale
- EMPTY_VALUE / numeri non validi = nessun segnale confermato
- Se State >= 100000, sottrarre 100000 e non aprire (spread bloccato)
- Codifica State: (htf+1)*100 + (ltf+1)*10 + sweepEnc
- Abilitare EA Mode se l'EA deve girare senza panel/oggetti
- Verificare sempre il ritorno di CopyBuffer
- Lotto, SL/TP e money management solo nell'EA
SMC Ultimate fornisce i buffer decisionali. Esecuzione e rischio restano nel vostro EA.
Avvio consigliato
- Applicare al timeframe di lavoro (M15-H1 comune; qualsiasi TF supportato)
- Mantenere Anti-Repaint = true
- Mantenere Two-Pass = false salvo necessità intenzionale
- Impostare MaxSpread sul simbolo
- Calibrare MinDecisionScore e pesi solo dopo osservazione live
- Per EA: abilitare EA Mode e leggere i 4 buffer via iCustom
Best practice
- Trattarlo come motore decisionale, non come stampante di trade garantiti
- Maggiore convinzione: allineamento HTF + sweep di supporto + zona non estrema
- Rispettare lo spread del broker e i propri limiti di rischio
- Nello Strategy Tester usare la modalità Visual per oggetti e alert
- Una istanza per chart è ideale; più istanze sono isolate da ChartID
Gruppi di input (88 totali, ordine fisso)
- Sicurezza: spread, Strict SMC, Anti-Repaint, EA Mode
- Filtri orari e giorni feriali
- Tolleranze ATR adattive
- Pesi dello score decisionale
- Struttura: HTF, swing strength, lookback
- Soglia decisionale e mitigazione zone, incluso Two-Pass sperimentale
- Costanti modalità fissa
- Slot riservati di compatibilità EA
- Limite oggetti chart
- Visual, alert e layout dashboard
- Colori e logging
Non riordinare, rimuovere o ripurpose gli slot riservati in integrazione posizionale.
Versione 1.0
Prima pubblicazione pubblica su MQL5 Market. Stack SMC/ICT completo, motore Anti-Repaint a snapshot, Two-Pass sperimentale con risoluzione attiva del conflitto AR, contratto a 4 buffer, 88 input fissi, prefisso ChartID multi-istanza, dimensionamento ATR, dashboard istituzionale e controlli spread/sessione/isteresi.
Supporto
Usare la messaggistica MQL5.org sul profilo autore. Indicare simbolo, timeframe, screenshot degli input e messaggi Experts. Lasciare un tempo di risposta ragionevole.
Disclaimer
Il trading comporta rischio di perdita. I pattern strutturali storici non garantiscono risultati futuri. SMC Ultimate è un indicatore analitico di supporto decisionale, non consulenza finanziaria. Gestione del rischio ed esecuzione restano di vostra esclusiva responsabilità.
