Strategi penembusan struktur pintar ICT berdasarkan gabungan isyarat dinamik tempoh berbilang masa

RSI MACD EMA BOS FVG HTF LTF ICT
Tarikh penciptaan: 2025-01-06 14:09:05 Akhirnya diubah suai: 2025-01-06 14:09:05
Salin: 0 Bilangan klik: 456
1
fokus pada
1617
Pengikut

Strategi penembusan struktur pintar ICT berdasarkan gabungan isyarat dinamik tempoh berbilang masa

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan komprehensif yang menggabungkan pelbagai penunjuk teknikal dan ICT (Konsep Perdagangan Institusi). Ia menyepadukan penunjuk analisis teknikal tradisional (RSI, penunjuk stokastik, MACD, EMA) dan konsep perdagangan ICT moden (jurang nilai saksama, penembusan struktur, analisis berat sebelah tempoh masa yang tinggi) dalam tempoh masa yang berbeza, dan penapisan melalui tempoh dagangan yang ketat kawalan capaian.

Prinsip Strategi

Strategi ini beroperasi berdasarkan penyelarasan lima komponen teras:

  1. Analisis berat sebelah tempoh masa tinggi: Gunakan purata bergerak 200 hari untuk menentukan arah aliran pasaran bagi tempoh masa yang lebih tinggi
  2. Penapis masa dagangan: hadkan dagangan kepada “zon bunuh” tertentu (07:00-10:00)
  3. Pengenalpastian Jurang Nilai Saksama (FVG): Mengenalpasti Jurang Struktur dalam Pasaran melalui Tiga Corak K-line
  4. Penentuan Breakout of Structure (BOS): Penembusan berdasarkan tahap harga utama mengesahkan perubahan arah
  5. Pengesahan penunjuk tempoh masa rendah: berbilang pengesahan menggunakan RSI, penunjuk stokastik, MACD dan purata bergerak 200

Kelebihan Strategik

  1. Penyepaduan isyarat pelbagai dimensi: Meningkatkan kebolehpercayaan isyarat dengan menggabungkan berbilang penunjuk teknikal bebas dan konsep ICT
  2. Penyelarasan kitaran masa: Penyelarasan kitaran masa tinggi dan rendah meningkatkan kestabilan isyarat
  3. Tangkapan peluang struktur: Fokus pada peluang perdagangan struktur berkemungkinan tinggi melalui pengenalpastian FVG dan BOS
  4. Kawalan risiko yang sempurna: termasuk mekanisme stop loss dan stop profit, pengurusan dana yang standard
  5. Pengoptimuman masa dagangan: Kurangkan gangguan semasa waktu bukan dagangan melalui penapisan masa

Risiko Strategik

  1. Keterlambatan isyarat: Gabungan berbilang penunjuk boleh menyebabkan masa kemasukan tertunda
  2. Prestasi pasaran berombak: Isyarat palsu yang kerap mungkin berlaku dalam pasaran sisi
  3. Kepekaan parameter: Penetapan berbilang parameter penunjuk memerlukan pengesahan data sejarah yang mencukupi
  4. Risiko pelaksanaan: kombinasi syarat yang kompleks boleh menyebabkan kehilangan beberapa peluang dagangan dalam perdagangan sebenar
  5. Pergantungan persekitaran pasaran: Prestasi strategi dalam persekitaran pasaran yang berbeza mungkin sangat berbeza

Arah pengoptimuman strategi

  1. Pelarasan parameter dinamik: menyesuaikan parameter setiap penunjuk mengikut turun naik pasaran
  2. Klasifikasi persekitaran pasaran: Tambah modul pengenalan persekitaran pasaran dan gunakan kombinasi parameter yang berbeza untuk keadaan pasaran yang berbeza
  3. Pengoptimuman berat isyarat: Memperkenalkan kaedah pembelajaran mesin untuk mengoptimumkan pengagihan berat pelbagai penunjuk
  4. Peluasan tempoh masa: tambah lebih banyak tempoh masa untuk analisis dan tingkatkan kebolehpercayaan isyarat
  5. Kawalan risiko yang dipertingkatkan: Memperkenalkan mekanisme henti rugi yang dinamik dan mengoptimumkan strategi pengurusan dana

ringkaskan

Strategi ini membina sistem perdagangan yang komprehensif dengan menyepadukan analisis teknikal tradisional dengan konsep ICT moden. Kelebihannya terletak pada pengesahan isyarat berbilang dimensi dan kawalan risiko yang ketat, tetapi ia juga menghadapi cabaran dalam pengoptimuman parameter dan kebolehsuaian pasaran. Melalui pengoptimuman dan penambahbaikan berterusan, strategi ini dijangka dapat mengekalkan prestasi yang stabil dalam persekitaran pasaran yang berbeza.

Kod sumber strategi
/*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))