Prism Candle Forge
- librerie
-
Syarief Azman Bin Rosli
Ciao e benvenuto sul mio profilo ufficiale MQL5!
Sono Syarief Azman Bin Rosli, sviluppatore di sistemi di trading algoritmico e ingegnere software quantitativo con oltre dieci anni di esperienza nello sviluppo di soluzioni automatizzate per MetaTrader 5 e MetaTrader 4. - Versione: 1.0
- Attivazioni: 5
Prism Candle Forge — Motore di Riconoscimento Pattern Candlestick per MT4
Prism Candle Forge e una libreria nativa MQL4 per rilevare e validare oltre 20 pattern candlestick giapponesi tramite analisi geometrica ponderata con ATR. Offre identificazione dei pattern, punteggio di affidabilita direzionale, classificazione morfologica e validazione di trend tramite 8 funzioni esportate per EA, Indicatori o Script. Zero DLL, nessuna dipendenza, puro calcolo in MQL4.
Distribuito come binario compilato (Prism_Candle_Forge.ex4). Questa descrizione e il riferimento completo per l'API.
Installazione
- Scarica Prism_Candle_Forge.ex4 dal Market MQL5.
- Posiziona il file in: MQL4/Libraries/
- Aggiungi il blocco #import sottostante nel file .mq4.
- Compila il tuo EA o Indicatore. Tutte le 8 funzioni saranno disponibili.
Dichiarazione di Importazione (Pronta per il Copia-Incolla)
#import "Prism_Candle_Forge.ex4" int PCF_DetectPattern(const double &open[], const double &high[], const double &low[], const double &close[], int bar_index, double atr_value, string &pattern_name, double &confidence, int &direction); int PCF_ScanMultiPattern(const double &open[], const double &high[], const double &low[], const double &close[], int bar_index, double atr_value, string &pattern_names[], double &confidences[], int &directions[], int max_patterns); double PCF_PatternStrength(const double &open[], const double &high[], const double &low[], const double &close[], int bar_index, double atr_value); int PCF_CandleType(double open_price, double high_price, double low_price, double close_price, double atr_value); double PCF_BodyRatio(double open_price, double high_price, double low_price, double close_price); double PCF_WickBalance(double open_price, double high_price, double low_price, double close_price); int PCF_IsTrendConfirmed(const double &close[], int bar_index, int lookback_period, double min_slope_pips); int PCF_GetVersion(); #import
Riferimento API
PCF_DetectPattern
Rileva il pattern candlestick piu forte su una barra. Riconosce 20+ pattern: Hammer, Engulfing, Morning/Evening Star, varianti Doji, Piercing Line, Dark Cloud Cover, Three White Soldiers, Three Black Crows, Harami, Tweezer, Marubozu, Hanging Man, Shooting Star.
Parametri:
- open[], high[], low[], close[]: Array di prezzi OHLC dal grafico.
- bar_index: Indice della barra da analizzare entro i limiti dell'array.
- atr_value: Valore ATR corrente per il calcolo adattivo delle soglie (> 0).
- pattern_name (by ref): Nome del pattern piu forte rilevato (es. "Bullish Engulfing").
- confidence (by ref): Affidabilita del pattern da 0.0 (debole) a 1.0 (perfetto).
- direction (by ref): +1 per segnale rialzista, -1 per segnale ribassista.
Restituisce: Numero di pattern rilevati (0 se nessuno). Assegna a output il pattern migliore.
PCF_ScanMultiPattern
Scansiona TUTTI i pattern su una barra e restituisce risultati ordinati per confidenza decrescente.
Parametri:
- open[], high[], low[], close[]: Array di prezzi OHLC.
- bar_index: Barra da analizzare.
- atr_value: ATR per soglie adattive.
- pattern_names[] (by ref): Array per i nomi dei pattern (fino a max_patterns).
- confidences[] (by ref): Array per i punteggi di confidenza.
- directions[] (by ref): Array per le direzioni (+1/-1).
- max_patterns: Numero massimo di risultati da restituire (es. 5).
Restituisce: Numero effettivo di pattern trovati (da 0 a max_patterns).
PCF_PatternStrength
Restituisce un punteggio aggregato di pressione direzionale di tutti i pattern di una barra.
Parametri:
- open[], high[], low[], close[]: Array OHLC.
- bar_index: Indice della barra target.
- atr_value: ATR per la scalatura.
Restituisce: Punteggio da -100.0 (forte ribasso) a +100.0 (forte rialzo). Zero indica neutralita.
PCF_CandleType
Classifica una candela in uno degli 8 tipi morfologici in base alle proporzioni relative all'ATR.
Parametri:
- open_price, high_price, low_price, close_price: Valori OHLC della singola candela.
- atr_value: ATR per il dimensionamento (se <= 0, usa soglie assolute).
Restituisce: 1=Bull Marubozu, 2=Bear Marubozu, 3=Hammer, 4=Inverted Hammer, 5=Doji, 6=Spinning Top, 7=Standard Bull, 8=Standard Bear.
PCF_BodyRatio
Calcola rapporto corpo/ampiezza totale della candela per valutarne significativita.
Parametri:
- open_price, high_price, low_price, close_price: OHLC della singola candela.
Restituisce: Rapporto da 0.0 (senza corpo / doji) a 1.0 (marubozu). 0.0 se il range e zero.
PCF_WickBalance
Misura l'asimmetria direzionale delle ombre (stoppini) della candela.
Parametri:
- open_price, high_price, low_price, close_price: OHLC della singola candela.
Restituisce: Da -1.0 (solo ombra inferiore, rigetto ribassista) a +1.0 (solo ombra superiore, rigetto rialzista). 0.0 per ombre simmetriche.
PCF_IsTrendConfirmed
Valida la direzione del trend tramite la pendenza della regressione lineare su finestra di lookback.
Parametri:
- close[]: Array dei prezzi di chiusura close[].
- bar_index: Barra iniziale della finestra di analisi.
- lookback_period: Numero di barre da valutare (minimo 5).
- min_slope_pips: Pendenza assoluta minima (in pips) per qualificare il trend.
Restituisce: +1 (trend rialzista), -1 (trend ribassista), 0 (fase laterale o dati insufficienti).
PCF_GetVersion
Restituisce la versione della libreria come valore intero per controlli.
Restituisce: 100 (rappresenta la versione 1.00).
Esempio di Integrazione Funzionante
#property strict #import "Prism_Candle_Forge.ex4" int PCF_DetectPattern(const double &open[], const double &high[], const double &low[], const double &close[], int bar_index, double atr_value, string &pattern_name, double &confidence, int &direction); double PCF_PatternStrength(const double &open[], const double &high[], const double &low[], const double &close[], int bar_index, double atr_value); int PCF_CandleType(double open_price, double high_price, double low_price, double close_price, double atr_value); int PCF_GetVersion(); #import void OnTick() { double o[], h[], l[], c[]; ArrayCopyRates(o, Symbol(), 0); int copied = CopyOpen(Symbol(), 0, 0, 100, o); CopyHigh(Symbol(), 0, 0, 100, h); CopyLow(Symbol(), 0, 0, 100, l); CopyClose(Symbol(), 0, 0, 100, c); double atr = iATR(Symbol(), 0, 14, 1); string pat_name; double conf; int dir; int count = PCF_DetectPattern(o, h, l, c, 1, atr, pat_name, conf, dir); if(count > 0) Print("Pattern: ", pat_name, " Confidence: ", conf, " Direction: ", dir); double strength = PCF_PatternStrength(o, h, l, c, 1, atr); Print("Aggregate Strength: ", strength); int candle = PCF_CandleType(o[1], h[1], l[1], c[1], atr); Print("Candle Type: ", candle); }
Architettura
Tutte le 8 funzioni sono stateless e indipendenti. Ciascuna chiamata esegue pura analisi geometrica e statistica su array OHLC, senza stato persistente, oggetti grafici, timer o rete. Le soglie relative ad ATR assicurano precisione su tutti gli strumenti e timeframe senza calibrazione manuale.
Compatibilita
- Piattaforma: Esclusivamente MetaTrader 4
- Tester Strategia: Pienamente compatibile (backtesting e ottimizzazione)
- Dipendenze: Nessuna (zero DLL)
- Nessun oggetto grafico, timer o carico visuale — puro motore di calcolo
- Thread Safety: Tutte le funzioni sono stateless; sicure per l'uso contemporaneo su piu grafici
