Sumber daya yang dimuat... Pemuatan...

Strategi Breakout Gap Nilai Adil Multi-Timeframe dengan Backtest historis

Penulis:ChaoZhang, Tanggal: 2025-01-17 14:45:10
Tag:FVGBOSHTFRRSL

 Multi-timeframe Fair Value Gap Breakout Strategy with Historical Backtest

Tinjauan Strategi

Strategi ini adalah sistem perdagangan yang komprehensif yang menggabungkan analisis multi-frame waktu, Fair Value Gap (FVG), dan Break of Structure (BOS). Strategi ini mengidentifikasi entri perdagangan potensial dengan mendeteksi struktur breakout pada jangka waktu yang lebih tinggi sambil mencari peluang celah nilai wajar pada jangka waktu yang lebih rendah. Strategi ini juga menggabungkan sistem manajemen risiko dengan pengaturan stop-loss dan take-profit otomatis.

Prinsip Strategi

Logika inti dibangun di atas tiga pilar utama: Pertama, menggunakan jangka waktu yang lebih tinggi (default 1 jam atau lebih tinggi) untuk mengidentifikasi Break of Structure (BOS), yang menyediakan kerangka dasar untuk arah perdagangan. Kedua, mencari Gap Nilai Adil (FVG) pada jangka waktu yang lebih rendah, menunjukkan potensi ketidakseimbangan penawaran-permintaan di daerah tersebut. Akhirnya, menggabungkan kondisi ini dengan posisi harga saat ini untuk memicu sinyal perdagangan ketika harga berada di lokasi yang menguntungkan. Sistem mengelola risiko melalui rasio risiko-pahala dan faktor stop-loss.

Keuntungan Strategi

  1. Analisis Multidimensional: Menggabungkan analisis beberapa kerangka waktu untuk meningkatkan keandalan sinyal.
  2. Manajemen Risiko yang Komprehensif: Pengaturan risiko-imbalan yang dibangun dan mekanisme kontrol stop-loss memastikan manajemen risiko yang jelas untuk setiap perdagangan.
  3. Umpan Balik Visual: Strategi memberikan umpan balik visual yang jelas termasuk tampilan kotak FVG dan penanda peluang perdagangan potensial.
  4. Adaptabilitas tinggi: Melalui penyesuaian parameter, strategi dapat beradaptasi dengan kondisi pasar dan gaya perdagangan yang berbeda.

Risiko Strategi

  1. Risiko Breakout Palsu: Pasar dapat menunjukkan breakout palsu yang mengarah pada sinyal perdagangan yang salah. Solusinya adalah dengan menambahkan mekanisme konfirmasi sinyal.
  2. Penundaan sinyal: Karena penggunaan data jangka waktu yang lebih tinggi, mungkin ada penundaan sinyal.
  3. Risiko Volatilitas Pasar: Selama periode volatilitas tinggi, pembentukan FVG mungkin tidak stabil.

Arah Optimasi Strategi

  1. Filter sinyal: Tambahkan mekanisme konfirmasi volume untuk mengkonfirmasi sinyal hanya ketika didukung oleh volume.
  2. Parameter Dinamis: Sesuaikan secara dinamis rasio risiko-manfaat dan faktor stop-loss berdasarkan volatilitas pasar.
  3. Trend Filtering: Tambahkan indikator identifikasi tren untuk hanya mengambil posisi ke arah tren.
  4. Filter Waktu: Tambahkan filter sesi perdagangan untuk menghindari perdagangan selama periode pasar yang tidak menguntungkan.

Ringkasan

Strategi ini membangun sistem perdagangan yang lengkap melalui penggunaan analisis multi-frame waktu, pemecahan struktur harga, dan kesenjangan nilai wajar. Kekuatannya terletak pada pendekatan analisis multi-dimensi dan mekanisme manajemen risiko yang komprehensif, tetapi pedagang masih perlu mengoptimalkan parameter dan mengendalikan risiko sesuai dengan kondisi pasar yang sebenarnya. Optimasi lebih lanjut dapat berfokus pada konfirmasi sinyal, penyesuaian parameter dinamis, dan penyaringan lingkungan pasar untuk lebih meningkatkan stabilitas dan keandalan 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)


Berkaitan

Lebih banyak