리소스 로딩... 로딩...

다기기 동적 신호 통합 ICT 스마트 구조 돌파구 전략

저자:차오장, 날짜: 2025-01-06 14:09:05
태그:RSIMACDEMABOSFVGHTFLTF정보통신

img

전반적인 설명

이 전략은 여러 기술적 지표와 ICT (기관적 거래 개념) 을 결합한 포괄적 인 거래 시스템입니다. 전통적인 기술적 분석 지표 (RSI, 스토카스틱, MACD, EMA) 를 다양한 시간 프레임에 걸쳐 현대적인 ICT 거래 개념 (공정한 가치 격차, 구조의 깨짐, 더 높은 시간 프레임 편향 분석) 과 통합하여 엄격한 거래 세션 필터링을 통해 정확한 시장 진입 통제를 구현합니다.

전략 원칙

이 전략은 시너지 효과를 발휘하는 다섯 가지 핵심 요소를 기반으로 작동합니다.

  1. 더 높은 시간 프레임 편향 분석: 더 높은 시간 프레임에서 시장 트렌드 방향을 결정하기 위해 200 EMA를 사용하여
  2. 거래 세션 필터: 특정 킬 구역에 제한된 거래 (07:00-10:00)
  3. 공정 가치 격차 (FVG) 식별: 세 개의 촛불 패턴을 통해 시장 구조 격차를 인식
  4. 구조의 붕괴 (BOS) 결정: 주요 가격 수준에 기초한 방향 변경을 확인
  5. 하위 시간 프레임 지표 확인: RSI, 스토카스틱, MACD 및 200 EMA를 사용하여 여러 번 검증

전략적 장점

  1. 다차원적 신호 통합: 여러 독립적인 기술 지표와 ICT 개념을 결합하여 신호 신뢰성을 향상시킵니다.
  2. 시간 프레임 시너지: 더 높은 시간 프레임과 낮은 시간 프레임 조정 신호 안정성을 향상
  3. 구조적 기회 포착: FVG 및 BOS 식별을 통해 높은 확률의 구조적 거래 기회에 초점을 맞추고
  4. 포괄적 리스크 관리: 스톱 로스 및 수익 취득 메커니즘, 표준화 된 자금 관리
  5. 거래 시간 최적화: 시간 필터링을 통해 비 거래 세션의 간섭을 줄입니다.

전략 위험

  1. 신호 지연: 여러 지표 조합으로 인해 입력 시기가 늦어질 수 있습니다.
  2. 시장을 가로질러: 다양한 시장에서 빈번한 잘못된 신호를 생성할 수 있습니다.
  3. 매개 변수 민감도: 여러 매개 변수에는 철저한 역사 데이터 검증이 필요합니다.
  4. 실행 위험: 복잡한 조건 조합은 실시간 거래에서 일부 거래 기회를 놓칠 수 있습니다.
  5. 시장 환경 의존성: 전략 성과는 다른 시장 조건에 따라 크게 달라질 수 있습니다.

전략 최적화 방향

  1. 동적 매개 변수 조정: 시장 변동성에 기초한 지표 매개 변수의 적응 조정
  2. 시장 환경 분류: 다른 매개 변수 조합에 대한 시장 환경 인식 모듈 추가
  3. 신호 무게 최적화: 지표 무게 분포를 최적화하기 위해 기계 학습 방법을 도입
  4. 시간 프레임 연장: 신호 신뢰성을 향상시키기 위해 더 많은 시간 프레임 분석을 포함
  5. 리스크 통제 강화: 동적인 스톱 로스 메커니즘을 도입하고 자금 관리 전략을 최적화

요약

이 전략은 전통적인 기술 분석을 현대 ICT 개념과 통합하여 포괄적인 거래 시스템을 구축합니다. 이 전략의 강점은 다차원 신호 확인과 엄격한 위험 통제에 있으며 매개 변수 최적화 및 시장 적응력에서 도전에 직면하고 있습니다. 지속적인 최적화 및 개선을 통해 전략은 다양한 시장 환경에서 안정적인 성능을 유지하는 것을 약속합니다.


/*backtest
start: 2024-01-06 00:00:00
end: 2025-01-04 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// -----------------------------------------------------
// Multi-Signal Conservative Strategy (Pine Script v5)
// + More ICT Concepts (HTF Bias, FVG, Killzone, BOS)
// -----------------------------------------------------
//
// Combines:
// - RSI, Stochastic, MACD, 200 EMA (lower TF)
// - Higher Timeframe (HTF) bias check via 200 EMA
// - Kill Zone time filter
// - Fair Value Gap (FVG) detection (simplified 3-candle approach)
// - Break of Structure (BOS) using pivot highs/lows
// - Only trade markers on chart (no extra indicator plots).
//
// Use on lower timeframes: 1m to 15m
// Always backtest thoroughly and manage risk properly.
//
// -----------------------------------------------------
//@version=5
strategy(title="Multi-Signal + ICT Concepts (HTF/FVG/Killzone/BOS)", shorttitle="ICTStrategyExample",overlay=true, pyramiding=0, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// -----------------------------------------------------
// User Inputs
// -----------------------------------------------------
/////////////// Lower TF Inputs ///////////////
emaLength       = input.int(200,   "LTF EMA Length",           group="Lower TF")
rsiLength       = input.int(14,    "RSI Length",               group="Lower TF")
rsiUpper        = input.int(60,    "RSI Overbought Thresh",    group="Lower TF", minval=50, maxval=80)
rsiLower        = input.int(40,    "RSI Oversold Thresh",      group="Lower TF", minval=20, maxval=50)
stochLengthK    = input.int(14,    "Stoch K Length",           group="Lower TF")
stochLengthD    = input.int(3,     "Stoch D Smoothing",        group="Lower TF")
stochSmooth     = input.int(3,     "Stoch Smoothing",          group="Lower TF")
macdFast        = input.int(12,    "MACD Fast Length",         group="Lower TF")
macdSlow        = input.int(26,    "MACD Slow Length",         group="Lower TF")
macdSignal      = input.int(9,     "MACD Signal Length",       group="Lower TF")

/////////////// ICT Concepts Inputs ///////////////
htfTimeframe    = input.timeframe("60", "HTF for Bias (e.g. 60, 240)", group="ICT Concepts")
htfEmaLen       = input.int(200,  "HTF EMA Length",                   group="ICT Concepts")
sessionInput    = input("0700-1000:1234567", "Kill Zone Window", group="ICT Concepts")
fvgLookbackBars = input.int(2,    "FVG Lookback Bars (3-candle check)",  group="ICT Concepts", minval=1, maxval=10)

/////////////// Risk Management ///////////////
stopLossPerc    = input.float(0.5, "Stop-Loss %",  step=0.1, group="Risk")
takeProfitPerc  = input.float(1.0, "Take-Profit %", step=0.1, group="Risk")

// -----------------------------------------------------
// 1) Higher Timeframe Bias
// -----------------------------------------------------
//
// We'll request the HTF close, then compute the HTF EMA on that data
// to decide if it's bullish or bearish overall.

htfClose       = request.security(syminfo.tickerid, htfTimeframe, close)
htfEma         = request.security(syminfo.tickerid, htfTimeframe, ta.ema(close, htfEmaLen))
isBullHTF      = htfClose > htfEma
isBearHTF      = htfClose < htfEma

// -----------------------------------------------------
// 2) Kill Zone / Session Filter
// -----------------------------------------------------
//
// We'll only consider trades if the current bar is within
// the user-defined session time (e.g., 07:00 to 10:00 local or exchange time).

isInKillZone = time(timeframe.period, sessionInput) != 0

// -----------------------------------------------------
// 3) Fair Value Gap (FVG) Detection (Simplified)
//
// For a "Bullish FVG" among bars [2], [1], [0]:
//     high[2] < low[0] => there's a gap that bar [1] didn't fill
// For a "Bearish FVG":
//     low[2] > high[0] => there's a gap that bar [1] didn't fill
//
// Real ICT usage might check partial fill, candle bodies vs wicks, etc.
// This is just a minimal example for demonstration.

fvgBarsAgo = fvgLookbackBars // default = 2
bullFVG = high[fvgBarsAgo] < low  // e.g. high[2] < low[0]
bearFVG = low[fvgBarsAgo]  > high // e.g. low[2]  > high[0]

// -----------------------------------------------------
// 4) Break of Structure (BOS)
// -----------------------------------------------------
// Using pivot detection from previous example:

swingLen = 2  // pivot detection length (bars on each side)
// Identify a pivot high at bar [1]
swingHigh = high[1] > high[2] and high[1] > high[0]
// Identify a pivot low at bar [1]
swingLow  = low[1]  < low[2]  and low[1]  < low[0]

// Track the most recent pivot high & low
var float lastPivotHigh = na
var float lastPivotLow  = na

if swingHigh
    lastPivotHigh := high[1]

if swingLow
    lastPivotLow := low[1]

bosUp   = not na(lastPivotHigh) and (close > lastPivotHigh)
bosDown = not na(lastPivotLow)  and (close < lastPivotLow)

// -----------------------------------------------------
// 5) Lower TF Indicator Calculations
// -----------------------------------------------------
ema200      = ta.ema(close, emaLength)  // 200 EMA on LTF
rsiValue    = ta.rsi(close, rsiLength)
kValue      = ta.stoch(high, low, close, stochLengthK)
dValue      = ta.sma(kValue, stochLengthD)
stochSignal = ta.sma(dValue, stochSmooth)
[macdLine, signalLine, histLine] = ta.macd(close, macdFast, macdSlow, macdSignal)

// LTF trend filter
isBullTrend = close > ema200
isBearTrend = close < ema200

// -----------------------------------------------------
// Combine All Conditions
// -----------------------------------------------------
//
// We'll require that all filters line up for a long or short:
//  - HTF bias
//  - kill zone
//  - bullish/bearish FVG
//  - BOS up/down
//  - RSI, Stoch, MACD alignment
//  - Price above/below LTF 200 EMA

longCondition = isInKillZone                     // must be in session
 and isBullHTF                                   // HTF bias bullish
 and bullFVG                                     // bullish FVG
 and bosUp                                       // BOS up
 and (rsiValue > rsiUpper)                       // RSI > threshold
 and (kValue > dValue)                           // stoch K above D
 and (macdLine > signalLine)                     // MACD bullish
 and isBullTrend                                 // above LTF 200 EMA

shortCondition = isInKillZone                    // must be in session
 and isBearHTF                                   // HTF bias bearish
 and bearFVG                                     // bearish FVG
 and bosDown                                     // BOS down
 and (rsiValue < rsiLower)                       // RSI < threshold
 and (kValue < dValue)                           // stoch K below D
 and (macdLine < signalLine)                     // MACD bearish
 and isBearTrend                                 // below LTF 200 EMA

// -----------------------------------------------------
// Strategy Entries
// -----------------------------------------------------
if longCondition
    strategy.entry("Long Entry", strategy.long)

if shortCondition
    strategy.entry("Short Entry", strategy.short)

// -----------------------------------------------------
// Risk Management (Stop-Loss & Take-Profit)
// -----------------------------------------------------
if strategy.position_size > 0
    // Long position exit
    strategy.exit("Long Exit", stop  = strategy.position_avg_price * (1.0 - stopLossPerc/100.0), limit = strategy.position_avg_price * (1.0 + takeProfitPerc/100.0))

if strategy.position_size < 0
    // Short position exit
    strategy.exit("Short Exit",  stop  = strategy.position_avg_price * (1.0 + stopLossPerc/100.0), limit = strategy.position_avg_price * (1.0 - takeProfitPerc/100.0))

// -----------------------------------------------------
// Hide All Indicator Plots
// (We only show trade markers for entry & exit)
// -----------------------------------------------------
// Comment out or remove any plot() calls so chart stays clean.
//
// Example (commented out):
// plot(ema200, title="EMA 200", color=color.new(color.yellow, 0), linewidth=2)
// plot(rsiValue, title="RSI", color=color.new(color.blue, 0))
// plot(macdLine, title="MACD", color=color.new(color.teal, 0))
// plot(signalLine, title="Signal", color=color.new(color.purple, 0))


관련

더 많은