В процессе загрузки ресурсов... загрузка...

Многопериодная интеграция динамического сигнала ИКТ

Автор:Чао Чжан, Дата: 2025-01-06 14:09:05
Тэги:РСИMACDЕМАБОСFVGHTFLTFИКТ

img

Обзор

Эта стратегия представляет собой комплексную торговую систему, которая сочетает в себе несколько технических индикаторов с ИКТ (институциональными торговыми концепциями). Она объединяет традиционные индикаторы технического анализа (RSI, Stochastic, MACD, EMA) с современными торговыми концепциями ИКТ (Fair Value Gap, Break of Structure, Higher Timeframe Bias Analysis) в разных временных рамках, реализуя точный контроль за входом на рынок посредством строгой фильтрации торговых сессий.

Принципы стратегии

Стратегия основана на пяти основных компонентах, работающих в синергии:

  1. Анализ предвзятости в более короткие сроки: использование 200 EMA для определения направления тенденции рынка в более короткие сроки
  2. Фильтр торговой сессии: Торговля ограничена определенной Kill Zone (07:00-10:00)
  3. Определение разрыва в справедливой стоимости (FVG): распознавание структурных разрывов на рынке с помощью трех моделей свечей
  4. Определение разрыва структуры (BOS): подтверждение направленных изменений на основе ключевых уровней цен
  5. Подтверждение индикатора более низкого временного интервала: многократная проверка с использованием RSI, Stochastic, MACD и 200 EMA

Преимущества стратегии

  1. Многомерная интеграция сигналов: повышает надежность сигналов путем сочетания нескольких независимых технических показателей и концепций ИКТ
  2. Синергия временных рамок: координация более высоких и более низких временных рамок улучшает стабильность сигнала
  3. Поиск структурных возможностей: сосредоточено на высоковероятных структурных торговых возможностях посредством определения FVG и BOS
  4. Всеобъемлющий контроль рисков: включает механизмы стоп-лосса и получения прибыли, стандартизированное управление деньгами
  5. Оптимизация времени торговли: уменьшает помехи от сеансов, не связанных с торговлей, посредством фильтрации времени

Стратегические риски

  1. Отставание сигнала: сочетание нескольких индикаторов может привести к задержке времени входа
  2. Побочные показатели рынка: могут часто вызывать ложные сигналы на различных рынках
  3. Чувствительность параметров: для нескольких параметров показателей требуется тщательная проверка исторических данных.
  4. Риск исполнения: сложные комбинации условий могут лишить некоторых торговых возможностей в режиме реального времени
  5. Зависимость от рыночной среды: эффективность стратегии может значительно варьироваться в зависимости от условий рынка

Направления оптимизации стратегии

  1. Динамическая корректировка параметров: адаптивная корректировка параметров показателей на основе волатильности рынка
  2. Классификация рыночной среды: добавление модуля распознавания рыночной среды для различных комбинаций параметров
  3. Оптимизация веса сигнала: внедрение методов машинного обучения для оптимизации распределения веса индикатора
  4. Продление временных рамок: включение большего количества временных анализов для улучшения надежности сигнала
  5. Улучшение контроля рисков: внедрение динамических механизмов стоп-лосса и оптимизация стратегий управления деньгами

Резюме

Стратегия строит комплексную торговую систему путем интеграции традиционного технического анализа с современными концепциями ИКТ. Ее сильные стороны заключаются в многомерном подтверждении сигнала и строгом контроле рисков, в то время как она сталкивается с проблемами в области оптимизации параметров и адаптивности рынка.


/*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))


Связанные

Больше