
Strategi ini ialah sistem perdagangan komprehensif yang menggabungkan pelbagai analisis rangka masa, jurang nilai saksama (FVG) dan pecahan struktur (BOS). Ia mengenal pasti kemasukan perdagangan yang berpotensi dengan mengenal pasti pecahan dalam struktur harga pada jangka masa yang lebih tinggi sambil mencari jurang nilai saksama untuk terbentuk pada jangka masa yang lebih rendah. Strategi ini juga menyepadukan sistem pengurusan risiko, termasuk penetapan automatik sasaran henti rugi dan keuntungan.
Logik teras strategi dibina di atas tiga tiang utama: Pertama, menggunakan rangka masa yang lebih tinggi (lalai 1 jam atau lebih) untuk mengenal pasti pecahan dalam struktur harga (BOS), yang menyediakan rangka kerja asas untuk arah perdagangan. Kedua, cari Jurang Nilai Saksama (FVG) pada rangka masa yang lebih rendah Pembentukan FVG menunjukkan bahawa terdapat potensi ketidakseimbangan bekalan dan permintaan dalam pasaran di kawasan ini. Akhir sekali, kedua-dua syarat ini digabungkan dengan kedudukan harga semasa untuk mencetuskan isyarat dagangan apabila harga berada dalam kedudukan yang menggalakkan. Sistem ini menguruskan risiko setiap dagangan melalui nisbah risiko-ganjaran dan faktor henti rugi.
Strategi ini membina sistem perdagangan yang lengkap dengan menggabungkan analisis tempoh berbilang masa, penembusan struktur harga dan jurang nilai saksama. Kelebihannya terletak pada kaedah analisis pelbagai dimensi dan mekanisme pengurusan risiko yang sempurna, tetapi peniaga masih perlu melakukan pengoptimuman parameter yang sesuai dan kawalan risiko berdasarkan keadaan pasaran sebenar. Pengoptimuman seterusnya boleh bermula daripada pengesahan isyarat, pelarasan parameter dinamik dan penapisan persekitaran pasaran untuk meningkatkan lagi kestabilan dan kebolehpercayaan strategi.
/*backtest
start: 2024-01-17 00:00:00
end: 2025-01-15 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/
//@version=5
strategy("ICT Strategy with Historical Backtest", overlay=true)
// === Настройки ===
tf = input.timeframe("60", title="Higher Timeframe (1H or above)") // Таймфрейм для анализа BOS
fvg_length = input(3, title="FVG Lookback Length") // Длина для поиска FVG
risk_reward = input(2, title="Risk-Reward Ratio") // Риск-вознаграждение
show_fvg_boxes = input(true, title="Show FVG Boxes") // Показывать FVG
stop_loss_factor = input.float(1.0, title="Stop Loss Factor") // Множитель для стоп-лосса
// === Переменные для анализа ===
var float bos_high = na
var float bos_low = na
// Получаем данные с более старшего таймфрейма
htf_high = request.security(syminfo.tickerid, tf, high)
htf_low = request.security(syminfo.tickerid, tf, low)
htf_close = request.security(syminfo.tickerid, tf, close)
// Определение BOS (Break of Structure) на старшем таймфрейме
bos_up = ta.highest(htf_high, fvg_length) > ta.highest(htf_high[1], fvg_length)
bos_down = ta.lowest(htf_low, fvg_length) < ta.lowest(htf_low[1], fvg_length)
// Обновляем уровни BOS
if (bos_up)
bos_high := ta.highest(htf_high, fvg_length)
if (bos_down)
bos_low := ta.lowest(htf_low, fvg_length)
// === Определение FVG (Fair Value Gap) ===
fvg_up = low > high[1] and low[1] > high[2]
fvg_down = high < low[1] and high[1] < low[2]
// Визуализация FVG (Fair Value Gap)
// if (show_fvg_boxes)
// if (fvg_up)
// box.new(left=bar_index[1], top=high[1], right=bar_index, bottom=low, bgcolor=color.new(color.green, 90), border_color=color.green)
// if (fvg_down)
// box.new(left=bar_index[1], top=high, right=bar_index, bottom=low[1], bgcolor=color.new(color.red, 90), border_color=color.red)
// === Логика сделок ===
// Условия для входа в Лонг
long_condition = bos_up and fvg_up and close < bos_high
if (long_condition)
strategy.entry("Long", strategy.long, stop=low * stop_loss_factor, limit=low + (high - low) * risk_reward)
// Условия для входа в Шорт
short_condition = bos_down and fvg_down and close > bos_low
if (short_condition)
strategy.entry("Short", strategy.short, stop=high * stop_loss_factor, limit=high - (high - low) * risk_reward)
// === Надписи для прогнозируемых сделок ===
if (long_condition)
label.new(bar_index, low, text="Potential Long", color=color.green, style=label.style_label_up, textcolor=color.white, size=size.small)
if (short_condition)
label.new(bar_index, high, text="Potential Short", color=color.red, style=label.style_label_down, textcolor=color.white, size=size.small)