Adaptive Trend Tracking Stop Loss Strategi

Penulis:ChaoZhang, Tarikh: 2023-10-17 14:04:28
Tag:

img

Ringkasan

Strategi ini menggunakan kaedah hentian volatiliti Wilder, digabungkan dengan penunjuk ATR dan pelbagai jenis purata bergerak, untuk melaksanakan strategi hentian kerugian pengesanan trend adaptif.

Logika Strategi

Inti strategi ini adalah algoritma hentian Volatiliti Wilder. Ia mula-mula mengira penunjuk ATR, dan secara dinamik merangka garis stop loss mengikut panjang dan pengganda ATR input. Ia kemudian mengesan tertinggi tertinggi dan terendah rendah garis stop loss berdasarkan pilihan harga yang dipilih di antara harga dekat, tinggi dan rendah. Ia menghantar isyarat perdagangan apabila harga memecahkan garis stop loss.

Dalam kod, fungsi f_ma melaksanakan pelbagai purata bergerak termasuk RMA, EMA, SMA dan Hull MA. Indikator ATR dikira dan didarabkan dengan pengganda yang ditakrifkan pengguna untuk menghasilkan garis berhenti terakhir berdasarkan turun naik. Tahap tertinggi dan terendah garis ini dikesan menggunakan fungsi tertinggi dan terendah. Dagangan diambil apabila harga menembusi garis berhenti terakhir ini.

Dengan menggunakan penunjuk ATR dengan fleksibel, purata bergerak yang berbeza dan parameter yang boleh diselaraskan, strategi ini mewujudkan sistem penyekatan stop loss trend yang sangat adaptif.

Analisis Kelebihan

  • Strategi ini memanfaatkan algoritma Stopping Trailing Volatility Wilder, yang merupakan metodologi Stop Loss trend yang matang dan boleh dipercayai.

  • Strategi ini menggunakan penunjuk ATR untuk mengira garis stop loss secara dinamik, mengelakkan titik stop loss yang kaku. ATR dapat mencerminkan turun naik pasaran dan tahap risiko dengan berkesan.

  • Pelaksanaan pelbagai purata bergerak termasuk RMA, EMA, SMA dan Hull MA meningkatkan kebolehan penyesuaian strategi.

  • Dengan menyesuaikan panjang ATR, parameter pengganda, parameter yang dioptimumkan boleh didapati untuk pasaran yang berbeza, meningkatkan prestasi strategi.

  • Penggunaan pilihan harga yang berbeza seperti harga tinggi, rendah, dekat membolehkan pengoptimuman di seluruh produk yang berbeza.

  • Ringkasnya, ini adalah strategi rintangan kehilangan yang boleh dipercayai, adaptif dan mudah dioptimumkan.

Analisis Risiko

  • Strategi ini sangat bergantung pada pengoptimuman parameter. ATR yang sesuai dan parameter pengganda perlu dijumpai melalui ujian untuk pasaran dan produk yang berbeza, jika tidak, kesan stop loss mungkin tidak ideal.

  • Dalam pasaran yang berbeza, garis stop loss ATR boleh mencetuskan berhenti yang tidak dibenarkan yang kerap. Penunjuk penapis trend perlu diperkenalkan untuk mengoptimumkan ini.

  • Jika garis stop loss terlalu luas, peluang kerugian akan terlepas. Jika terlalu ketat, kekerapan perdagangan dan kos seluncur akan meningkat. Titik seimbang perlu dijumpai melalui ujian yang teliti.

  • Terlalu banyak pilihan purata bergerak boleh membawa kepada penyimpangan prestasi. Satu purata bergerak utama harus dipilih untuk setiap produk, yang lain hanya digunakan sebagai rujukan.

  • Strategi ini memberi tumpuan kepada pengesanan trend dan tidak menyasarkan keuntungan secara langsung. Ia perlu digabungkan dengan strategi masuk / keluar lain atau mengambil teknik keuntungan.

  • Dengan parameter yang tidak betul, strategi mungkin menunjukkan perdagangan yang berlebihan atau tempoh memegang yang terlalu besar.

Arahan pengoptimuman

  • Penunjuk pengenalan trend boleh diperkenalkan untuk mengelakkan whipsaws di pasaran yang berbeza.

  • Penunjuk pembalikan boleh diuji untuk membolehkan berhenti lebih cepat dan membalikkan apabila aliran naik dan turun bergantian.

  • Parameter tempoh ATR boleh dikaitkan dengan ciri-ciri produk, supaya produk yang berbeza menggunakan tempoh ATR yang berbeza.

  • Penunjuk jumlah boleh digunakan untuk mengetatkan garis stop loss lebih cepat apabila jumlah menurun dengan ketara.

  • Peratusan stop loss boleh ditingkatkan, tetapi tidak terlalu ketat untuk mengelakkan berhenti di retracements biasa.

  • Penunjuk lain boleh digunakan untuk mengukur momentum, dan mengoptimumkan parameter untuk melonggarkan berhenti apabila momentum lemah.

Ringkasan

Berdasarkan konsep Stopping Trailing Volatility Wilder, strategi ini menggunakan penunjuk ATR untuk mereka bentuk sistem stop loss pengesanan trend yang sangat adaptif. Melalui pengoptimuman parameter, ia boleh dipasang pada produk perdagangan yang berbeza, dan merupakan pendekatan stop loss yang boleh dipercayai dan praktikal. Tetapi risiko perlu diuruskan dengan peningkatan lanjut seperti penapis trend dan elemen jumlah untuk menjadikannya lebih mantap. Ia juga perlu digabungkan dengan strategi lain untuk memaksimumkan kegunaan teknik stop loss.


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

Lebih lanjut