Prism Candle Forge
- Bibliotecas
-
Syarief Azman Bin Rosli
Olá e seja bem-vindo ao meu perfil oficial no MQL5!
Sou Syarief Azman Bin Rosli, desenvolvedor de sistemas de trading algorítmico e engenheiro de software quantitativo com mais de uma década de experiência especializada na criação de Expert Advisors para MetaTrader 5 e MetaTrader 4. - Versão: 1.0
- Ativações: 5
Prism Candle Forge — Motor de Reconhecimento de Padrões de Candlestick para MT4
Prism Candle Forge é uma biblioteca nativa MQL4 para detecção e validação de mais de 20 padrões de candlestick japoneses com análise geométrica ponderada por ATR. Oferece identificação de padrões, confiança direcional, classificação morfológica e validação de tendência através de 8 funções exportadas para Expert Advisors, Indicadores ou Scripts. Sem DLLs, sem dependências, computação pura em MQL4.
Distribuído como binário compilado (Prism_Candle_Forge.ex4). Esta descrição é sua referência completa da API.
Instalação
- Baixe o Prism_Candle_Forge.ex4 no MQL5 Market.
- Coloque o arquivo na pasta: MQL4/Libraries/
- Adicione o bloco #import abaixo ao seu arquivo .mq4.
- Compile seu EA ou Indicador. Todas as 8 funções estarão disponíveis.
Declaração de Importação (Pronto para Copiar e Colar)
#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
Referência da API
PCF_DetectPattern
Detecta o padrão de candlestick mais forte em uma barra. Reconhece 20+ padrões: Hammer, Engulfing, Morning/Evening Star, variantes Doji, Piercing Line, Dark Cloud Cover, Three White Soldiers, Three Black Crows, Harami, Tweezer, Marubozu, Hanging Man, Shooting Star.
Parâmetros:
- open[], high[], low[], close[]: Arrays de preços OHLC do gráfico.
- bar_index: Índice da barra a analisar dentro dos limites do array.
- atr_value: Valor atual do ATR para dimensionamento adaptativo (> 0).
- pattern_name (by ref): Nome do padrão mais forte detectado (ex. "Bullish Engulfing").
- confidence (by ref): Pontuação de confiança de 0.0 (fraco) a 1.0 (perfeito).
- direction (by ref): +1 para alta (bullish), -1 para baixa (bearish).
Retorna: Número de padrões detectados (0 se nenhum). Atribui à saída o padrão mais forte.
PCF_ScanMultiPattern
Analisa TODOS os padrões em uma única barra e retorna resultados em ordem decrescente de confiança.
Parâmetros:
- open[], high[], low[], close[]: Arrays de preços OHLC.
- bar_index: Barra a analisar.
- atr_value: ATR para limites adaptativos.
- pattern_names[] (by ref): Array para nomes dos padrões (até max_patterns).
- confidences[] (by ref): Array para pontuações de confiança.
- directions[] (by ref): Array para direções (+1/-1).
- max_patterns: Número máximo de resultados a retornar (ex. 5).
Retorna: Quantidade real de padrões encontrados (0 a max_patterns).
PCF_PatternStrength
Retorna pontuação agregada de pressão direcional combinando todos os padrões de uma barra.
Parâmetros:
- open[], high[], low[], close[]: Arrays OHLC.
- bar_index: Índice da barra de destino.
- atr_value: ATR para dimensionamento.
Retorna: Pontuação de -100.0 (extrema baixa) a +100.0 (extrema alta). Zero indica neutralidade.
PCF_CandleType
Classifica uma vela em um dos 8 tipos morfológicos usando proporções relativas ao ATR.
Parâmetros:
- open_price, high_price, low_price, close_price: Valores OHLC de uma única vela.
- atr_value: ATR para cálculo relativo (se <= 0, limites absolutos).
Retorna: 1=Bull Marubozu, 2=Bear Marubozu, 3=Hammer, 4=Inverted Hammer, 5=Doji, 6=Spinning Top, 7=Standard Bull, 8=Standard Bear.
PCF_BodyRatio
Calcula a razão corpo/amplitude total da vela para filtrar relevância.
Parâmetros:
- open_price, high_price, low_price, close_price: OHLC da vela individual.
Retorna: Proporção de 0.0 (sem corpo / doji) a 1.0 (marubozu). 0.0 se amplitude for zero.
PCF_WickBalance
Mede a assimetria direcional das sombras da vela.
Parâmetros:
- open_price, high_price, low_price, close_price: OHLC da vela individual.
Retorna: -1.0 (só sombra inferior, rejeição de baixa) a +1.0 (só sombra superior, rejeição de alta). 0.0 simetria.
PCF_IsTrendConfirmed
Valida tendência via inclinação de regressão linear em janela retrospectiva.
Parâmetros:
- close[]: Array de preços de fechamento close[].
- bar_index: Barra inicial da janela de análise.
- lookback_period: Número de barras a avaliar (mínimo 5).
- min_slope_pips: Inclinação absoluta mínima (em pips) para confirmar tendência.
Retorna: +1 (tendência de alta), -1 (tendência de baixa), 0 (mercado lateral ou dados insuficientes).
PCF_GetVersion
Retorna a versão da biblioteca como inteiro para compatibilidade.
Retorna: 100 (representando a versão 1.00).
Exemplo Prático de Integração
#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); }
Arquitetura
Todas as 8 funções são stateless e independentes. Cada chamada executa análise geométrica e estatística pura sobre arrays OHLC, sem estado persistente, sem objetos gráficos, timers ou rede. Limites relativos ao ATR garantem detecção precisa em todos os ativos e tempos gráficos sem ajustes manuais.
Compatibilidade
- Plataforma: Exclusivamente MetaTrader 4
- Testador de Estratégias: Totalmente compatível (backtest e otimização)
- Dependências: Nenhuma (zero DLLs)
- Sem objetos gráficos, timers ou consumo visual — motor de cálculo puro
- Thread Safety: Funções stateless; seguro para múltiplos gráficos simultâneos
