Strategi henti kehilangan penjejakan dinamik pintar pelbagai peringkat berdasarkan Bollinger Bands dan ATR

BB ATR MA SMA EMA SMMA WMA VWMA SD
Tarikh penciptaan: 2024-12-11 14:52:24 Akhirnya diubah suai: 2024-12-11 14:52:24
Salin: 2 Bilangan klik: 363
1
fokus pada
1617
Pengikut

Strategi henti kehilangan penjejakan dinamik pintar pelbagai peringkat berdasarkan Bollinger Bands dan ATR

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan pintar berdasarkan Brin Belt dan ATR Indicator, yang digabungkan dengan mekanisme stop-loss bertingkat. Strategi ini adalah untuk masuk ke dalam pelbagai arah dengan mengenal pasti isyarat pembalikan berdekatan dengan Brin Belt dan menggunakan pendekatan stop-loss yang dinamik untuk menguruskan risiko. Sistem ini direka untuk mencapai sasaran keuntungan 20% dan titik stop-loss 12%, sambil mewujudkan stop-loss yang dinamik yang digabungkan dengan ATR Indicator, yang dapat memberikan ruang yang mencukupi untuk perkembangan trend sambil melindungi keuntungan.

Prinsip Strategi

Logik teras strategi merangkumi bahagian penting berikut:

  1. Syarat kemasukan: Memerlukan tali merah menyentuh tali pinggang Brin dan kemudian muncul tali hijau, yang biasanya menandakan isyarat pembalikan yang mungkin.
  2. Pilihan purata bergerak: Sokongan pelbagai jenis purata bergerak ((SMA, EMA, SMMA, WMA, VWMA), secara lalai menggunakan 20 kitaran SMA.
  3. Parameter Brin: Menggunakan 1.5 kali standard deviation sebagai bandwidth, yang lebih konservatif daripada 2 kali standard deviation tradisional.
  4. Mekanisme penangguhan: Tetapkan sasaran keuntungan awal sebanyak 20%.
  5. Mekanisme Hentikan Kerosakan: Tetapkan 12% perlindungan Hentikan Kerosakan tetap.
  6. Kekalahan Tracker Dinamik:
    • Aktifkan ATR Tracking Stop Loss apabila harga mencapai tahap keuntungan sasaran
    • Menghantar ATR Dynamic Tracking Stop Loss selepas menyentuh Brin Belt
    • Menggunakan ATR untuk mengubahsuai dinamik pengesanan jarak henti

Kelebihan Strategik

  1. Pengendalian risiko pelbagai peringkat:
    • Modal perlindungan stop loss tetap
    • Dinamika Tracking Stop Loss Lock Profits
    • Kerosakan dinamik yang dicetuskan oleh tali pinggang Brin memberikan perlindungan tambahan
  2. Pilihan rata-rata bergerak yang fleksibel membolehkan strategi menyesuaikan diri dengan keadaan pasaran yang berbeza
  3. Tracking stop loss dinamik yang digabungkan dengan ATR dapat disesuaikan secara automatik dengan turun naik pasaran untuk mengelakkan penarikan awal
  4. Isyarat masuk digabungkan dengan bentuk harga dan petunjuk teknikal untuk meningkatkan kebolehpercayaan isyarat
  5. Menyokong pengurusan kedudukan dan tetapan kos dagangan, lebih dekat dengan persekitaran dagangan sebenar

Risiko Strategik

  1. Pasaran yang bergolak dengan cepat boleh menyebabkan transaksi yang kerap dan meningkatkan kos transaksi
  2. Stop loss tetap 12% mungkin terlalu kecil di sesetengah pasaran yang sangat tidak menentu
  3. Isyarat Brinband boleh menghasilkan isyarat palsu dalam pasaran trend
  4. Kerosakan pengesanan ATR boleh menyebabkan penarikan balik yang lebih besar apabila berlaku turun naik yang teruk Langkah-langkah mitigasi:
  • Disyorkan untuk digunakan dalam jangka masa yang lebih lama (30 minit - 1 jam)
  • Kadar hentian boleh disesuaikan mengikut ciri-ciri jenis tertentu
  • Pertimbangkan untuk menambah penapis trend untuk mengurangkan isyarat palsu
  • Mengubah ATR secara dinamik untuk menyesuaikan diri dengan keadaan pasaran yang berbeza

Arah pengoptimuman strategi

  1. Pengoptimuman kemasukan:
  • Tambah mekanisme pengesahan volum transaksi
  • Tambah isyarat penapis trend intensiti
  • Pertimbangkan untuk memasukkan penilaian sokongan untuk indikator momentum
  1. Pengoptimuman Stop Loss:
  • Mengubah stop loss tetap kepada stop loss dinamik berasaskan ATR
  • Membangunkan algoritma penangguhan kerugian
  • Jarak hentian yang disesuaikan mengikut kadar turun naik
  1. Pengoptimuman purata bergerak:
  • Uji kombinasi kitaran yang berbeza
  • Kajian mengenai kaedah kitaran penyesuaian
  • Pertimbangkan untuk menggunakan Price Action sebagai alternatif kepada Moving Average
  1. Pengurusan Posisi Optimum:
  • Membangunkan sistem pengurusan kedudukan berdasarkan kadar turun naik
  • Melaksanakan mekanisme untuk membina dan mengurangkan kedudukan dalam kelompok
  • Menambah kawalan risiko

ringkaskan

Strategi ini membina sistem perdagangan bertingkat melalui tanda Brin dan ATR, menggunakan kaedah pengurusan dinamik dalam masuk, hentikan kerugian dan keuntungan. Keunggulan strategi ini adalah sistem kawalan risiko yang sempurna dan kemampuan untuk menyesuaikan diri dengan turun naik pasaran. Dengan arah pengoptimuman yang disyorkan, strategi ini masih mempunyai ruang untuk peningkatan yang besar.

Kod 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