
Strategi ini menggunakan kaedah berhenti trailing volatility Wilder, menggabungkan indikator ATR dan pelbagai jenis rata-rata bergerak, untuk mencapai strategi berhenti mengikut trend yang sangat fleksibel.
Inti strategi ini adalah algoritma trailing stop Wilder volatility. Ia mula-mula mengira ATR, mengira panjang dan pengganda ATR mengikut parameter input, dan mendapatkan garis hentian yang dinamik. Kemudian menggabungkan pilihan antara harga penutupan, harga tertinggi, dan harga terendah, terus mengemas kini titik tinggi dan rendah garis hentian.
Dalam kod, mula-mula mewujudkan pelbagai purata bergerak seperti RMA, EMA, SMA, dan Hull MA melalui fungsi f_ma. Kemudian menghitung indikator ATR, kalikan dengan kelipatan yang ditetapkan oleh pengguna, untuk mendapatkan garis hentian berdasarkan kadar turun naik. Melalui fungsi tertinggi dan terendah melacak titik tertinggi dan terendah garis hentian, untuk berdagang apabila harga memecahkan garis hentian.
Strategi ini menggunakan indikator ATR, pelbagai jenis garis rata dan parameter yang fleksibel, untuk mewujudkan strategi penarikan trend yang sangat fleksibel. Ia dapat menjejaki trend dengan berkesan dan menghentikan kerugian ketika terdapat penarikan balik yang besar di pasaran.
Strategi ini bermula dengan menggunakan algoritma Wilder Volatility Trailing Stop, yang merupakan kaedah yang terbukti dipercayai untuk mengesan trend.
Kaedah menggunakan ATR untuk mengira garis stop loss secara dinamik, untuk mengelakkan titik stop loss terlalu ketat. ATR dapat mencerminkan turun naik dan tahap risiko pasaran dengan berkesan.
Kode ini mewujudkan pelbagai pilihan garis rata seperti RMA, EMA, SMA, Hull MA, dan lain-lain untuk meningkatkan kebolehan adaptasi strategi.
Dengan menyesuaikan panjang ATR, parameter penggandaan, parameter yang lebih baik dapat dijumpai untuk pasaran yang berbeza, mengoptimumkan kesan strategi.
Strategi ini menggunakan pilihan harga yang berbeza seperti harga tertinggi, harga terendah, dan harga penutupan untuk mengira garis hentian yang boleh dioptimumkan untuk pelbagai jenis.
Secara keseluruhannya, strategi ini adalah strategi yang boleh dipercayai, mudah disesuaikan dan mudah dioptimumkan untuk mengesan trend dan menghentikan kerugian.
Strategi ini bergantung kepada pengoptimuman parameter, yang memerlukan ujian untuk mencari kombinasi parameter ATR dan pengganda yang sesuai untuk pelbagai pasaran dan varieti, jika tidak, kekalahan mungkin tidak baik.
Dalam keadaan gegaran, garis hentian ATR mungkin sering mencetuskan hentian. Perlu dioptimumkan dengan indikator penghakiman trend untuk mengelakkan kehilangan trend gegaran.
Garis berhenti yang terlalu longgar akan kehilangan peluang untuk menarik balik berhenti; terlalu ketat akan meningkatkan frekuensi perdagangan dan kos slippage. Perlu diuji dengan teliti untuk mencari titik keseimbangan.
Pelbagai pilihan garis rata boleh menyebabkan kesan strategi menjadi menyimpang. Satu garis rata utama harus dipilih untuk jenis tertentu, dan garis rata lain hanya sebagai rujukan tambahan.
Strategi ini memberi tumpuan kepada trend-tracking dan tidak dapat menghasilkan keuntungan secara langsung. Ia perlu dipertimbangkan untuk digunakan bersama dengan strategi keluar masuk atau strategi penangguhan yang lain.
Apabila parameter tidak tepat, strategi mungkin mempunyai terlalu banyak perdagangan atau terlalu lama memegang kedudukan. Ini perlu diselesaikan dengan pengoptimuman.
Anda boleh mempertimbangkan untuk memasukkan indikator trend untuk melihat sama ada terdapat trend atau tidak, dan mengelakkan diri daripada terjebak dalam keadaan yang bergolak.
Elemen penunjuk pembalikan boleh diuji untuk menukar kedudukan stop loss ke arah yang lebih cepat apabila trend kepala kosong dan trend kepala banyak bergantian.
Anda boleh cuba mengaitkan parameter panjang ATR dengan ciri-ciri varieti perdagangan, yang mempunyai tetapan panjang ATR yang berbeza.
Anda boleh cuba untuk menambah petunjuk jumlah dagangan, meningkatkan kelajuan pengetatan garis hentian kerugian apabila jumlah dagangan berkurangan dengan ketara.
Anda boleh pertimbangkan untuk meningkatkan peratusan penarikan balik, tetapi jangan terlalu ketat, untuk mengelakkan penarikan balik normal.
Keputusan boleh digabungkan dengan parameter lain dan parameter boleh dioptimumkan, dengan kelonggaran yang sesuai untuk jangkauan kerugian apabila kekuatan tidak mencukupi.
Strategi ini adalah berdasarkan pada pemikiran Wilder Volatility Trailing Stop, menggunakan indikator ATR untuk merancang strategi berhenti mengikuti trend yang sangat beradaptasi. Ia dapat menyesuaikan diri dengan baik dengan pelbagai jenis perdagangan melalui pengoptimuman parameter, merupakan strategi berhenti yang boleh dipercayai dan praktikal.
/*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)