Strategi Mengikuti Tren Crossover Rata-rata Bergerak Dinamis

SMA MA TP SL
Tanggal Pembuatan: 2024-12-27 15:08:40 Akhirnya memodifikasi: 2024-12-27 15:08:40
menyalin: 3 Jumlah klik: 106
1
fokus pada
1214
Pengikut

Strategi Mengikuti Tren Crossover Rata-rata Bergerak Dinamis

Ringkasan

Strategi ini adalah sistem pelacakan tren berdasarkan sinyal persilangan rata-rata pergerakan ganda, dikombinasikan dengan mekanisme stop-profit dan stop-loss yang dinamis. Strategi ini menggunakan rata-rata pergerakan sederhana (SMA) 5 periode dan 12 periode untuk menghasilkan sinyal perdagangan dan mengoptimalkan rasio risiko-pengembalian dengan menyesuaikan level take-profit dan stop-loss secara dinamis. Take profit awal ditetapkan sebesar 10% dan stop loss ditetapkan sebesar 5%. Ketika harga bergerak ke arah yang menguntungkan, level take profit disesuaikan menjadi 20% dan stop loss diperketat menjadi 2,5%. untuk melindungi keuntungan.

Prinsip Strategi

Logika inti dari strategi ini didasarkan pada hubungan persilangan antara rata-rata pergerakan cepat (5 periode) dan rata-rata pergerakan lambat (12 periode). Ketika garis cepat melintasi garis lambat dari bawah ke atas, sistem menghasilkan sinyal panjang dan membuka posisi; ketika garis cepat melintasi garis lambat dari atas ke bawah, sistem menutup posisi. Keunikan strategi ini terletak pada mekanisme manajemen risiko yang dinamis: setelah posisi ditetapkan, sistem akan memantau tren harga secara real time dan secara dinamis menyesuaikan level take-profit dan stop-loss sesuai dengan perubahan harga untuk memaksimalkan keuntungan sambil mengendalikan risiko. .

Keunggulan Strategis

  1. Sistem ini mengadopsi strategi persilangan rata-rata pergerakan ganda klasik, dengan sinyal yang jelas, mudah dipahami dan dijalankan.
  2. Mekanisme stop-profit dan stop-loss yang dinamis dapat secara efektif melindungi keuntungan yang direalisasikan dan menghindari penarikan
  3. Parameter strategi dapat disesuaikan secara fleksibel sesuai dengan karakteristik pasar yang berbeda, dengan kemampuan beradaptasi yang kuat
  4. Mekanisme manajemen risikonya sempurna dan dapat secara efektif mengendalikan risiko satu transaksi
  5. Struktur kode jelas, mudah dirawat dan dioptimalkan

Risiko Strategis

  1. Pasar yang bergejolak dapat menghasilkan sinyal palsu, yang menyebabkan seringnya perdagangan
  2. Retracement besar mungkin terjadi dalam pembalikan cepat
  3. Pengaturan parameter yang tidak tepat dapat memengaruhi kinerja strategi
  4. Likuiditas pasar yang tidak mencukupi dapat memengaruhi eksekusi stop loss Langkah-langkah berikut direkomendasikan untuk mengelola risiko:
  • Tambahkan filter tren
  • Pemilihan parameter optimasi
  • Pemantauan likuiditas pasar secara real-time
  • Membangun sistem pengelolaan dana yang baik

Arah optimasi strategi

  1. Memperkenalkan indikator kekuatan tren untuk menyaring sinyal pasar yang mengejutkan
  2. Pertimbangkan untuk menambahkan faktor volume untuk meningkatkan keandalan sinyal
  3. Optimalkan parameter stop-profit dan stop-loss untuk meningkatkan rasio risiko-pengembalian
  4. Menambahkan mekanisme adaptif volatilitas pasar
  5. Meningkatkan sistem manajemen pergudangan

Meringkaskan

Strategi ini mencapai pemahaman tren yang efektif dan pengendalian risiko yang dinamis dengan menggabungkan sinyal persilangan rata-rata bergerak klasik dengan mekanisme manajemen risiko dinamis yang inovatif. Konsep desain strategi jelas, metode implementasinya ringkas dan efektif, serta memiliki kepraktisan dan skalabilitas yang baik. Melalui optimalisasi dan perbaikan berkelanjutan, strategi ini diharapkan dapat mencapai kinerja laba yang stabil dalam transaksi aktual.

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

//@version=6
strategy("My Moving Average Crossover Strategy with Take Profit and Stop Loss", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
//risk_free_rate = float(request.security("IRUS", "D", close)/request.security("IRUS", "D", close[1]) - 1  ))




// MA periods
fastLength = input.int(5, title="Fast MA Length")
slowLength = input.int(12, title="Slow MA Length")




// Take Profit and Stop Loss
takeProfitLevel = input(10, title="Take Profit (пункты)") // Take profit % from the last price
stopLossLevel = input(5, title="Stop Loss (пункты)") // Stop loss  % from the last price
takeProfitLevel_dyn = input(20, title="Dynamic Take Profit (пункты)") // Move TP if current_price higher buy_px
stopLossLevel_dyn =  input(2.5, title="Dynamic Stop Loss (пункты)") // S Move SL if current_price higher buy_px


// Вычисление скользящих средних
fastMA = ta.sma(close, fastLength)
slowMA= ta.sma(close, slowLength)


// Conditions for Sell and Buy
longCondition = ta.crossover (fastMA, slowMA) // покупаем, если короткая MA персекает длинную снизу-вверх
shortCondition = ta.crossunder(fastMA, slowMA) // продаем, если короткая MA персекает длинную сверху-вниз




// Buy position condition
if (longCondition)
    strategy.entry("Buy", strategy.long)






// Dynamic TP SL leveles
takeProfitPrice = strategy.position_avg_price * (1+ takeProfitLevel / 100)
stopLossPrice = strategy.position_avg_price * (1-stopLossLevel / 100)


entryPrice = strategy.position_avg_price




if (strategy.position_size > 0) // если есть открытая позиция




    // takeProfitPrice := entryPrice * (1+ takeProfitLevel / 100)
    // stopLossPrice := entryPrice * (1-stopLossLevel / 100)


    // // Перемещение Stop Loss и Take Profit
    if (close > entryPrice)
   
        takeProfitPrice := close * (1+ takeProfitLevel_dyn / 100)
        stopLossPrice := close * (1- stopLossLevel_dyn/ 100)






if (shortCondition)
    strategy.close("Buy")




strategy.exit("Take Profit/Stop loss", "Buy", limit=takeProfitPrice, stop=stopLossPrice)


// Drawing MA lines
plot(fastMA, color=color.blue, title="Fast Moving Average")
plot(slowMA, color=color.orange, title="Slow Moving Average")




// Визуализация
plot(longCondition ? na : takeProfitPrice, title="Take Profit Level", color=color.green, linewidth=1, style=plot.style_line)
plot(longCondition ? na: stopLossPrice, title="Stop Loss Level", color=color.red, linewidth=1, style=plot.style_line)