Sumber daya yang dimuat... Pemuatan...

Adaptive Moving Average Crossover dengan Trailing Stop-Loss Strategy

Penulis:ChaoZhang, Tanggal: 2024-07-29 14:27:58
Tag:SMAMAEMAATRSLTP

img

Gambaran umum

Adaptive Moving Average Crossover with Trailing Stop-Loss Strategi adalah pendekatan perdagangan kuantitatif yang menggabungkan beberapa indikator teknis. Strategi ini terutama bergantung pada sinyal crossover antara Simple Moving Average (SMA) yang cepat dan lambat untuk entri perdagangan, sambil menggunakan adaptive trailing stop-loss untuk manajemen risiko. Strategi ini juga menggabungkan fitur canggih seperti ukuran posisi berbasis volatilitas dan tingkat stop-loss adaptif untuk meningkatkan daya adaptasi dan ketahanan di berbagai kondisi pasar.

Prinsip Strategi

Logika inti dari strategi ini mencakup komponen kunci berikut:

  1. Moving Average Crossover: Menggunakan dua Simple Moving Averages (SMA) dengan periode yang berbeda - SMA cepat (default 5 periode) dan SMA lambat (default 50 periode).

  2. Ukuran Posisi: Strategi ini menggunakan metode ukuran posisi dinamis berdasarkan saldo rekening dan harga saat ini.

  3. Trailing Stop-Loss: Mengimplementasikan mekanisme stop-loss trailing berbasis persentase.

  4. Fitur Adaptif: Jika opsi fancy_tests diaktifkan, strategi menggunakan persentase stop-loss dinamis berdasarkan standar deviasi, memungkinkan tingkat stop-loss untuk beradaptasi dengan volatilitas pasar.

  5. Logika Keluar: Strategi ini terutama bergantung pada stop-loss trailing untuk penutupan posisi, tanpa menetapkan titik profit tetap.

Keuntungan Strategi

  1. Trend Following: Dengan menggunakan crossover rata-rata bergerak, strategi dapat menangkap tren jangka menengah hingga panjang, yang bermanfaat untuk keuntungan yang substansial di pasar dengan tren yang kuat.

  2. Manajemen Risiko: Mekanisme stop-loss trailing secara efektif mengendalikan risiko penurunan sementara memungkinkan keuntungan berjalan.

  3. Kemampuan beradaptasi: Dengan memasukkan faktor volatilitas untuk menyesuaikan tingkat stop loss, strategi dapat lebih mudah beradaptasi dengan lingkungan pasar yang berbeda.

  4. Manajemen Modal: Dimensi posisi dinamis membantu meningkatkan ukuran perdagangan saat akun tumbuh dan secara otomatis mengurangi eksposur risiko selama penarikan akun.

  5. Fleksibilitas: Strategi ini menawarkan beberapa parameter yang dapat disesuaikan, seperti periode rata-rata bergerak dan persentase stop-loss, yang memungkinkan pengguna untuk mengoptimalkan berdasarkan pasar yang berbeda dan preferensi risiko pribadi.

Risiko Strategi

  1. False Breakouts: Di pasar yang bervariatif atau bergolak, sering terjadi false breakout dari moving average, yang menyebabkan beberapa stop loss exit.

  2. Lag: Rata-rata bergerak secara inheren merupakan indikator yang tertinggal, yang mungkin tidak bereaksi cukup cepat di pasar yang sangat volatile.

  3. Overtrading: Pengaturan parameter yang tidak tepat dapat mengakibatkan masuk dan keluar yang sering, meningkatkan biaya transaksi.

  4. Risiko penarikan: Meskipun stop-loss yang tertinggal, strategi mungkin masih menghadapi penarikan yang signifikan di pasar yang berbalik dengan cepat.

  5. Trading Unidirectional: Strategi saat ini hanya mengambil posisi panjang, berpotensi kehilangan peluang atau mengalami kerugian dalam tren penurunan.

Arah Optimasi Strategi

  1. Analisis Multi-Timeframe: Memperkenalkan indikator tren jangka panjang, seperti rata-rata bergerak jangka panjang, untuk mengurangi sinyal palsu.

  2. Tambahkan Logika Penjualan Singkat: Perluas strategi untuk mendukung perdagangan pendek, meningkatkan komprehensi dan peluang keuntungan.

  3. Optimalkan Waktu Masuk: Pertimbangkan untuk menggabungkan indikator teknis lainnya (misalnya, RSI, MACD) untuk menyaring sinyal perdagangan dan meningkatkan akurasi masuk.

  4. Optimasi Parameter Dinamis: Melaksanakan mekanisme penyesuaian parameter adaptif, seperti penyesuaian periode rata-rata bergerak secara dinamis berdasarkan volatilitas pasar.

  5. Memperkenalkan Mekanisme Pengambilan Keuntungan: Selain trailing stops, pertimbangkan untuk menambahkan aturan pengambilan keuntungan berdasarkan indikator teknis atau target tetap.

  6. Meningkatkan Manajemen Posisi: Menerapkan strategi ukuran posisi yang lebih canggih, seperti yang didasarkan pada Kriteria Kelly atau metode paritas risiko lainnya.

  7. Tambahkan Filter Dasar: Untuk perdagangan saham, pertimbangkan untuk memasukkan indikator dasar sebagai kondisi penyaringan perdagangan tambahan.

Kesimpulan

Adaptive Moving Average Crossover with Trailing Stop-Loss Strategy adalah pendekatan komprehensif yang mengintegrasikan beberapa konsep perdagangan kuantitatif. Ini menangkap tren melalui crossover rata-rata bergerak, mengelola risiko menggunakan trailing stop, dan meningkatkan kemampuan beradaptasi melalui penyesuaian parameter dinamis. Sementara risiko dan keterbatasan yang melekat ada, pengoptimalan parameter yang cermat dan peningkatan strategi lebih lanjut berpotensi mengubahnya menjadi sistem perdagangan yang kuat. Desain modular strategi ini juga memberikan dasar yang kuat untuk ekspansi dan optimasi di masa depan. Untuk pedagang yang mencari pengembalian yang konsisten di pasar tren sambil menekankan manajemen risiko, strategi ini menawarkan titik awal yang sangat baik.


/*backtest
start: 2023-07-23 00:00:00
end: 2024-07-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Scriptâ„¢ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © chinmay.hundekari

//@version=5
//@version=5
strategy("test", overlay = true)

// Calculate two moving averages with different lengths.
SLMA = input.int(50,"SMA",minval=10,step=1)
FSMA = input.int(5,"SMA",minval=1,step=1)
fancy_tests = input.bool(true,"Enable Fancy Changes")
longLossPerc = input.float(2, title="Trailing Stop Loss (%)",
     minval=0.0, step=0.1) * 0.01
stdMult = input.float(2.0, title="Standard Deviation Multiplier",
     minval=0.0, step=0.01)

float fastMA = ta.sma(close, FSMA)
float slowMA = ta.sma(close, SLMA)
float closMA = ta.sma(close, 25)

confidence = 1.0
if (fancy_tests)
    longLossPerc := stdMult * ta.stdev(ohlc4, 20)/close
balance = strategy.initial_capital + strategy.netprofit
balanceInContracts = balance* confidence/close

// Enter a long position when `fastMA` crosses over `slowMA`.
if ta.crossover(fastMA, slowMA)
    strategy.entry("BUY", strategy.long, qty=balanceInContracts)
//longStopPrice  = strategy.position_avg_price * (1 - longLossPerc)
//Trailing Stop loss Code
longStopPrice = 0.0
percLoss = longLossPerc
longStopPrice := if strategy.position_size > 0
    //if (strategy.openprofit_percent/100.0 > longLossPerc)
    //    percLoss := math.min(strategy.openprofit_percent/200.0, longLossPerc)
    stopValue = close * (1 - percLoss)
    math.max(stopValue, longStopPrice[1])
else
    0
if strategy.position_size > 0
    strategy.exit("STP", stop=longStopPrice)
plot(strategy.position_size > 0 ? longStopPrice : na,
     color=color.red, style=plot.style_cross,
     linewidth=2, title="Long Stop Loss")
// Enter a short position when `fastMA` crosses under `slowMA`.
//if ta.crossunder(fastMA, closMA)
//    strategy.close_all("SEL")//strategy.entry("sell", strategy.short)

// Plot the moving averages.
plot(fastMA, "Fast MA", color.aqua)
plot(slowMA, "Slow MA", color.orange)
plot((confidence)*(close), "Confidence", color=color.green, linewidth=2)


Berkaitan

Lebih banyak