
Strategi ini menggunakan metode trailing stop volatilitas Wilder, yang dikombinasikan dengan indikator ATR dan berbagai jenis moving averages, untuk mencapai strategi trailing stop yang sangat fleksibel.
Inti dari strategi ini adalah algoritma trailing stop Wilder volatility. Ini pertama-tama menghitung indikator ATR, menghitung panjang dan perkalian indikator ATR sesuai dengan parameter yang dimasukkan, dan mendapatkan stop loss yang dinamis. Kemudian menggabungkan opsi dari harga penutupan, harga tertinggi, dan harga terendah, terus-menerus memperbarui titik tinggi dan rendah dari stop loss.
Di dalam kode, pertama-tama, melalui fungsi f_ma, implementasikan berbagai jenis moving average seperti RMA, EMA, SMA, Hull MA. Kemudian menghitung indikator ATR, kalikan dengan kelipatan yang ditetapkan pengguna, untuk mendapatkan stop loss yang didasarkan pada tingkat fluktuasi. Melalui fungsi highestest dan lowest, pelacak titik tertinggi dan terendah dari stop loss dan melakukan perdagangan ketika harga menembus stop loss.
Strategi ini fleksibel menggunakan indikator ATR, berbagai jenis garis rata-rata dan parameter pengaturan, untuk mencapai sebuah sangat kuat adaptif tren mengikuti strategi stop loss. Hal ini dapat secara efektif mengikuti tren, berhenti kehilangan ketika ada market besar retreat.
Strategi ini pertama-tama menggunakan algoritma Wilder Volatility Trailing Stop, yang merupakan metode tracking trend yang telah terbukti dan dapat diandalkan.
Strategi menggunakan indikator ATR untuk menghitung stop loss line secara dinamis, dapat menghindari titik stop loss yang terlalu padat. Indikator ATR dapat secara efektif mencerminkan volatilitas dan tingkat risiko pasar.
Kode ini mengimplementasikan berbagai pilihan garis rata seperti RMA, EMA, SMA, Hull MA, dan lain-lain untuk meningkatkan kemampuan adaptasi strategi.
Dengan menyesuaikan panjang ATR dan parameter perkalian, dapat ditemukan parameter yang lebih baik untuk pasar yang berbeda dan mengoptimalkan efektivitas strategi.
Strategi ini menggunakan berbagai pilihan harga seperti harga tertinggi, harga terendah, dan harga penutupan untuk menghitung stop loss line, yang dapat dioptimalkan untuk berbagai varietas.
Secara keseluruhan, strategi ini merupakan strategi stop loss yang dapat diandalkan, fleksibel, dan mudah dioptimalkan.
Strategi ini terutama bergantung pada optimasi parameter, yang memerlukan pengujian untuk menemukan kombinasi ATR dan parameter perkalian yang sesuai untuk pasar dan varietas yang berbeda, atau mungkin kurang efektif.
Dalam situasi getaran, ATR stop loss line mungkin sering terjadi untuk memicu stop loss. Perlu digabungkan dengan indikator penilaian tren untuk mengoptimalkan, untuk menghindari kehilangan tren getaran.
Stop loss yang terlalu longgar akan melewatkan kesempatan untuk menarik kembali stop loss; terlalu ketat akan meningkatkan frekuensi transaksi dan biaya slippage. Perlu dilakukan pengujian yang cermat untuk menemukan titik keseimbangan.
Beberapa pilihan rata-rata dapat menyebabkan efek strategi menyimpang. Satu rata-rata utama harus dipilih untuk varietas tertentu, rata-rata lainnya hanya sebagai referensi tambahan.
Strategi ini berfokus pada pelacakan tren dan tidak menghasilkan keuntungan langsung. Perlu dipertimbangkan untuk digunakan bersama dengan strategi penarikan masuk atau strategi stop-loss lainnya.
Jika parameter tidak tepat waktu, strategi mungkin mengalami masalah terlalu sering diperdagangkan atau terlalu lama memegang posisi. Ini perlu diselesaikan dengan optimasi.
Anda dapat mempertimbangkan untuk memasukkan indikator tren untuk melihat apakah ada tren atau tidak, dan menghindari terjebak dalam situasi yang bergejolak.
Dapat diuji dengan menambahkan elemen indikator reversal, lebih cepat stop loss beralih ke arah ketika tren overhead dan tren multihead bergantian.
Anda dapat mencoba menghubungkan parameter panjang ATR dengan karakteristik varietas perdagangan, yang memiliki pengaturan panjang ATR yang berbeda.
Anda dapat mencoba menambahkan indikator volume transaksi, meningkatkan kecepatan pengetatan stop loss line ketika volume transaksi menurun secara signifikan.
Anda dapat mempertimbangkan untuk meningkatkan stop loss pada rasio penarikan, tetapi jangan terlalu ketat untuk mencegah stop loss pada penarikan normal.
Pertimbangan dapat dikombinasikan dengan indikator lain dan parameter dapat dioptimalkan, dengan toleransi yang sesuai untuk stop loss jika kekuatan tidak cukup.
Strategi ini didasarkan pada Wilder Volatility Trailing Stop ide, menggunakan indikator ATR untuk merancang strategi stop tracking tren yang sangat adaptif. Ini dapat beradaptasi dengan baik dengan berbagai varietas perdagangan melalui pengoptimalan parameter, merupakan strategi stop loss yang handal dan praktis. Tetapi kita juga harus memperhatikan risiko, dengan menambahkan penilaian tren dan elemen volume perdagangan, untuk mengoptimalkan lebih lanjut, membuatnya lebih stabil dan dapat diandalkan.
/*backtest
start: 2023-10-09 00:00:00
end: 2023-10-16 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// Wilder's Volatility Trailing Stop Strategy with various MA's
// by SparkyFlary
//For Educational Purposes
//Results can differ on different markets and can fail at any time. Profit is not guaranteed.
strategy(title="Wilder's Volatility Trailing Stop Strategy with various MA's", shorttitle="Trailing Stop Strategy", overlay=true)
AtrMult = input(3.0, title="ATR multiplier")
ATRlength = input(7, title="ATR length")
ATRavgType = input("RMA", title="ATR moving average type", options=["RMA", "EMA", "SMA", "HULL"])
sicType = input("close", title="significant close type for trail calculation", options=["close", "high-low"])
//function for choosing moving averages
f_ma(type, src, len) =>
float result = 0
if type == "RMA" // Wilder's moving averaege or Running moving average
result := rma(src, len)
if type == "EMA" // Exponential moving average
result := ema(src, len)
if type == "SMA" // Simple moving average
result := sma(src, len)
if type == "HULL" // Hull moving average
result := wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len)))
result
ATR = f_ma(ATRavgType, tr, ATRlength)
upperTrail = lowest(sicType=="close"?close:low, ATRlength) + AtrMult * ATR
lowerTrail = highest(sicType=="close"?close:high, ATRlength) - AtrMult * ATR
float TS = 0
TS := close < TS[1] ? upperTrail[1] : close > TS[1] ? lowerTrail[1] : TS
//plot
plot(TS, title="trailing stop", color=close<TS?color.red:color.green)
//Strategy
buy = crossover(close, TS)
//sell = close < TS
short = crossunder(close, TS)
//cover = close > TS
strategy.entry(id="enter long", long=true, when=buy)
//strategy.close(id="enter long", comment="exit long", when=sell)
strategy.entry(id="enter short", long=false, when=short)
//strategy.close(id="enter short", comment="exit short", when=cover)