Prism Candle Forge
- Библиотеки
-
Syarief Azman Bin Rosli
Здравствуйте и добро пожаловать в мой официальный профиль MQL5!
Меня зовут Шариф Азман Бин Росли (Syarief Azman Bin Rosli). Я разработчик алгоритмических торговых систем и количественный инженер с более чем десятилетним опытом создания надежных решений для MetaTrader 5 и MetaTrader 4. - Версия: 1.0
- Активации: 5
Prism Candle Forge — Движок распознавания свечных паттернов для MT4
Prism Candle Forge — нативная библиотека MQL4 для распознавания и валидации 20+ японских свечных паттернов на основе геометрического анализа с взвешиванием по ATR. Предоставляет идентификацию паттернов, расчет достоверности, классификацию морфологии свечей и валидацию тренда через 8 экспортируемых функций для советников, индикаторов и скриптов. Без DLL, без зависимостей, чистый MQL4.
Поставляется в виде скомпилированного файла (Prism_Candle_Forge.ex4). Данное описание — полный справочник API.
Установка
- Загрузите Prism_Candle_Forge.ex4 из MQL5 Market.
- Поместите файл в каталог: MQL4/Libraries/
- Добавьте блок #import ниже в исходный файл .mq4.
- Скомпилируйте советник или индикатор. Все 8 функций готовы к работе.
Объявление импорта (готово для копирования)
#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
Справочник API
PCF_DetectPattern
Определяет сильнейший паттерн на указанном баре. Распознает 20+ паттернов: Hammer, Engulfing, Morning/Evening Star, вариации Doji, Piercing Line, Dark Cloud Cover, Three White Soldiers, Three Black Crows, Harami, Tweezer, Marubozu, Hanging Man, Shooting Star.
Параметры:
- open[], high[], low[], close[]: Массивы цен OHLC с графика.
- bar_index: Индекс анализируемого бара в пределах массива.
- atr_value: Текущий ATR для адаптивного масштабирования порогов (> 0).
- pattern_name (by ref): Имя сильнейшего паттерна (напр. "Bullish Engulfing").
- confidence (by ref): Оценка достоверности от 0.0 (слабая) до 1.0 (эталонная).
- direction (by ref): Направление: +1 (бычий сигнал), -1 (медвежий сигнал).
Возвращает: Число найденных паттернов (0 если нет). Передает данные лучшего паттерна в выходные параметры.
PCF_ScanMultiPattern
Сканирует ВСЕ паттерны на одном баре и возвращает результаты по убыванию достоверности.
Параметры:
- open[], high[], low[], close[]: Массивы цен OHLC.
- bar_index: Анализируемый бар.
- atr_value: ATR для адаптивных порогов.
- pattern_names[] (by ref): Массив имен паттернов (до max_patterns).
- confidences[] (by ref): Массив оценок достоверности.
- directions[] (by ref): Массив направлений (+1/-1).
- max_patterns: Максимальное число результатов (напр. 5).
Возвращает: Фактическое число найденных паттернов (0..max_patterns).
PCF_PatternStrength
Возвращает совокупный показатель направленного давления всех паттернов бара.
Параметры:
- open[], high[], low[], close[]: Массивы цен OHLC.
- bar_index: Индекс целевого бара.
- atr_value: ATR для масштабирования.
Возвращает: Оценка от -100.0 (сильный медвежий) до +100.0 (сильный бычий). 0 — нейтрально.
PCF_CandleType
Классифицирует отдельную свечу по 8 морфологическим типам на основе пропорций тела и теней к ATR.
Параметры:
- open_price, high_price, low_price, close_price: Цены OHLC отдельной свечи.
- atr_value: ATR для относительных размеров (если <= 0, абсолютные пороги).
Возвращает: 1=Bull Marubozu, 2=Bear Marubozu, 3=Hammer, 4=Inverted Hammer, 5=Doji, 6=Spinning Top, 7=Standard Bull, 8=Standard Bear.
PCF_BodyRatio
Вычисляет отношение тела свечи к полному диапазону high-low.
Параметры:
- open_price, high_price, low_price, close_price: Цены OHLC отдельной свечи.
Возвращает: Коэффициент от 0.0 (нет тела / doji) до 1.0 (полное тело / marubozu). 0.0 при нулевом диапазоне.
PCF_WickBalance
Измеряет направленную асимметрию теней свечи.
Параметры:
- open_price, high_price, low_price, close_price: Цены OHLC отдельной свечи.
Возвращает: От -1.0 (нижняя тень, бычий отскок) до +1.0 (верхняя тень, медвежий отскок). 0.0 при симметрии.
PCF_IsTrendConfirmed
Проверяет направление тренда через наклон линейной регрессии за период lookback.
Параметры:
- close[]: Массив цен закрытия close[].
- bar_index: Начальный бар окна анализа.
- lookback_period: Число баров для расчета (минимум 5).
- min_slope_pips: Минимальный абсолютный наклон (в пунктах) для подтверждения тренда.
Возвращает: +1 (восходящий тренд), -1 (нисходящий тренд), 0 (флэт или мало данных).
PCF_GetVersion
Возвращает версию библиотеки в виде целого числа для проверки совместимости.
Возвращает: 100 (версия 1.00).
Пример практической интеграции
#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); }
Архитектура
Все 8 функций не имеют состояния (stateless) и независимы. Вызовы выполняют геометрический и статистический анализ переданных массивов OHLC без постоянного состояния, графических объектов, таймеров и сетевых запросов. Пороги относительно ATR обеспечивают точное распознавание на всех активах и таймфреймах без подстройки параметров.
Совместимость
- Платформа: только MetaTrader 4
- Тестер стратегий: полная совместимость (тестирование и оптимизация)
- Внешние зависимости: отсутствуют (без DLL)
- Без графических объектов, таймеров и нагрузки на интерфейс — чистый вычислительный движок
- Потокобезопасность: stateless-архитектура; безопасна для мультивалютных систем
