
Adaptive Moving Average Cross Tracking Stop Loss Strategi adalah strategi perdagangan kuantitatif yang menggabungkan beberapa indikator teknis. Strategi ini terutama berdagang berdasarkan sinyal lintas cepat dan lambat dari Simple Moving Average (SMA), sambil menggunakan Tracking Stop Loss Adaptive untuk mengelola risiko. Strategi ini juga mengintegrasikan beberapa fitur canggih, seperti penentuan posisi berdasarkan volatilitas dan tingkat Stop Loss Adaptif, untuk meningkatkan fleksibilitas dan robustnya dalam berbagai kondisi pasar.
Logika inti dari strategi ini terdiri dari beberapa komponen utama:
Moving Average Crossover: Menggunakan Simple Moving Average (SMA) dengan dua periode yang berbeda, yaitu SMA Fast (default 5 cycle) dan SMA Slow (default 50 cycle). Bila SMA Fast melintasi SMA Slow ke atas, maka akan terjadi multisignal.
Posisi Sizing: Strategi ini menggunakan metode posisi sizing dinamis berdasarkan saldo akun dan harga saat ini. Selain itu, faktor “keyakinan” diperkenalkan, yang dapat menyesuaikan proporsi dana yang dimasukkan.
Tracking stop loss: menerapkan mekanisme tracking stop loss berdasarkan persentase. Tingkat stop loss akan naik seiring kenaikan harga untuk mengunci keuntungan dan membatasi penarikan balik.
Fitur adaptif: Jika opsi “fancy_tests” diaktifkan, strategi akan menggunakan persentase stop loss dinamis berdasarkan standar deviasi, sehingga tingkat stop loss dapat disesuaikan secara adaptif sesuai dengan volatilitas pasar.
Logika Keluar: Strategi ini terutama bergantung pada tracking stop loss untuk menutup posisi, tanpa menetapkan fixed gain/loss.
Trend Following: Dengan menggunakan moving average crossover, strategi ini dapat menangkap tren jangka menengah dan panjang, yang memungkinkan keuntungan yang signifikan dalam tren yang kuat.
Manajemen risiko: Menggunakan mekanisme tracking stop loss, dapat mengontrol risiko penurunan secara efektif, dan memungkinkan keuntungan untuk tumbuh bebas.
Adaptivitas: Strategi dapat beradaptasi dengan lebih baik terhadap berbagai kondisi pasar dengan menyesuaikan tingkat stop loss dengan faktor volatilitas yang dimasukkan.
Pengelolaan dana: Dimensi posisi dinamis membantu meningkatkan volume transaksi seiring pertumbuhan akun, dan juga secara otomatis mengurangi risiko jika akun berkurang.
Fleksibilitas: Strategi menyediakan beberapa parameter yang dapat disesuaikan, seperti moving average, stop loss, dan lainnya, yang dapat dioptimalkan oleh pengguna sesuai dengan preferensi risiko pasar dan pribadi yang berbeda.
False breakout: Dalam pasar horizontal atau bergejolak, mungkin sering terjadi false breakout pada moving average, yang menyebabkan beberapa stop loss.
Lagging: Moving Average pada dasarnya merupakan indikator yang tertinggal dan mungkin tidak bereaksi dengan cepat di pasar yang sangat bergejolak.
Overtrading: Jika parameter tidak diatur dengan benar, dapat menyebabkan sering masuk dan keluar, meningkatkan biaya transaksi.
Risiko penarikan: Meskipun ada tracking stop loss, dalam pasar yang berbalik dengan cepat, kemungkinan penarikan yang lebih besar.
Perdagangan satu arah: Strategi saat ini hanya melakukan lebih banyak dan tidak melakukan shorting, mungkin kehilangan peluang atau mengalami kerugian dalam tren turun.
Analisis multi-frame waktu: memperkenalkan indikator penilaian tren jangka panjang, seperti moving average dengan periode yang lebih panjang, untuk mengurangi sinyal palsu.
Menambahkan logika shorting: memperluas strategi untuk mendukung perdagangan shorting, meningkatkan komprehensibilitas strategi dan peluang untuk mendapatkan keuntungan.
Optimalkan waktu masuk: Pertimbangkan untuk memfilter sinyal perdagangan dalam kombinasi dengan indikator teknis lainnya (seperti RSI, MACD, dll.) untuk meningkatkan akurasi masuk.
Optimasi parameter dinamis: menerapkan mekanisme penyesuaian parameter adaptif, seperti penyesuaian siklus rata-rata bergerak berdasarkan dinamika volatilitas pasar.
Meningkatkan mekanisme cap profit: Selain melacak stop loss, pertimbangkan untuk menambahkan aturan cap profit berdasarkan indikator teknis atau target tetap.
Meningkatkan manajemen posisi: menerapkan strategi penentuan ukuran posisi yang lebih kompleks, seperti berdasarkan Kelly Principles atau metode penyetoran risiko lainnya.
Menambahkan penyaringan fundamental: Untuk perdagangan saham, pertimbangkan untuk memperkenalkan indikator fundamental sebagai syarat penyaringan tambahan.
Adaptive Moving Average Cross Tracking Stop Strategy adalah strategi komprehensif yang menggabungkan beberapa konsep perdagangan kuantitatif. Strategi ini menangkap tren dengan lintas rata-rata bergerak, memanfaatkan risiko manajemen stop tracking, dan meningkatkan adaptasi melalui penyesuaian parameter dinamis. Meskipun ada beberapa risiko dan keterbatasan yang melekat, dengan pengoptimalan parameter yang cermat dan perbaikan strategi lebih lanjut, ia memiliki potensi untuk menjadi sistem perdagangan yang kuat.
/*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)