Sumber daya yang dimuat... Pemuatan...

Trend Crossover Rata-rata Bergerak Dinamis Mengikuti Strategi dengan Manajemen Risiko Adaptif

Penulis:ChaoZhang, Tanggal: 2024-12-27 15:08:40
Tag:SMAMATPSL

img

Gambaran umum

Strategi ini adalah sistem yang mengikuti tren berdasarkan sinyal crossover rata-rata bergerak ganda, menggabungkan mekanisme take profit dan stop-loss yang dinamis. Strategi ini menggunakan 5-periode dan 12-periode Simple Moving Averages (SMA) untuk menghasilkan sinyal perdagangan, mengoptimalkan rasio risiko-imbalan melalui penyesuaian dinamis tingkat take profit dan stop-loss.

Prinsip Strategi

Logika inti didasarkan pada hubungan silang antara rata-rata bergerak cepat (5 periode) dan lambat (12-periode). Sinyal beli dihasilkan ketika MA cepat melintasi di atas MA lambat, sementara posisi ditutup ketika MA cepat melintasi di bawah MA lambat. Keunikan strategi ini terletak pada mekanisme manajemen risiko dinamisnya: setelah masuk posisi, sistem terus memantau pergerakan harga dan secara dinamis menyesuaikan tingkat mengambil keuntungan dan stop-loss untuk memaksimalkan keuntungan sambil mengendalikan risiko.

Keuntungan Strategi

  1. Menggunakan strategi crossover MA ganda klasik dengan sinyal yang jelas, mudah dimengerti dan dilaksanakan
  2. Mekanisme take profit/stop loss yang dinamis secara efektif melindungi keuntungan yang terwujud dan mencegah penarikan
  3. Parameter strategi dapat disesuaikan secara fleksibel untuk karakteristik pasar yang berbeda
  4. Mekanisme manajemen risiko yang komprehensif secara efektif mengendalikan risiko perdagangan tunggal
  5. Struktur kode yang jelas memfasilitasi pemeliharaan dan optimasi

Risiko Strategi

  1. Dapat menghasilkan sinyal palsu di berbagai pasar, menyebabkan perdagangan yang sering
  2. Potensi pengurangan signifikan dalam skenario pembalikan cepat
  3. Pengaturan parameter yang tidak benar dapat mempengaruhi kinerja strategi
  4. Masalah likuiditas pasar dapat mempengaruhi eksekusi stop loss Rekomendasi manajemen risiko:
  • Tambahkan filter tren
  • Optimalkan pemilihan parameter
  • Memantau likuiditas pasar secara real time
  • Menetapkan sistem manajemen uang yang komprehensif

Arahan Optimasi

  1. Memperkenalkan indikator kekuatan tren untuk menyaring sinyal pasar yang berkisar
  2. Pertimbangkan untuk memasukkan faktor volume untuk meningkatkan keandalan sinyal
  3. Mengoptimalkan parameter take profit/stop-loss untuk meningkatkan rasio risiko-manfaat
  4. Tambahkan mekanisme adaptasi volatilitas pasar
  5. Meningkatkan sistem ukuran posisi

Ringkasan

Strategi ini secara efektif menangkap tren dan secara dinamis mengendalikan risiko dengan menggabungkan sinyal crossover rata-rata bergerak klasik dengan manajemen risiko dinamis yang inovatif.


/*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)







Berkaitan

Lebih banyak