Strategi dagangan ayunan purata kos dinamik berbilang peringkat berdasarkan indeks kekuatan relatif dan julat sebenar purata

RSI ATR DCA TP
Tarikh penciptaan: 2025-02-20 17:25:04 Akhirnya diubah suai: 2025-02-27 17:22:25
Salin: 0 Bilangan klik: 369
2
fokus pada
319
Pengikut

Strategi dagangan ayunan purata kos dinamik berbilang peringkat berdasarkan indeks kekuatan relatif dan julat sebenar purata Strategi dagangan ayunan purata kos dinamik berbilang peringkat berdasarkan indeks kekuatan relatif dan julat sebenar purata

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan berskala dinamik kos rata-rata (DCA) yang menggabungkan indeks yang agak kuat (RSI) dan purata gelombang sebenar (ATR). Ia adalah sistem perdagangan berskala dinamik kos rata-rata (DCA) yang menggabungkan indeks yang agak kuat (RSI) dan purata gelombang sebenar (ATR).

Prinsip Strategi

Strategi berjalan pada tahap 4 jam atau hari, logik terasnya merangkumi beberapa aspek:

  1. Isyarat masuk berdasarkan penilaian oversold RSI di bawah 30 yang membenarkan maksimum 4 pasang
  2. Jumlah setiap kedudukan berdasarkan $ 200 jumlah risiko, saiz pegangan berdasarkan 2 kali ganda ATR dinamik
  3. Pengurusan gudang menggunakan pengesanan kos purata dinamik, mengira harga purata dalam masa nyata selepas banyak gudang dibina
  4. Stop-loss ditetapkan sebagai 3 kali ATR di atas harga purata, menyesuaikan diri dengan turun naik pasaran
  5. Mempaparkan harga purata dan kedudukan berhenti dalam masa nyata melalui garis penanda, memudahkan pengesanan visual

Kelebihan Strategik

  1. Kawalan risiko yang tepat - Kawalan tepat terhadap risiko dalam satu transaksi dengan menetapkan jumlah risiko dan penyesuaian ATR secara dinamik
  2. Fleksibiliti dalam Pembinaan Gudang - Mekanisme pembinaan gudang secara kumpulan dapat mengurangkan kos dan memanfaatkan peluang
  3. Hentian Berkecerdasan - Hentian dinamik berasaskan ATR yang menjamin keuntungan dan menyesuaikan diri dengan turun naik pasaran
  4. Visualisasi yang kuat - paparan sebenar garis harga purata dan garis stop memberikan rujukan dagangan yang intuitif
  5. Adaptif - parameter strategi boleh disesuaikan dengan ciri-ciri pasaran yang berbeza

Risiko Strategik

  1. Risiko Terlalu Jual Berterusan - Penurunan pasaran yang berterusan boleh menyebabkan terlalu banyak kedudukan Penyelesaian: Menegakkan sekatan maksimum untuk membina gudang, dan menetapkan halangan kerugian jika perlu
  2. Tetapan Stop-Loss Risiko - Penambahan Stop-Loss yang terlalu tinggi boleh menyebabkan kehilangan peluang keuntungan Penyelesaian: Mengubah ATR mengikut ciri-ciri pasaran
  3. Risiko pengurusan wang - pembinaan gudang secara berturut-turut mungkin mengambil terlalu banyak wang Penyelesaian: Tetapkan had risiko yang munasabah dan saiz simpanan

Arah pengoptimuman strategi

  1. Pengoptimuman isyarat masuk
  • Meningkatkan indikator penilaian trend untuk mengelakkan tergesa-gesa dalam penurunan yang kuat
  • Gabungan penunjuk kuantiti untuk meningkatkan kebolehpercayaan penghakiman lebihan
  1. Mekanisme penangguhan diperbaiki
  • Memperkenalkan mekanisme trailing stop untuk lebih mengunci keuntungan
  • Pertimbangan untuk menghapuskan batch dan meningkatkan fleksibiliti keuntungan
  1. Pengendalian risiko yang lebih baik
  • Tambah kawalan penarikan balik keseluruhan
  • Algoritma pengedaran dana yang optimum

ringkaskan

Strategi ini melalui gabungan RSI dan ATR, mewujudkan sistem perdagangan yang mempunyai kawalan risiko dan kestabilan keuntungan. Mekanisme pembinaan gudang berturut-turut memberikan kemungkinan pengoptimuman kos, dan reka bentuk hentian dinamik memastikan pelaksanaan keuntungan yang wajar. Walaupun terdapat beberapa risiko yang berpotensi, prestasi keseluruhan strategi akan ditingkatkan lagi dengan penetapan parameter yang wajar dan pelaksanaan arah pengoptimuman.

Kod sumber strategi
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"DOGE_USDT"}]
*/

//@version=6
strategy("DCA-Based Swing Strategy (Risk $200) with Signals", overlay=true)

// === Main Indicators ===
// RSI for identifying oversold conditions
rsi = ta.rsi(close, 14)

// ATR for volatility estimation
atr = ta.atr(14)

// === Strategy Parameters ===
// Risk management
riskPerTrade = 200                       // Total risk ($200)
atrRisk = 2 * atr                        // Risk in dollars per buy (2 ATR)
positionSize = riskPerTrade / atrRisk    // Position size (shares)

// DCA Parameters
maxEntries = 4                           // Maximum of 4 buys
takeProfitATR = 3                        // Take profit: 3 ATR

// === Position Management ===
var float avgEntryPrice = na             // Average entry price
var int entryCount = 0                   // Number of buys
var line takeProfitLine = na             // Take profit line
var line avgPriceLine = na               // Average entry price line

// === Buy and Sell Conditions ===
buyCondition = rsi < 30 and entryCount < maxEntries  // Buy when oversold
if (buyCondition)
    strategy.entry("DCA Buy", strategy.long, qty=positionSize)
    
    // Update the average entry price
    avgEntryPrice := na(avgEntryPrice) ? close : (avgEntryPrice * entryCount + close) / (entryCount + 1)
    entryCount += 1

    // Display "BUY" signal on the chart
    label.new(bar_index, low, "BUY", style=label.style_label_up, color=color.green, textcolor=color.white, size=size.normal)

    // Update lines for average entry price and take profit
    if (not na(takeProfitLine))
        line.delete(takeProfitLine)
    if (not na(avgPriceLine))
        line.delete(avgPriceLine)
    takeProfitPrice = avgEntryPrice + takeProfitATR * atr


// Sell condition: Take profit = 3 ATR from average entry price
takeProfitPrice = avgEntryPrice + takeProfitATR * atr
if (close >= takeProfitPrice and entryCount > 0)
    strategy.close("DCA Buy")
    
    // Reset parameters after closing
    avgEntryPrice := na
    entryCount := 0

    // Remove lines after selling
    if (not na(takeProfitLine))
        line.delete(takeProfitLine)
    if (not na(avgPriceLine))
        line.delete(avgPriceLine)