Strategi ini adalah reka bentuk yang lebih baik berdasarkan idea-idea yang dibentangkan oleh Andrew Abraham dalam artikel
Strategi ini mula-mula mengira julat sebenar purata selama 21 hari yang lalu sebagai ambang rujukan, kemudian mengira harga tertinggi dan terendah selama 21 hari yang lalu, dan menetapkan had atas dan bawah saluran dengan sewajarnya. Had atas saluran ditetapkan kepada harga tertinggi 21 hari tolak 3 kali julat sebenar purata, dan had bawah ditetapkan kepada harga terendah 21 hari ditambah 3 kali julat sebenar purata. Apabila harga penutupan lebih tinggi daripada had atas saluran, ia adalah isyarat tekanan jual; apabila harga penutupan lebih rendah daripada had bawah saluran, ia adalah isyarat membeli. Untuk menapis isyarat palsu, purata eksponensial 21 tempoh juga dikira, dan isyarat perdagangan sebenar hanya dihasilkan apabila harga penutupan memecahkan had saluran dalam arah yang sama dengan purata bergerak asal. Di samping itu, strategi ini juga menyediakan isyarat input terbalik, yang boleh membalikkan operasi pendek dan panjang dan pendek.
Kelebihan terbesar strategi ini adalah bahawa ia dapat menjejaki trend harga secara dinamik dan menjana isyarat dagangan dengan sewajarnya. Berbanding dengan strategi purata bergerak dengan parameter tetap, ia dapat menangkap trend perubahan harga dengan lebih baik. Di samping itu, penubuhan saluran menggabungkan julat sebenar, mengelakkan kekurangan menetapkan had saluran berdasarkan harga tertinggi dan terendah sahaja. Julat fluktuasi had atas dan bawah saluran juga sangat munasabah, mengelakkan pecah palsu hingga tahap tertentu. Keupayaan parameter terbalik juga meningkatkan fleksibiliti strategi.
Terdapat dua risiko utama dengan strategi ini: satu adalah risiko overtrading yang disebabkan oleh peningkatan isyarat perdagangan; yang kedua adalah risiko yang mungkin timbul daripada tetapan parameter yang tidak betul. Oleh kerana strategi ini menggunakan parameter dinamik, isyarat perdagangan akan lebih kerap daripada strategi purata bergerak tradisional, yang boleh membawa kepada tahap risiko overtrading yang tertentu. Di samping itu, jika parameter ditetapkan dengan tidak betul, seperti jika tempoh masa ditetapkan terlalu pendek atau nilai had saluran terlalu kecil, isyarat palsu juga akan meningkat, sehingga meningkatkan risiko.
Untuk mengawal risiko, parameter boleh diselaraskan dengan tepat dengan memilih tempoh masa yang lebih lama dan meringankan kekangan had atas dan bawah saluran.
Terdapat ruang yang besar untuk mengoptimumkan strategi ini. Sebagai contoh, penapisan penunjuk lain seperti RSI dan KD boleh dipertimbangkan untuk mengelakkan pecah palsu. Kaedah pembelajaran mesin juga boleh dicuba untuk mengoptimumkan parameter secara automatik. Di samping itu, nilai parameter optimum mungkin berbeza di pelbagai saham dan persekitaran pasaran. Oleh itu, kita juga boleh mempertimbangkan merumuskan satu set mekanisme pengoptimuman parameter untuk memilih parameter optimum secara dinamik berdasarkan ciri saham dan pasaran untuk meningkatkan kestabilan strategi.
Secara keseluruhan, ini adalah strategi penjejakan trend yang sangat praktikal. Berbanding dengan strategi purata bergerak tradisional, ia lebih fleksibel dan pintar, dan dapat menangkap trend perubahan harga secara dinamik. Dengan penyesuaian parameter yang betul, kualiti isyarat dagangnya agak tinggi dan dapat menghasilkan pulangan yang baik. Diharapkan bahawa prestasi strategi ini dapat ditingkatkan lagi melalui pengoptimuman berikutnya.
/*backtest start: 2023-02-15 00:00:00 end: 2024-02-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 10/10/2018 // This is plots the indicator developed by Andrew Abraham // in the Trading the Trend article of TASC September 1998 // It was modified, result values wass averages. //////////////////////////////////////////////////////////// strategy(title="Trend Trader AVR Backtest", overlay = true) Length = input(21, minval=1), LengthMA = input(21, minval=1), Multiplier = input(3, minval=1) reverse = input(false, title="Trade reverse") avgTR = wma(atr(1), Length) highestC = highest(Length) lowestC = lowest(Length) hiLimit = highestC[1]-(avgTR[1] * Multiplier) loLimit = lowestC[1]+(avgTR[1] * Multiplier) ret = 0.0 ret := iff(close > hiLimit and close > loLimit, hiLimit, iff(close < loLimit and close < hiLimit, loLimit, nz(ret[1], 0))) nResMA = ema(ret, LengthMA) pos = 0 pos := iff(close < nResMA, -1, iff(close > nResMA, 1, nz(pos[1], 0))) possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1, 1, pos)) if (possig == 1) strategy.entry("Long", strategy.long) if (possig == -1) strategy.entry("Short", strategy.short) barcolor(possig == -1 ? red: possig == 1 ? green : blue ) plot(nResMA, color= blue , title="Trend Trader AVR")