Strategi perdagangan ayunan biaya rata-rata dinamis multi-level berdasarkan indeks kekuatan relatif dan rentang sebenarnya rata-rata

RSI ATR DCA TP
Tanggal Pembuatan: 2025-02-20 17:25:04 Akhirnya memodifikasi: 2025-02-27 17:22:25
menyalin: 0 Jumlah klik: 369
2
fokus pada
319
Pengikut

Strategi perdagangan ayunan biaya rata-rata dinamis multi-level berdasarkan indeks kekuatan relatif dan rentang sebenarnya rata-rata Strategi perdagangan ayunan biaya rata-rata dinamis multi-level berdasarkan indeks kekuatan relatif dan rentang sebenarnya rata-rata

Ringkasan

Strategi ini adalah sistem perdagangan berskala multi-tahap yang dinamika biaya rata-rata (DCA) yang menggabungkan indeks yang relatif kuat (RSI) dan rata-rata true amplitude (ATR). Hal ini terutama dilakukan dengan mengidentifikasi kondisi pasar oversold untuk batch-building, dan menggunakan ATR untuk secara dinamis menyesuaikan posisi stop-loss, untuk mencapai keuntungan dari operasi bandwidth. Strategi ini memiliki karakteristik seperti penyebaran risiko, pengoptimalan biaya dan stabilitas pendapatan.

Prinsip Strategi

Strategi ini berjalan pada tingkat 4 jam atau garis harian, dengan logika inti yang meliputi:

  1. Sinyal masuk didasarkan pada penilaian oversold RSI di bawah 30, yang memungkinkan hingga 4 kali batch
  2. Jumlah setiap posisi berdasarkan total risiko $200, ukuran posisi berdasarkan 2 kali lipat ATR dinamis
  3. Manajemen gudang menggunakan pelacakan biaya rata-rata dinamis, menghitung harga rata-rata setelah beberapa kali gudang dibangun secara real-time
  4. Stop-loss diatur 3 kali ATR di atas rata-rata dan disesuaikan dengan volatilitas pasar
  5. Menampilkan harga rata-rata dan posisi stop-loss secara real-time melalui garis penanda untuk memudahkan pelacakan visual

Keunggulan Strategis

  1. Kendali Risiko yang Tepat - Kendali yang Tepat terhadap risiko per transaksi dengan mengantisipasi jumlah risiko dan penyesuaian dinamis ATR
  2. Fleksibilitas dalam Pembangunan Gudang - Mekanisme Pembangunan Gudang Batch Menurunkan Biaya dan Mengambil Kesempatan
  3. Stop-loss cerdas - Stop-loss dinamis berbasis ATR menjamin keuntungan dan beradaptasi dengan fluktuasi pasar
  4. Visualisasi yang kuat - tampilan langsung dari garis harga rata-rata dan garis stop memberikan referensi perdagangan yang intuitif
  5. Adaptasi yang baik - parameter strategi dapat disesuaikan dengan karakteristik pasar yang berbeda

Risiko Strategis

  1. Risiko Oversell Berlangsung - Penurunan pasar yang terus menerus dapat menyebabkan terlalu banyak posisi Solusinya: Menegakkan batasan jumlah maksimum gudang yang dapat dibangun, dan mengatur stop loss jika diperlukan.
  2. Stop loss setting risk - stop loss multiplier yang terlalu tinggi dapat menyebabkan kehilangan peluang keuntungan Solusi: Mengatur ATR berdasarkan dinamika pasar
  3. Manajemen risiko - batch warehousing dapat menghabiskan terlalu banyak uang Solusinya: menetapkan batas risiko yang wajar dan ukuran posisi

Arah optimasi strategi

  1. Optimalisasi sinyal masuk
  • Meningkatkan indikator penilaian tren untuk menghindari posisi terburu-buru dalam penurunan yang kuat
  • Menggabungkan indikator volume transaksi untuk meningkatkan keandalan penilaian overselling
  1. Perbaikan mekanisme penghentian
  • Menggunakan mekanisme trailing stop untuk lebih mengunci keuntungan
  • Pertimbangan untuk Batch Stop dan Fleksibilitas Penghasilan
  1. Pengendalian risiko yang lebih kuat
  • Tambahkan kontrol penarikan secara keseluruhan
  • Algoritma yang dioptimalkan untuk distribusi dana

Meringkaskan

Strategi ini, melalui kombinasi RSI dan ATR, memungkinkan sistem perdagangan yang memiliki kontrol risiko dan stabilitas keuntungan. Mekanisme batch-building menawarkan kemungkinan pengoptimalan biaya, sementara desain stop-loss dinamis memastikan kinerja yang wajar dari keuntungan. Meskipun ada beberapa risiko potensial, kinerja keseluruhan strategi akan ditingkatkan lebih lanjut dengan pengaturan parameter yang wajar dan penerapan arah optimasi.

Kode 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)