Prism Candle Forge
- 라이브러리
- 버전: 1.0
- 활성화: 5
Prism Candle Forge — MT4 캔들스틱 패턴 인식 엔진
Prism Candle Forge는 ATR 가중 기하학적 분석을 통해 20개 이상의 일본식 캔들스틱 패턴을 감지하고 검증하는 네이티브 MQL4 라이브러리입니다. 8개의 내보내기 함수를 통해 패턴 식별, 방향성 신뢰도 점수 산출, 캔들 형태 분류 및 트렌드 컨텍스트 검증 기능을 제공하며, 모든 Expert Advisor, 보조지표 또는 스크립트에서 호출할 수 있습니다. DLL 불필요, 외부 종속성 제로, 순수 MQL4 연산 엔진입니다.
컴파일된 바이너리 (Prism_Candle_Forge.ex4) 형태로 배포됩니다. 본 문서는 전체 API 레퍼런스입니다.
설치 방법
- MQL5 Market에서 Prism_Candle_Forge.ex4를 다운로드합니다.
- 다음 폴더에 파일을 복사합니다: MQL4/Libraries/
- 아래의 #import 블록을 .mq4 소스 파일에 추가합니다.
- EA 또는 지표를 컴파일합니다. 이제 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
특정 캔들(바)에서 가장 강력한 캔들스틱 패턴을 감지합니다. Hammer, Engulfing, Morning/Evening Star, Doji 변형, Piercing Line, Dark Cloud Cover, Three White Soldiers, Three Black Crows, Harami, Tweezer, Marubozu, Hanging Man, Shooting Star를 포함한 20개 이상의 패턴을 인식합니다.
매개변수:
- open[], high[], low[], close[]: 차트의 OHLC 가격 배열.
- bar_index: 분석할 바의 인덱스. 유효한 배열 범위 내여야 합니다.
- atr_value: 적응형 임계값 스케일링을 위한 현재 ATR 값. 양수여야 합니다.
- 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
ATR 대비 몸통 및 꼬리 비율을 분석하여 단일 캔들을 8가지 형태학적 유형 중 하나로 분류합니다.
매개변수:
- 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
캔들의 전체 레인지(고가-저가) 대비 몸통 비율을 계산합니다. 캔들의 유의성을 필터링하는 데 유용합니다.
매개변수:
- open_price, high_price, low_price, close_price: 단일 캔들 OHLC.
반환값: 0.0(몸통 없음 / doji)부터 1.0(가득 찬 몸통 / marubozu)까지의 비율. 레인지가 0인 경우 0.0을 반환합니다.
PCF_WickBalance
캔들의 꼬리 방향 비대칭성을 측정합니다.
매개변수:
- open_price, high_price, low_price, close_price: 단일 캔들 OHLC.
반환값: -1.0(아래 꼬리만 존재, 상승 반등)부터 +1.0(위 꼬리만 존재, 하락 반등). 0.0은 대칭 꼬리를 의미합니다. 총 꼬리 길이가 0이면 0.0을 반환합니다.
PCF_IsTrendConfirmed
과거 회고 구간에서 선형 회귀 기울기를 계산하여 추세 컨텍스트를 검증합니다. 우세한 추세와 일치하는 패턴만 선별하는 필터로 사용합니다.
매개변수:
- close[]: 종가 배열.
- bar_index: 분석 윈도우의 시작 바.
- lookback_period: 평가할 바 수. 최소 5. 배열 경계 내로 제한됩니다.
- min_slope_pips: 추세로 인정하기 위한 최소 절대 기울기 (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로 다중 차트 동시 배포에 안전함
