Files
goldenChart/드로잉선_전략조건.md
2026-06-30 21:59:13 +09:00

17 KiB
Raw Permalink Blame History

드로잉선 → 전략 조건 검토

실시간 차트 드로잉 툴바(TradingView 스타일)에 제공되는 선·채널·피보나치 등 도구 중,
현재 구현된 추세선 돌파(TREND_LINE_CROSS_*) 와 같이 봉마다 자동 계산 → Ta4j Rule → 실시간·전략평가 시그널로 확장 가능한 항목을 정리한 문서입니다.

관련: 매매전략조건.md · 전략편집기 로직 및 동작흐름.md
코드 기준: DrawingToolbar.tsx · DrawingToolId · StrategyDslToTa4jAdapter · TrendLineMath


1. 현재 추세선 전략 조건 (기준 구현)

항목 내용
DSL TREND_LINE_CROSS_UP / TREND_LINE_CROSS_DOWN
드로잉 대응 추세줄(trendline) · 익스텐디드 라인(extended_line)과 개념적으로 동일 (2점 직선 + 연장)
계산 fit 구간 [iN, i1] · 스윙 피벗 (상승=저점↑ / 하락=고점↓) · 시그널 봉 i까지 연장
판정 직전 봉 ≤ 추세선 → 현재 봉 > 추세선 (상향) / 반대 (하향)
설정 설정 → 전략 설정 → 추세선 (모드·N·스윙 k)
파이프라인 StrategyDslToTa4jAdapterBacktestingService · LiveConditionStatusService · 전략평가 차트

핵심 패턴: 차트에 사용자가 그리는 고정 좌표가 아니라, 매 봉 i마다 Indicator가 Y값(또는 시간)을 반환하고, 기존 CROSS_UP/CROSS_DOWN Rule과 결합합니다.


2. 드로잉 툴바 선·채널 도구 목록

DrawingToolbar 라인 / 피보나치 / 채널 / 프로젝션 그룹 기준 (측정·도형·텍스트·패턴 제외).

2.1 라인 그룹

ID UI 이름 점 수 기하
trendline 추세줄 2 2점 직선, 양방향 연장
ray 빛(레이) 2 2점 직선, 우측 연장
extended_line 익스텐디드 라인 2 2점 직선, 양방향 연장 (trendline과 동일 렌더)
arrow 화살표 추세선 2 레이 + 화살표
trend_angle 추세각 2 추세선 + 각도 표시
info_line 인포 라인 2 2점 + 거리·각도 라벨
hline 가로줄 1 수평선 (가격 고정)
hline_ray 가로빛 1 앵커 시점부터 우측 수평
vline 수직선 1 수직선 (시간 고정)
cross_line 크로스 라인 1 수평+수직 교차
channel 추세 채널 3 기준 추세선 + 폭
parallel_channel 패러렐 채널 2 평행 2선
disjoint_channel 디스조인트 채널 4 비평행 2선
flat_top_bottom 플랫 탑/바텀 2+ 상단 수평 + 하단 추세

2.2 피보나치·갠·피치포크

ID UI 이름 산출물
fib 피보나치 되돌림 2점 구간 수평 레벨 다수 (0, 23.6, …, 100%)
fib_ext 추세기반 피보나치 확장 되돌림 + 확장 수평 레벨
fib_channel 피보나치 채널 기울어진 채널 + 피보나치 분할
fibtz 피보나치 타임존 2점 시간 구간 수직선
fib_speed_fan 스피드 리지스턴스 팬 1점에서 다발 레이
fib_trend_time 추세기반 피보나치 시간 추세선 + 시간축 피보나치
fib_circles / fib_spiral / fib_speed_arc / fib_wedge 원·스파이럴·아크·웻지 곡선/영역
pitchfork / pitchfork_schiff / pitchfork_inside 피치포크 3점 → 중심선 + 평행 2선
gann_box / gann_square / gann_fan 격자·팬 다발 직선

2.3 프로젝션·기타 (선 성격)

ID UI 이름 비고
anchored_vwap 앵커드 VWAP 앵커 시점부터 누적 VWAP 곡선
price_range 가격범위 구간 상·하단 수평
date_range 날짜 범위 수직 구간
guide_line 가이드선 보조 수평 (차트 UI)
forecast / projection_tool 예측·프로젝션 2점+ 연장

3. 전략 조건화 평가 기준

드로잉 도구를 실시간 매매 시그널로 쓰려면 아래가 필요합니다.

# 요건 설명
1 봉 인덱스 결정론 사용자 클릭 없이 OHLCV·지표만으로 매 봉 동일 Y(또는 시간) 계산
2 교차·돌파 정의 CROSS_UP/DOWN 또는 GT/LT로 표현 가능
3 Ta4j Indicator getValue(i) 또는 Rule 한 개로 encapsulation
4 워밍업·NaN lookback·스윙 k만큼 불안정 구간 처리
5 멀티 TF·좌필드 종가/RSI 등 left 지표와 스케일 일치

등급

  • A — 즉시 확장 권장: 추세선과 동일 패턴(동적 1~2선 + CROSS), 구현 난이도 중, 실전 활용도 높음
  • B — 부분 가능 / DSL已有: 수평·채널·고저가 등 이미 다른 필드로 구현됐거나, 파라미터만 추가하면 됨
  • C — 전략 자동화 부적합: 주관적 패턴·다점 수동 입력·시간만 조건·시각 주석 위주

4. 요약 매트릭스

드로잉 도구 등급 전략 활용 비고
추세줄 / 익스텐디드 / 레이 A 구현됨 (TREND_LINE_*) 레이=연장 방향만 다름 → extendMode 파라미터로 통합 가능
가로줄 B 대체 가능 CROSS_* + 고정값·NH_PRIOR_N·볼린저·MA
가로빛 A ⚠️ 미구현 앵커 이후 구간 수평 = 구간 고점/저점 또는 앵커 VWAP
수직선 / 크로스 / 피보나치 TZ / 날짜범위 B~C △ 시간 조건 가격 돌파가 아닌 봉 번호·세션·시간 조건 (TIMEFRAME·HOLD 확장)
추세·패러렐·플랫탑 채널 A ⚠️ 미구현 채널 상·하단 돌파 — Donchian과 유사하나 기울기 있음
디스조인트 채널 B 4점 자유도 높음 → 자동화 시 규칙 고정 필요
피보나치 되돌림/확장 A ⚠️ 미구현 스윙 고저 + 수평 레벨 돌파 (0.382, 0.5, 0.618…)
피치포크 (중심선) A ⚠️ 미구현 3 스윙점 → 중앙 추세선 돌파 (추세선 일반화)
피보나치 팬 / 갠 팬 B 다중 레이 — 특정 각도 레이 돌파로 축소 가능
앵커드 VWAP B VWAP 지표 + 앵커 lookback 조건 (별도 지표 DSL)
가격범위 A ⚠️ 미구현 N봉 Range 상·하단 돌파 (Donchian과 동일 family)
추세각 / 인포 / 화살표 C 표시·측정용, 시그널 의미 없음
패턴(XABCD·H&S·엘리엇) C 형태 인식·주관적 — 별도 패턴 엔진 필요
원·호·브러시·텍스트 C 시각 주석

5. A등급 — 구현 권장 (추세선과 동일 아키텍처)

5.1 레이 / 익스텐디드 (ray, extended_line)

드로잉 의미: 2점 직선, 연장 방향만 다름 (우측 only vs 양방향).

전략 정의 (제안):

  • 기존 TREND_LINE_* + 파라미터 extendMode: RIGHT | BOTH | LEFT
  • fit·피벗 로직은 현재 TrendLineMath와 동일
  • ray = 피벗 선을 평가 봉 i까지만 extrapolation (좌측 연장 없음)

조건 예:

조건 의미
TREND_LINE_CROSS_UP + extendMode=RIGHT 하락 저항 레이 상향 돌파
TREND_LINE_CROSS_DOWN 상승 지지선 하향 이탈

구현: TrendLineMath에 연장 방향만 추가 — 난이도: 낮음.


5.2 추세 채널 / 패러렐 채널 (channel, parallel_channel)

드로잉 의미: 평행한 상·하 2선; 가격이 채널 밖으로 나가면 추세 가속·전환.

전략 정의 (제안):

DSL (제안) 계산 매수·매도
CHANNEL_BREAK_UP 상단선 = 기준 추세선 + offset (또는 2번째 피벗 평행) 종가 상단 상향 돌파
CHANNEL_BREAK_DOWN 하단선 = 기준 추세선 − offset 종가 하단 하향 돌파
CHANNEL_BOUNCE_UP 하단선 터치 후 반등 CROSS_UP on lower band

알고리즘 (패러렐 채널 자동화):

  1. [iN, i1]에서 상승 추세선(저점) 또는 하락 추세선(고점) 1본 계산 (현행과 동일)
  2. offset = 구간 내 최대 High 추세선값 (상단 채널) 또는 추세선값 최소 Low (하단)
  3. 또는 스윙 고점 2개 + 스윙 저점 2개로 평행선 쌍 결정

Ta4j: UpperChannelIndicator / LowerChannelIndicator (커스텀) + CROSS_*.

기존 DSL과 관계: DONCHIAN DC_UPPER_N / DC_LOWER_N수평 채널(기울기 0). 본 조건은 기울어진 채널 — 차별화됨.

난이도: 중.


5.3 플랫 탑/바텀 (flat_top_bottom)

드로잉 의미: 한쪽은 수평(저항/지지), 다른 쪽은 기울어진 변 연결 — 삼각 수렴·확장 패턴의 일부.

전략 정의 (제안):

DSL (제안) 구성
FLAT_TOP_BREAK_UP [iN,i1] 최고가 수평선 (flat top) 상향 돌파
FLAT_BOTTOM_BREAK_DOWN 최저가 수평선 (flat bottom) 하향 돌파
WEDGE_BREAK_* flat + 대각 추세선 수렴 후 돌파 (확장)

flat top = NH_PRIOR 구간 max(High)와 유사하나 동일 구간 명시.
난이도: 중 (채널 특수 케이스).


5.4 피보나치 되돌림 / 확장 (fib, fib_ext)

드로잉 의미: 스윙 A→B 구간에 비율별 수평선 (0%, 38.2%, 50%, 61.8%, 100% …).

전략 정의 (제안):

FIB_LEVEL_CROSS_UP / DOWN
  - swingHigh, swingLow: [iN, i1] 스윙 (또는 구간 고/저)
  - level: 0.382 | 0.5 | 0.618 | 0.786 | 1.272 (확장)
  - left: CLOSE_PRICE (또는 지표)
활용 조건
되돌림 매수 61.8% 지지CROSS_UP
되돌림 매도 38.2% 저항CROSS_DOWN
확장 목표 1.272 / 1.618 돌파 추적

Indicator: FibLevelIndicator(swingA, swingB, ratio) → bar i에서 해당 레벨 Y.

차트 표시: 전략평가 시 선택 봉 기준 해당 레벨 1개 또는 주요 3선만 overlay (추세선과 동일 UX).

난이도: 중.


5.5 피치포크 중심선 (pitchfork 계열)

드로잉 의미: 3점(스윙1, 스윙2, 스윙3) → 중앙 추세선 + 위·아래 평행선.

전략 정의 (제안):

DSL (제안) 의미
PITCHFORK_MEDIAN_CROSS_UP/DOWN 중심선 돌파
PITCHFORK_UPPER_TOUCH 상단 평행선 도달
PITCHFORK_LOWER_BOUNCE 하단 평행선 반등

알고리즘: 3 스윙 저점(상승) 또는 고점(하락) → 중점·기울기 → median line at i.
Andrews / Schiff / Inside는 중심선 계산식만 다름 — 설정에서 pitchforkVariant.

난이도: 중~상.


5.6 N봉 가격 레인지 (price_range 드로잉 ↔ Range 돌파)

드로잉 의미: 구간 상단·하단 박스.

전략 정의: Donchian과 동일 family.

기존 DSL 드로잉 대응
CLOSE CROSS_UP NH_PRIOR_20 20봉 신고가(상단) 돌파
CLOSE CROSS_DOWN NL_PRIOR_20 20봉 신저가(하단) 이탈
DONCHIAN + DC_UPPER_N 채널 상단

추가 제안: RANGE_BREAK_UP/DOWN — lookback N 명시적 alias (UI는 가격범위 드로잉과 매핑).

난이도: 낮음 (이미 80% 구현).


6. B등급 — 부분 가능 / 기존 DSL로 커버

6.1 가로줄 (hline)

드로잉 전략 DSL 대체
임의 가격 수평선 GT/LT/CROSS_* + compareValue 또는 지표 임계
N봉 고가/저가 NH_PRIOR_N / NL_PRIOR_N · DC_UPPER_N / DC_LOWER_N
볼린저 상·중·하 BOLLINGER + UPPER/MIDDLE/LOWER
전고·전저 NEW_HIGH / NEW_LOW 지표

신규 DSL 필요성: 낮음. 전략편집기 「가로줄 = 수준 돌파」 프리셋 UI만 추가해도 충분.


6.2 가로빛 (hline_ray)

의미: 특정 시점 이후에만 유효한 수평선 (예: 돌파봉 종가, 당일 시가).

제안:

DSL (제안) 정의
SESSION_OPEN 당일/세션 시가 (수평)
BAR_N_CLOSE N봉 전 종가 수평 (앵커)
SWING_LEVEL 마지막 스윙 고/저 수평 레이

난이도: 중 (앵커 bar index 추적).


6.3 앵커드 VWAP (anchored_vwap)

의미: 특정 봉부터 누적 VWAP.

전략: VWAP 지표(또는 신규 ANCHORED_VWAP) + CROSS_UP/DOWN.
앵커 = ianchorLookback 또는 세션 시작.

난이도: 중 (볼륨·누적 합).


6.4 피보나치 팬 / 갠 팬 (fib_speed_fan, gann_fan)

의미: 1점에서 여러 각도의 레이.

전략 축소: 팬 전체가 아닌 특정 비율 1선만 — 예: 1×1, 2×1 갠 각도 = 기울기 k동적 추세선.

제안 조건
GANN_FAN_CROSS 스윙 앵커 + slopeRatio (1/1, 1/2…) 레이 돌파

난이도: 중 (추세선 + 고정 기울기).


6.5 수직선·시간 (vline, fibtz, date_range)

의미: 가격이 아니라 시간/봉 조건.

활용 DSL 방향
특정 시각 이후만 매수 TIMEFRAME + 세션 필터
N봉 경과 후 HOLD_N_DAYS · BAR_INDEX ≥ anchor
피보나치 시간대 TIME_FIB_ZONE (i가 [t0+φⁿ·Δt] 근처)

실시간 가격 돌파 시그널과는 별도 — 필터/타이밍 조건으로 AND 결합.

난이도: 중 (가격 Indicator와 분리).


7. C등급 — 자동 전략 조건 부적합

유형 이유
추세각·인포라인·화살표 측정·주석; Y(t) 단일 함수 아님
harmonic 패턴 (XABCD, ABCD, Cypher, H&S) 4~5점 형태 매칭 — ML/규칙 트리 별도
엘리엇 파동 드로잉 파동 카운트 주관적; ta4j Elliott는 분석용
고스트피드·봉패턴 미래 봉 투영 — 백테스트 룩어헤드 위험
long/short position 박스 RR 시각화; 진입·손절은 별도 주문 DSL
브러시·텍스트·핀 사용자 주석
원·타원·삼각형 영역 포함 판정 — IN_RECT류는 가능하나 드로잉과 무관

8. 공통 구현 패턴 (추세선과 동일)

신규 드로잉型 조건 추가 시 권장 스택:

1. DSL conditionType  (예: CHANNEL_BREAK_UP)
2. Math/Indicator     (bar i, lookback, config → Y 또는 time)
3. StrategyDslToTa4jAdapter → buildXxxCrossRule (고정 창 [iN,i1])
4. BacktestSettings   (전역 default N, k, ratio…)
5. 전략편집기 팔레트   (추세 탭과 동일 PaletteChip UX)
6. 전략평가 차트      (선택 봉 1개 overlay only)
7. LiveConditionStatusService 라벨

교차 Rule 템플릿 (현행 추세선):

직전 봉: left[i1] ≤ line[i1]
현재 봉: left[i]   > line[i]     → CROSS_UP
line[i±k]는 동일 fit 창 [iN, i1]에서 extrapolation

9. 구현 우선순위 (로드맵 제안)

순위 기능 드로잉 대응 이유
1 extendMode on TREND_LINE ray / extended 코드 변경 최소
2 CHANNEL_BREAK_* channel, parallel 돈치안보다 실전 TA에 가까움
3 FIB_LEVEL_CROSS_* fib, fib_ext 되돌림·확장 매매 빈도 높음
4 FLAT_TOP/BOTTOM_* flat_top_bottom 삼각·깃발 패턴 기초
5 PITCHFORK_MEDIAN_* pitchfork 중심선 트레이딩
6 가로줄 프리셋 UI hline 신규 엔진 없이 DSL 노출
7 ANCHORED_VWAP_CROSS anchored_vwap VWAP 전략 수요
8 시간 조건 (TIME_*) vline, fibtz 필터로 활용

10. 실시간 매매 체크 연동

현재 파이프라인은 드로잉 객체(JSON)를 읽지 않습니다.
차트에 사용자가 그린 선과 전략 시그널은 독립이며, 전략은 동일 수학 규칙으로 매 봉 재계산합니다.

단계 서비스
설정 로드 BacktestSettingsServiceTrendLineConfig
Rule 생성 StrategyDslToTa4jAdapter.toRule
백테스트·스캔 BacktestingService
실시간 LiveConditionStatusService (조건별 충족/미충족)
UI StrategyEvaluationChart · 가상/실전 차트 시그널 마커

신규 선 조건도 드로잉 저장소와 연동할 필요 없음 — 추세선과 같이 Indicator 기반이면 실시간 체크에 바로 투입 가능.


11. 한 줄 결론

추세선(TREND_LINE)과 같이 “매 봉 Y값을 계산하는 1~2차원 직선·수평 레벨” 이면 대부분 CROSS_* Rule로 실시간 전략에 넣을 수 있다.
우선순위는 채널(평행선)·피보나치 수준·레이 연장 방향이며, 가로줄·Donchian·볼린저는 이미 DSL로 커버된다.
패턴·팬 전체·브러시는 드로잉 툴로는 유용하나 자동 시그널에는 부적합하거나 별도 엔진이 필요하다.


문서 버전: 2026-06 — goldenChart 드로잉 툴바·TREND_LINE 구현 기준