Strategi Mengikuti Tren Breakout Multi-Indikator

ATR SL N1 N2 波动率过滤 风险管理 多周期 趋势跟踪 海龟交易
Tanggal Pembuatan: 2025-07-03 10:14:35 Akhirnya memodifikasi: 2025-07-03 10:14:35
menyalin: 6 Jumlah klik: 265
2
fokus pada
319
Pengikut

Strategi Mengikuti Tren Breakout Multi-Indikator Strategi Mengikuti Tren Breakout Multi-Indikator

Ringkasan

Strategi pelacakan tren multi-indicator adalah strategi perdagangan kuantitatif yang didasarkan pada sistem perdagangan pirus klasik yang menangkap tren kuat di pasar melalui sinyal breakout multi-siklus. Inti dari strategi ini adalah menggunakan harga breakout dalam periode waktu yang berbeda sebagai sinyal masuk dan keluar, sambil mengkombinasikan ATR (rata-rata gelombang nyata) untuk kontrol risiko dan manajemen posisi. Strategi ini dapat digunakan sebagai indikator untuk mengidentifikasi sinyal breakout pasar, tetapi juga dapat digunakan sebagai sistem perdagangan otomatis yang lengkap untuk melakukan perdagangan.

Prinsip Strategi

Prinsip inti dari strategi ini adalah untuk menangkap pergerakan tren potensial dengan mengidentifikasi harga yang telah mencapai titik tertinggi atau terendah sepanjang sejarah. Logika implementasi spesifiknya adalah sebagai berikut:

  1. Sistem PenerimaanStrategi: Menggunakan harga tertinggi dan terendah dalam sejarah periode N1 (default 20 siklus) sebagai referensi untuk menembus. Menghasilkan sinyal masuk multihead ketika harga naik melampaui harga tertinggi dalam siklus N1 sebelumnya. Menghasilkan sinyal masuk kosong ketika harga turun melampaui harga terendah dalam siklus N1 sebelumnya.

  2. Mekanisme KeluarStrategi untuk bermain dua kali:

    • Stop loss: Berdasarkan pengaturan ATR stop loss dinamis, default harga masuk dikurangi dengan (-) head) atau ditambah dengan (-) head kosong) 2 kali lipat dari nilai ATR.
    • Trend reversal terjadi: posisi kosong ketika harga melampaui harga tertinggi dalam siklus N2 dan posisi kosong ketika harga melampaui harga tertinggi dalam siklus N2.
  3. Manajemen PosisiStrategi berdasarkan volatilitas (ATR) dan rasio risiko untuk menghitung ukuran unit transaksi, memastikan bahwa risiko setiap transaksi dikendalikan dalam rasio tetap dana akun (default 1%). Rumusnya adalah:

   交易单位 = 风险金额 / (ATR * 每点价值)

Jumlah risiko adalah modal awal dikalikan dengan rasio risiko.

  1. Eksekusi transaksiStrategi: Melakukan sinyal entry baru hanya ketika tidak memegang posisi, menghindari entry berulang, dan mencatat harga entry untuk menghitung posisi stop loss.

Keunggulan Strategis

  1. Kemampuan untuk melacak trenDesain strategi berfokus pada menangkap tren besar, mengidentifikasi titik awal tren potensial melalui sinyal terobosan, dan memanfaatkan pergerakan tren pasar secara efektif.

  2. Pengendalian Risiko DinamisDengan menggunakan ATR untuk menghitung posisi stop loss, dan secara dinamis menyesuaikan jarak stop loss sesuai dengan kondisi pasar yang sebenarnya berfluktuasi, tidak hanya menghindari stop loss yang terlalu sering yang disebabkan oleh stop loss yang terlalu dekat, tetapi juga mencegah kerugian yang terlalu besar yang disebabkan oleh stop loss yang terlalu jauh.

  3. Posisi beradaptasi: Dimensi posisi disesuaikan secara dinamis berdasarkan volatilitas pasar dan proporsi risiko akun, posisi dikurangi secara otomatis di pasar yang berfluktuasi tinggi, posisi ditingkatkan secara tepat di pasar yang berfluktuasi rendah, untuk mengontrol celah risiko secara seimbang

  4. Parameter yang dapat disesuaikanStrategi menyediakan antarmuka penyesuaian untuk beberapa parameter kunci (N1, N2, siklus ATR, rasio risiko, dll.), Yang dapat dioptimalkan oleh pengguna sesuai dengan lingkungan pasar yang berbeda dan preferensi risiko pribadi.

  5. Sistematisasi transaksiPeraturan perdagangan yang sepenuhnya sistematis menghilangkan gangguan emosional, mengikuti aturan masuk, keluar dan pengelolaan dana yang ditetapkan secara ketat, dan meningkatkan disiplin perdagangan.

Risiko Strategis

  1. Performa Bursa BergoyangSebagai strategi trend-following, sering terjadi false breakout di pasar yang bergoyang di lateral, yang menyebabkan stop loss berturut-turut. Solusi dapat meningkatkan kondisi penyaringan tingkat fluktuasi, hanya untuk mempertimbangkan masuk jika tingkat fluktuasi melebihi batas tertentu.

  2. Titik geser dan dampak komisiDalam pasar dengan trading frekuensi tinggi atau kurangnya likuiditas, slippage dan komisi dapat secara signifikan mempengaruhi kinerja strategi. Masalah ini dapat dikurangi dengan mengurangi frekuensi perdagangan atau menambahkan mekanisme konfirmasi sinyal.

  3. Parameter SensitivitasKinerja strategi lebih sensitif terhadap pengaturan parameter N1 dan N2, dan parameter optimal dapat bervariasi dalam berbagai pasar dan kerangka waktu. Disarankan untuk mencari kombinasi parameter yang kuat melalui retrospeksi sejarah dan menghindari penyesuaian kurva yang disebabkan oleh pengoptimalan berlebihan.

  4. Resiko Keterbatasan BesarDalam harga yang melonjak tinggi yang disebabkan oleh peristiwa besar yang terjadi secara tiba-tiba, stop loss order mungkin tidak dapat dilaksanakan sesuai dengan harga yang diharapkan, menyebabkan kerugian yang melebihi ekspektasi.

  5. Manajemen risikoMeskipun strategi ini mencakup mekanisme pengendalian risiko, dalam kondisi pasar yang ekstrim, stop loss berturut-turut dapat menyebabkan pengunduran diri yang signifikan dari kurva modal. Disarankan untuk membatasi jumlah maksimum kerugian berturut-turut atau memperkenalkan pengendalian risiko keseluruhan.

Arah optimasi

  1. Konfirmasi multi-frame waktu: Mekanisme konfirmasi tren dapat diperkenalkan untuk periode yang lebih lama, hanya untuk mempertimbangkan masuk jika tren konsisten dalam beberapa kerangka waktu, meningkatkan kualitas sinyal. Misalnya, dapat ditambahkan kondisi untuk memeriksa apakah arah tren garis matahari sesuai dengan arah tren siklus perdagangan saat ini.

  2. Filter fluktuasi: Memperkenalkan kondisi penyaringan tingkat fluktuasi, melakukan sinyal perdagangan hanya dalam kisaran fluktuasi pasar yang masuk akal, menghindari masuk ke pasar yang terlalu tenang atau terlalu berfluktuasi. Nilai relatif ATR (misalnya, rasio ATR / harga) dapat digunakan sebagai indikator penyaringan.

  3. Mekanisme konfirmasi sinyal: Menambahkan mekanisme konfirmasi terobosan, seperti meminta harga untuk bertahan selama waktu tertentu atau amplitudo setelah terobosan untuk mengkonfirmasi sinyal yang efektif, mengurangi kerugian yang disebabkan oleh terobosan palsu.

  4. Pengaturan parameter dinamisAdaptasi N1 dan N2 berdasarkan kondisi pasar yang dinamis, menggunakan kombinasi parameter yang berbeda dalam lingkungan fluktuasi yang berbeda, meningkatkan adaptasi strategi terhadap lingkungan pasar.

  5. Menambahkan penilaian intensitas tren: Menggabungkan indikator kekuatan tren (seperti ADX, kemiringan regresi linier, dll) untuk menilai kekuatan tren saat ini, hanya mempertimbangkan masuk ketika kekuatan tren mencapai batas tertentu, meningkatkan akurasi menangkap tren.

  6. Optimalkan mekanisme penghentian kerugianPertimbangan untuk memperkenalkan stop loss bergerak atau stop loss berdasarkan posisi dukungan / resistensi, memberikan lebih banyak ruang untuk perkembangan tren, sambil mempertahankan fungsi kontrol risiko.

Meringkaskan

Strategi pelacakan tren breakout multi-indikator adalah strategi perdagangan sistematis yang menggabungkan konsep perdagangan pirus klasik dengan teknologi manajemen risiko modern. Strategi ini dapat secara efektif menangkap peluang tren yang signifikan di pasar dengan menentukan arah tren melalui breakout harga multi-siklus, dikombinasikan dengan ATR untuk melakukan stop loss dan kontrol posisi dinamis.

Keunggulan inti dari strategi ini adalah aturan perdagangan yang sistematis dan pengendalian risiko yang ketat, menghindari gangguan emosi, dan memberikan fleksibilitas yang lebih tinggi melalui penyesuaian parameter. Namun, sebagai strategi pelacakan tren, strategi ini mungkin tidak berkinerja baik di pasar yang bergolak, yang mengharuskan pengguna untuk memahami skenario penerapannya dan melakukan optimasi parameter yang sesuai.

Strategi ini diharapkan dapat meningkatkan kualitas dan stabilitas sinyal lebih lanjut, untuk menyesuaikan dengan lingkungan pasar yang lebih beragam. Akhirnya, strategi pelacakan tren multi-indikator memberikan cara yang dapat diandalkan dan sistematis bagi pedagang untuk menangkap tren pasar, sekaligus mengendalikan risiko, dan mencapai kinerja perdagangan yang stabil dan kuat dalam jangka panjang.

Kode Sumber Strategi
/*backtest
start: 2024-07-03 00:00:00
end: 2025-07-01 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"DOGE_USDT"}]
*/

//@version=5
strategy("Turtle Trading Strategy (Simplified)", overlay=true, initial_capital=10000, default_qty_type=strategy.cash, default_qty_value=1000, commission_type=strategy.commission.cash_per_order, commission_value=1)

// --- Strategy Inputs ---
n1_entry_period = input.int(20, title="Entry Lookback Period (N1)", minval=1)
n2_exit_period = input.int(10, title="Exit Lookback Period (N2)", minval=1)
atr_period = input.int(20, title="ATR Period", minval=1)
atr_multiplier = input.float(2.0, title="ATR Stop Multiplier", minval=0.1)
risk_per_trade_percent = input.float(1.0, title="Risk Per Trade (%)", minval=0.1, maxval=10.0)

// --- Calculate Channels ---
highest_high_n1 = ta.highest(high, n1_entry_period)
lowest_low_n1 = ta.lowest(low, n1_entry_period)

highest_high_n2 = ta.highest(high, n2_exit_period)
lowest_low_n2 = ta.lowest(low, n2_exit_period)

// --- Calculate ATR (Average True Range) ---
atr_value = ta.atr(atr_period)

// --- Position Sizing (Simplified) ---
// This aims to calculate units based on a fixed percentage risk per trade.
// 1 Unit = 1 ATR worth of movement. Risk 1% of equity per trade.
risk_amount = strategy.initial_capital * (risk_per_trade_percent / 100)
dollar_per_point = syminfo.mintick // Or your instrument's specific dollar per point value
unit_size = atr_value * dollar_per_point > 0 ? math.round(risk_amount / (atr_value * dollar_per_point)) : 0

// Ensure unit_size is at least 1 if risk allows, and cap it for realism
if unit_size == 0 and risk_amount > 0
    unit_size := 1 // Minimum 1 unit if risk allows any trade
if unit_size > 10000 // Cap unit size to prevent excessively large positions in backtesting
    unit_size := 10000

// --- Entry Logic ---
long_condition = ta.crossover(close, highest_high_n1[1]) // Break above previous N1 high
short_condition = ta.crossunder(close, lowest_low_n1[1]) // Break below previous N1 low

// Variables to store entry information only for the *current* bar
var float current_entry_price = na
var int current_entry_type = 0 // 1 for long, -1 for short, 0 for no entry

if long_condition and strategy.opentrades == 0 // Only enter if no open positions
    strategy.entry("Long", strategy.long, qty=unit_size, comment="Turtle Long Entry")
    // Store entry details for the current bar
    current_entry_price := close // Or strategy.opentrades[0].entry_price if you prefer but close on entry bar is often same
    current_entry_type := 1

if short_condition and strategy.opentrades == 0 // Only enter if no open positions
    strategy.entry("Short", strategy.short, qty=unit_size, comment="Turtle Short Entry")
    // Store entry details for the current bar
    current_entry_price := close // Or strategy.opentrades[0].entry_price
    current_entry_type := -1

// --- Exit Logic ---

// Declare persistent variables to store stop prices
var float long_stop_price = na
var float short_stop_price = na

// Calculate and store stop price on the bar *after* an entry
if current_entry_type[1] == 1 // If a long entry occurred on the previous bar
    long_stop_price := current_entry_price[1] - (atr_value[1] * atr_multiplier) // Use values from previous bar
    short_stop_price := na // Reset short stop

if current_entry_type[1] == -1 // If a short entry occurred on the previous bar
    short_stop_price := current_entry_price[1] + (atr_value[1] * atr_multiplier) // Use values from previous bar
    long_stop_price := na // Reset long stop

// Stop Loss for Long Positions
if strategy.position_size > 0 // We have a long position
    strategy.exit("Long Exit SL", from_entry="Long", stop=long_stop_price, comment="Long Stop Loss")

// Stop Loss for Short Positions
if strategy.position_size < 0 // We have a short position
    strategy.exit("Short Exit SL", from_entry="Short", stop=short_stop_price, comment="Short Stop Loss")

// N2 Exit for Long Positions
if strategy.position_size > 0 and ta.crossunder(close, lowest_low_n2[1])
    strategy.close("Long", comment="Turtle Long N2 Exit")

// N2 Exit for Short Positions
if strategy.position_size < 0 and ta.crossover(close, highest_high_n2[1])
    strategy.close("Short", comment="Turtle Short N2 Exit")

// --- Plotting for Visualization ---
plot(highest_high_n1, "N1 High", color=color.green, linewidth=2, style=plot.style_linebr)
plot(lowest_low_n1, "N1 Low", color=color.red, linewidth=2, style=plot.style_linebr)
plot(highest_high_n2, "N2 High (Exit)", color=color.blue, linewidth=1, style=plot.style_linebr)
plot(lowest_low_n2, "N2 Low (Exit)", color=color.orange, linewidth=1, style=plot.style_linebr)