Strategi stop loss pelacakan dinamis cerdas multi-level berdasarkan Bollinger Bands dan ATR

BB ATR MA SMA EMA SMMA WMA VWMA SD
Tanggal Pembuatan: 2024-12-11 14:52:24 Akhirnya memodifikasi: 2024-12-11 14:52:24
menyalin: 2 Jumlah klik: 363
1
fokus pada
1617
Pengikut

Strategi stop loss pelacakan dinamis cerdas multi-level berdasarkan Bollinger Bands dan ATR

Ringkasan

Strategi ini adalah sistem perdagangan cerdas yang didasarkan pada indikator Brin Belt dan ATR, yang digabungkan dengan mekanisme stop loss multi-level. Strategi ini melakukan masuk ke dalam perdagangan multi-headed dengan mengidentifikasi sinyal reversal di dekat Brin Belt downtrend dan mengelola risiko dengan menggunakan metode stop loss tracking yang dinamis. Sistem ini dirancang untuk mencapai target keuntungan 20% dan stop loss 12%, sementara digabungkan dengan indikator ATR untuk mencapai stop loss tracking yang dinamis, yang dapat memberikan ruang yang cukup untuk perkembangan tren sambil melindungi keuntungan.

Prinsip Strategi

Logika inti dari strategi ini mencakup bagian-bagian utama berikut:

  1. Kondisi masuk: Mintalah bahwa bendera merah menyentuh Brin dan bendera hijau muncul di bawah rel, bentuk ini biasanya menandakan kemungkinan sinyal pembalikan.
  2. Pilihan Moving Average: mendukung berbagai jenis Moving Average (SMA, EMA, SMMA, WMA, VWMA), dengan default menggunakan 20 siklus SMA.
  3. Parameter pita Brin: Menggunakan 1,5 kali standar deviasi sebagai bandwidth, pengaturan ini lebih konservatif daripada standar deviasi 2 kali standar tradisional.
  4. Mekanisme penangguhan: menetapkan target laba awal sebesar 20%.
  5. Mekanisme Stop Loss: Setel 12% dari Stop Loss Protection.
  6. Hilangnya Tracking Dinamis:
    • Aktifkan ATR Tracking Stop Loss setelah harga mencapai level profit target
    • Startup ATR Dynamic Tracking Stop Loss setelah menyentuh Brin Belt di rel
    • Menggunakan ATR perkalian untuk menyesuaikan tracking stop loss distance

Keunggulan Strategis

  1. Pengendalian risiko bertingkat:
    • Modal perlindungan stop loss tetap
    • Tracking Stop Loss Dinamis untuk Mengunci Keuntungan
    • Kerusakan dinamis yang dipicu oleh Brin Belt Rail memberikan perlindungan tambahan
  2. Fleksibelnya pilihan moving average memungkinkan strategi untuk beradaptasi dengan kondisi pasar yang berbeda
  3. Stop loss yang dilacak secara dinamis yang dikombinasikan dengan indikator ATR dapat secara otomatis disesuaikan dengan volatilitas pasar untuk menghindari keluar prematur
  4. Sinyal masuk digabungkan dengan bentuk harga dan indikator teknis untuk meningkatkan keandalan sinyal
  5. Mendukung manajemen posisi dan pengaturan biaya transaksi, lebih dekat dengan lingkungan perdagangan yang sebenarnya

Risiko Strategis

  1. Pasar yang cepat bergoyang dapat menyebabkan transaksi yang sering dan meningkatkan biaya transaksi.
  2. Stop loss tetap 12% mungkin terlalu kecil di beberapa pasar yang sangat fluktuatif
  3. Sinyal pita Brin dapat menghasilkan sinyal palsu di pasar tren
  4. ATR tracking stop loss dapat menyebabkan penarikan yang lebih besar pada saat fluktuasi yang kuat Tindakan mitigasi:
  • Disarankan untuk digunakan dalam periode waktu yang lebih lama (sekitar 30 menit - 1 jam)
  • Rasio stop loss dapat disesuaikan dengan karakteristik varietas tertentu
  • Pertimbangkan untuk menambahkan filter tren untuk mengurangi sinyal palsu
  • Mengubah ATR secara dinamis untuk menyesuaikan dengan kondisi pasar yang berbeda

Arah optimasi strategi

  1. Optimasi masuk:
  • Tambahkan mekanisme konfirmasi volume transaksi
  • Menambahkan sinyal penyaring indikator intensitas tren
  • Pertimbangkan untuk menambahkan penilaian tambahan pada indikator momentum
  1. Optimalisasi Stop Loss:
  • Mengubah stop loss tetap menjadi stop loss dinamis berbasis ATR
  • Mengembangkan algoritma stop loss adaptif
  • Stop loss distance disesuaikan dengan fluktuasi
  1. Optimalisasi Moving Average:
  • Uji kombinasi siklus yang berbeda
  • Studi tentang siklus adaptasi
  • Pertimbangkan untuk menggunakan perilaku harga sebagai pengganti rata-rata bergerak
  1. Optimalisasi manajemen posisi:
  • Mengembangkan Sistem Manajemen Posisi Berbasis Volatilitas
  • Terapkan mekanisme untuk membangun dan mengurangi posisi secara berkelompok
  • Menambahkan pengendalian risiko

Meringkaskan

Strategi ini membangun sistem perdagangan bertingkat melalui Brin Belt dan ATR, menggunakan metode manajemen dinamis dalam entry, stop loss, dan profit. Keunggulan strategi ini adalah sistem kontrol risiko yang lengkap dan kemampuan untuk beradaptasi dengan fluktuasi pasar. Dengan arah optimasi yang disarankan, strategi ini memiliki ruang untuk peningkatan yang besar.

Kode Sumber Strategi
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-09 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Demo GPT - Bollinger Bands Strategy with Tightened Trailing Stops", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_value=0.1, slippage=3)

// Input settings
length = input.int(20, minval=1)
maType = input.string("SMA", "Basis MA Type", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
src = input(close, title="Source")
mult = 1.5 // Standard deviation multiplier set to 1.5
offset = input.int(0, "Offset", minval=-500, maxval=500)
atrMultiplier = input.float(1.0, title="ATR Multiplier for Trailing Stop", minval=0.1) // ATR multiplier for trailing stop

// Time range filters
start_date = input(timestamp("2018-01-01 00:00"), title="Start Date")
end_date = input(timestamp("2069-12-31 23:59"), title="End Date")
in_date_range = true

// Moving average function
ma(source, length, _type) =>
    switch _type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

// Calculate Bollinger Bands
basis = ma(src, length, maType)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev

// ATR Calculation
atr = ta.atr(length) // Use ATR for trailing stop adjustments

// Plotting
plot(basis, "Basis", color=#2962FF, offset=offset)
p1 = plot(upper, "Upper", color=#F23645, offset=offset)
p2 = plot(lower, "Lower", color=#089981, offset=offset)
fill(p1, p2, title="Background", color=color.rgb(33, 150, 243, 95))

// Candle color detection
isGreen = close > open
isRed = close < open

// Flags for entry and exit conditions
var bool redTouchedLower = false
var float targetPrice = na
var float stopLossPrice = na
var float trailingStopPrice = na

if in_date_range
    // Entry Logic: First green candle after a red candle touches the lower band
    if close < lower and isRed
        redTouchedLower := true
    if redTouchedLower and isGreen
        strategy.entry("Long", strategy.long)
        targetPrice := close * 1.2       // Set the target price to 20% above the entry price
        stopLossPrice := close * 0.88   // Set the stop loss to 12% below the entry price
        trailingStopPrice := na         // Reset trailing stop on entry
        redTouchedLower := false

    // Exit Logic: Trailing stop after 20% price increase
    if strategy.position_size > 0 and not na(targetPrice) and close >= targetPrice
        if na(trailingStopPrice)
            trailingStopPrice := close - atr * atrMultiplier // Initialize trailing stop using ATR
        trailingStopPrice := math.max(trailingStopPrice, close - atr * atrMultiplier) // Tighten dynamically based on ATR

    // Exit if the price falls below the trailing stop after 20% increase
    if strategy.position_size > 0 and not na(trailingStopPrice) and close < trailingStopPrice
        strategy.close("Long", comment="Trailing Stop After 20% Increase")
        targetPrice := na // Reset the target price
        stopLossPrice := na // Reset the stop loss price
        trailingStopPrice := na // Reset trailing stop

    // Stop Loss: Exit if the price drops 12% below the entry price
    if strategy.position_size > 0 and not na(stopLossPrice) and close <= stopLossPrice
        strategy.close("Long", comment="Stop Loss Triggered")
        targetPrice := na // Reset the target price
        stopLossPrice := na // Reset the stop loss price
        trailingStopPrice := na // Reset trailing stop

    // Trailing Stop: Activate after touching the upper band
    if strategy.position_size > 0 and close >= upper and isGreen
        if na(trailingStopPrice)
            trailingStopPrice := close - atr * atrMultiplier // Initialize trailing stop using ATR
        trailingStopPrice := math.max(trailingStopPrice, close - atr * atrMultiplier) // Tighten dynamically based on ATR

    // Exit if the price falls below the trailing stop
    if strategy.position_size > 0 and not na(trailingStopPrice) and close < trailingStopPrice
        strategy.close("Long", comment="Trailing Stop Triggered")
        trailingStopPrice := na // Reset trailing stop
        targetPrice := na // Reset the target price
        stopLossPrice := na // Reset the stop loss price