Kemunduran tren dapat menyesuaikan strategi masuk dinamis risiko

SMA EMA 移动平均线交叉 回调策略 风险管理 止损止盈 突破点保护 趋势确认
Tanggal Pembuatan: 2025-03-26 13:29:16 Akhirnya memodifikasi: 2025-03-26 13:29:16
menyalin: 0 Jumlah klik: 276
2
fokus pada
319
Pengikut

Kemunduran tren dapat menyesuaikan strategi masuk dinamis risiko Kemunduran tren dapat menyesuaikan strategi masuk dinamis risiko

Ringkasan

Strategi ini dirancang untuk trader swing yang ingin membangun posisi multi-headed dalam pullback setelah perubahan tren jangka pendek, sementara segera masuk ke posisi overhead ketika kondisi pasar menguntungkan untuk bergerak ke bawah. Strategi ini menggabungkan konfirmasi tren silang SMA, titik masuk pullback persentase tetap, dan parameter manajemen risiko yang dapat disesuaikan untuk mencapai eksekusi perdagangan yang optimal.

Inti dari strategi ini adalah menggunakan simpul moving average (SMA) 10 siklus dan 25 siklus untuk mengkonfirmasi arah tren, dan digabungkan dengan 150 siklus indeks moving average (EMA) sebagai syarat penyaringan tambahan untuk perdagangan kosong. Perdagangan multihead tidak masuk langsung setelah SMA, tetapi menunggu untuk masuk setelah harga kembali ke persentase yang ditentukan, metode ini mengoptimalkan harga masuk dan meningkatkan risiko-pengembalian.

Prinsip Strategi

Strategi ini dapat dibagi menjadi beberapa bagian utama:

  1. Mekanisme pengakuan tren:

    • Ketika 10-siklus SMA melewati 25-siklus SMA, sistem mengidentifikasi sebagai sinyal perubahan tren bullish
    • Ketika 10-siklus SMA menembus 25-siklus SMA, sistem mengidentifikasi sinyal bergeser ke arah menurun
    • Perdagangan overhead hanya dilakukan ketika harga berada di bawah 150 siklus EMA, untuk memastikan konsistensi dengan tren yang lebih luas
  2. Mekanisme panggilan balik:

    • Tidak langsung masuk saat sinyal SMA silang muncul, tetapi menunggu harga kembali dan kemudian masuk ke dalam multihead
    • Titik masuk didefinisikan sebagai posisi dari resonansi persentase tetap (default 1%) dari titik tinggi terbaru
    • Sistem secara dinamis menghitung dan memetakan posisi pendukung untuk memvisualisasikan area masuk kembali
    • Ketika harga naik melewati level reset, ini memicu masuknya banyak pihak.
  3. Aturan masuk dengan kepala kosong:

    • Jika 10 siklus SMA di bawah melewati 25 siklus SMA, dan harga di bawah 150 siklus EMA, segera masuk ke posisi kosong
  4. Strategi Manajemen Risiko dan Keluar:

    • Stop Stop (TP) - Tingkatkan jumlah poin Target keuntungan (Default: 1000 poin)
    • Stop Loss (SL) - Tingkat Stop Loss yang dapat disesuaikan (Default: 250 poin)
    • Stop loss (BE) - Stop loss bergerak ke titik perlindungan ketika harga bergerak ke arah yang menguntungkan
    • Kondisi Keluar Ekstra Multi-Head: Jika memegang posisi multi-head dengan 10 siklus SMA di bawah 25 siklus SMA, dan harga di bawah 150 siklus EMA, memaksa keluar multi-head untuk menghindari kerugian yang ditimbulkan oleh pembalikan tren

Strategi menggunakan variabel permanen untuk melacak sinyal mundur untuk memastikan masuk pada waktu yang tepat. Ketika tidak ada posisi, sistem akan mengatur ulang semua tanda dan level untuk mempersiapkan sinyal perdagangan berikutnya.

Keunggulan Strategis

Setelah menganalisis kode secara mendalam, strategi ini menunjukkan keuntungan yang signifikan:

  1. Waktu masuk yang dioptimalkan:

    • Strategi ini mendapatkan harga masuk yang lebih baik dengan menunggu panggilan balik untuk masuk dan bukan masuk langsung saat sinyal silang muncul
    • Metode ini mengurangi risiko awal dan meningkatkan potensi risiko-keuntungan.
    • Persentase pengembalian dapat disesuaikan dengan kondisi pasar yang berbeda dan preferensi risiko pedagang
  2. Manajemen risiko yang komprehensif:

    • Parameter stop loss dan stop loss yang tepat memastikan bahwa setiap transaksi memiliki kontrol risiko yang jelas
    • Instrumen penjaminan melindungi transaksi yang telah diperoleh, mengurangi jumlah total penarikan
    • Semua parameter risiko dapat disesuaikan dengan berbagai volatilitas pasar
  3. Filter yang selaras tren:

    • Menggunakan EMA150 sebagai kondisi penyaringan tambahan untuk memastikan perdagangan jangka pendek konsisten dengan tren jangka panjang
    • Aturan keluar tambahan untuk melindungi dana dari kerugian besar saat tren berbalik
  4. Umpan balik visual:

    • Sistem memetakan level dan sinyal regresi pada grafik, memberikan panduan visual yang jelas
    • Titik Eksekusi dan Titik Keluar ditandai dengan jelas untuk memudahkan pengembalian dan perbaikan strategi
  5. Sangat mudah beradaptasi:

    • Strategi untuk berbagai kategori aset, termasuk saham, forex, dan indeks
    • Parameter yang dapat disesuaikan untuk lingkungan pasar dan gaya perdagangan yang berbeda

Risiko Strategis

Meskipun ada banyak keuntungan dari strategi ini, ada risiko berikut yang perlu diperhatikan:

  1. Risiko Pasar Cepat:

    • Dalam pasar yang sangat bergejolak, harga mungkin akan melompati titik masuk yang direncanakan atau level stop loss
    • Peristiwa pasar ekstrim dapat menyebabkan peningkatan slippage yang mempengaruhi harga eksekusi aktual
    • Solusi: Mengatur persentase retracement dan parameter risiko selama volatilitas tinggi, atau mempertimbangkan untuk menghentikan perdagangan sementara
  2. Performa pasar yang bergoyang:

    • Strategi bergantung pada tren yang mengkonfirmasi bahwa sinyal yang salah dapat terjadi di pasar yang bergoyang
    • Seringnya SMA crossover dapat menyebabkan kerugian beruntun
    • Solusi: Tambahkan filter intensitas tren tambahan, seperti indikator ADX, atau hentikan perdagangan di pasar yang bergoyang
  3. Keterbatasan manajemen risiko dengan poin tetap:

    • Stop loss dan stop loss dengan poin tetap mungkin tidak sesuai dengan volatilitas pasar yang berbeda
    • Pada saat volatilitas meningkat, hal ini dapat menyebabkan stop loss prematur atau target stop loss yang terlalu jauh.
    • Solusi: Pertimbangkan stop loss dan stop loss level berdasarkan ATR
  4. Terlalu mengandalkan indikator teknis:

    • Strategi ini sepenuhnya bergantung pada indikator teknis, mengabaikan faktor-faktor mendasar dan sentimen pasar.
    • SMA dan EMA adalah indikator yang tertinggal dan mungkin tidak merespon tepat waktu pada titik balik pasar
    • Solusi: Kombinasi dengan indikator utama lainnya atau indikator sentimen pasar, seperti RSI atau indikator arus kas
  5. Risiko Optimasi Parameter:

    • Parameter yang terlalu dioptimalkan dapat menyebabkan fit-curve yang buruk di pasar di masa depan
    • Solusi: Uji ulang data historis yang cukup panjang dan validasi strategi yang kuat dalam kondisi pasar yang berbeda

Arah optimasi strategi

Berdasarkan analisis kode, berikut adalah beberapa arah utama di mana strategi ini dapat dioptimalkan:

  1. Manajemen risiko dinamis:

    • Konversi Stop Loss dan Stop Loss dari poin tetap ke level dinamis berdasarkan ATR
    • Ini memungkinkan manajemen risiko untuk menyesuaikan diri dengan volatilitas pasar saat ini, dengan pengaturan stop loss yang lebih kecil selama volatilitas rendah dan stop loss yang lebih besar selama volatilitas tinggi.
    • Metode implementasi: menggunakan analogstopDistance = input.float(2.0) * ta.atr(14)Cara menghitung
  2. Filter intensitas tren:

    • Tambahkan ADX (Indeks Arah Rata-rata) atau indikator serupa untuk mengukur kekuatan tren
    • Hanya melakukan perdagangan saat tren cukup kuat (misalnya ADX > 25) untuk menghindari sinyal palsu di pasar yang bergoyang
    • Ini akan mengurangi sinyal yang salah dan meningkatkan tingkat kemenangan.
  3. Analisis multi-frame waktu:

    • Mengintegrasikan informasi tren dari kerangka waktu yang lebih tinggi untuk memastikan perdagangan konsisten dengan tren yang lebih besar
    • Misalnya, hanya melakukan perdagangan jika garis hari dan grafik 4 jam menunjukkan arah tren yang sama
    • Metode ini dapat meningkatkan tingkat keberhasilan perdagangan dan mengurangi risiko countertrading.
  4. Pengakuan Resonansi Cerdas:

    • Mengganti persentase tetap yang sederhana dengan metode identifikasi yang lebih kompleks
    • Pertimbangkan untuk menggunakan Fibonacci retracement level atau key support resistance level
    • Ini akan memberikan titik masuk yang lebih bermakna dan lebih selaras dengan struktur pasar.
  5. Konfirmasi volume transaksi:

    • Menambahkan analisis volume transaksi sebagai bagian dari sinyal konfirmasi
    • Mencari titik masuk yang lebih berkualitas di antara penarikan balik volume rendah dan terobosan volume tinggi
    • Konfirmasi volume transaksi dapat secara signifikan meningkatkan kualitas sinyal dan mengurangi noise trading
  6. Parameter adaptasi:

    • Mengembangkan mekanisme untuk mengadaptasi parameter strategi berdasarkan kinerja pasar terkini
    • Misalnya, persentase reset otomatis meningkat ketika volatilitas meningkat
    • Kemampuan beradaptasi ini memungkinkan strategi untuk tetap stabil dalam berbagai kondisi pasar.

Meringkaskan

Strategi masuk yang dinamis adalah sistem perdagangan yang dirancang dengan baik yang menggabungkan identifikasi tren, optimalisasi masuk, dan manajemen risiko yang komprehensif. Dengan menunggu harga untuk kembali masuk, strategi ini mendapatkan harga masuk dan pengembalian risiko yang lebih baik daripada sistem silang SMA sederhana.

Keunggulan inti dari strategi ini adalah fleksibilitas dan fleksibilitasnya, yang memungkinkan pedagang untuk menyesuaikan parameter sesuai dengan preferensi risiko pribadi dan kondisi pasar. Sementara itu, fungsi manajemen risiko yang terintegrasi (termasuk stop loss, stop loss, dan titik aman) memberikan perlindungan dana yang komprehensif.

Namun, strategi ini juga memiliki beberapa keterbatasan, termasuk kinerja di pasar yang bergolak dan keterbatasan manajemen risiko poin tetap. Dengan menerapkan optimasi rekomendasi, seperti manajemen risiko dinamis, penyaringan intensitas tren, dan konfirmasi volume perdagangan, strategi dapat secara signifikan meningkatkan stabilitas dan kinerja keseluruhan.

Ini adalah strategi dasar yang ideal untuk pedagang swing dan dapat disesuaikan lebih lanjut sesuai dengan gaya dan tujuan perdagangan individu. Dengan pengaturan parameter yang masuk akal dan penyesuaian pemantauan yang berkelanjutan, strategi ini berpotensi memberikan hasil perdagangan yang stabil di berbagai lingkungan pasar.

Kode Sumber Strategi
/*backtest
start: 2024-08-01 00:00:00
end: 2025-03-25 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("BTCUSD with adjustable sl,tp", 
     overlay=true, 
     initial_capital=10000, 
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=10, 
     calc_on_every_tick=true)

// ─────────────────────────────────────────────────────────────────────────────
//  ▌ USER INPUTS
// ─────────────────────────────────────────────────────────────────────────────
longSignalStyle  = input.string("Label Up", title="Long Signal Style", options=["Label Up", "Arrow Up", "Cross"])
shortSignalStyle = input.string("Label Down", title="Short Signal Style", options=["Label Down", "Arrow Down", "Cross"])

// Adjustable exit parameters (in points)
tpDistance    = input.int(1000, "Take Profit Distance (points)", minval=1)
slDistance    = input.int(250, "Stop Loss Distance (points)",   minval=1)
beTrigger     = input.int(500, "Break-Even Trigger Distance (points)", minval=1)

// Adjustable retracement percentage for long pullback entry (e.g. 0.01 = 1%)
retracementPct = input.float(0.01, "Retracement Percentage (e.g. 0.01 for 1%)", step=0.001)

// ─────────────────────────────────────────────────────────────────────────────
//  ▌ INDICATORS: SMA & EMA
// ─────────────────────────────────────────────────────────────────────────────
sma10  = ta.sma(close, 10)
sma25  = ta.sma(close, 25)
ema150 = ta.ema(close, 150)

plot(sma10,  color=color.blue,   title="SMA 10")
plot(sma25,  color=color.red,    title="SMA 25")
plot(ema150, color=color.orange, title="EMA 150")

// ─────────────────────────────────────────────────────────────────────────────
//  ▌ ENTRY CONDITIONS
// ─────────────────────────────────────────────────────────────────────────────
longCondition  = ta.crossover(sma10, sma25)
shortCondition = ta.crossunder(sma10, sma25)
shortValid     = close < ema150  // Only take shorts if price is below EMA150

// Plot immediate entry signals (for visual reference)
plotshape(longCondition and (strategy.position_size == 0), title="Long Signal", 
     style=(longSignalStyle == "Label Up" ? shape.labelup : (longSignalStyle == "Arrow Up" ? shape.triangleup : shape.cross)), 
     location=location.belowbar, color=color.green, text="Long", size=size.small)
plotshape(shortCondition and shortValid and (strategy.position_size == 0), title="Short Signal", 
     style=(shortSignalStyle == "Label Down" ? shape.labeldown : (shortSignalStyle == "Arrow Down" ? shape.triangledown : shape.cross)), 
     location=location.abovebar, color=color.red, text="Short", size=size.small)

// ─────────────────────────────────────────────────────────────────────────────
//  ▌ LONG PULLBACK ENTRY USING FIXED PERCENTAGE RETRACEMENT
// ─────────────────────────────────────────────────────────────────────────────
// We use persistent variables to track the pullback signal.
var bool longSignalActive = false
var float pullHigh = na        // highest high since long signal activation
var float retraceLevel = na    // level = pullHigh * (1 - retracementPct)

// Only consider new entries when no position is open.
if strategy.position_size == 0
    // When a long crossover occurs, activate the signal and initialize pullHigh.
    if longCondition
        longSignalActive := true
        pullHigh := high

    // If signal active, update pullHigh and compute retracement level.
    if longSignalActive
        pullHigh := math.max(pullHigh, high)
        retraceLevel := pullHigh * (1 - retracementPct)

        // When price bounces upward and crosses above the retracement level, enter long
        if ta.crossover(close, retraceLevel)
            strategy.entry("Long", strategy.long)
            longSignalActive := false

    // Short entries: enter immediately if conditions are met
    if shortCondition and shortValid
        strategy.entry("Short", strategy.short)

// ─────────────────────────────────────────────────────────────────────────────
//  ▌ EXIT CONDITIONS WITH ADJUSTABLE TP, SL & BE
// ─────────────────────────────────────────────────────────────────────────────
var bool beLong  = false
var bool beShort = false

// LONG EXIT LOGIC
if strategy.position_size > 0 and strategy.position_avg_price > 0
    longEntry = strategy.position_avg_price

    // Additional exit: if SMA(10) crosses below SMA(25) while price < EMA150, exit long
    if ta.crossunder(sma10, sma25) and close < ema150
        label.new(bar_index, low, "SMA Exit", style=label.style_label_down, color=color.red, textcolor=color.white)
        strategy.close("Long", comment="SMA Cross Exit")

    // Break-even trigger if price moves in favor by beTrigger points
    if close >= longEntry + beTrigger
        beLong := true

    effectiveLongStop = beLong ? longEntry : (longEntry - slDistance)
    if close <= effectiveLongStop
        label.new(bar_index, low, (beLong ? "BE Hit" : "SL Hit"), style=label.style_label_down, color=color.red, textcolor=color.white)
        strategy.close("Long", comment=(beLong ? "BE Hit" : "SL Hit"))

    if close >= longEntry + tpDistance
        label.new(bar_index, high, "TP Hit", style=label.style_label_up, color=color.green, textcolor=color.white)
        strategy.close("Long", comment="TP Hit")

// SHORT EXIT LOGIC
if strategy.position_size < 0 and strategy.position_avg_price > 0
    shortEntry = strategy.position_avg_price

    // Basic stop logic
    if close >= shortEntry + slDistance
        label.new(bar_index, high, (beShort ? "BE Hit" : "SL Hit"), style=label.style_label_up, color=color.red, textcolor=color.white)
        strategy.close("Short", comment=(beShort ? "BE Hit" : "SL Hit"))

    // Take profit logic
    if close <= shortEntry - tpDistance
        label.new(bar_index, low, "TP Hit", style=label.style_label_down, color=color.green, textcolor=color.white)
        strategy.close("Short", comment="TP Hit")

    // Break-even trigger
    if close <= shortEntry - beTrigger
        beShort := true

    effectiveShortStop = beShort ? shortEntry : (shortEntry + slDistance)
    if close >= effectiveShortStop
        label.new(bar_index, high, (beShort ? "BE Hit" : "SL Hit"), style=label.style_label_up, color=color.red, textcolor=color.white)
        strategy.close("Short", comment=(beShort ? "BE Hit" : "SL Hit"))

// Reset BE flags when no position is open
if strategy.position_size == 0
    beLong  := false
    beShort := false
    // Reset the pullback signal
    if not longSignalActive
        pullHigh := na
        retraceLevel := na