
Strategi ini dibangunkan berdasarkan kepada idea-idea yang diberikan oleh Andrew Abraham dalam artikel yang diterbitkan dalam jurnal Analis Teknologi Perdagangan Perak pada bulan September 1998 untuk mengikuti trend harga saham secara dinamik dan menghasilkan isyarat perdagangan berdasarkan pada itu.
Strategi ini mula-mula mengira julat pergerakan sebenar purata 21 hari terakhir sebagai titik rendah rujukan, kemudian mengira harga tertinggi dan terendah dalam 21 hari terakhir, dan dengan itu menetapkan batas atas saluran, batas atas saluran adalah harga tertinggi 21 hari terakhir tolak 3 kali julat pergerakan sebenar purata, dan batas bawah adalah harga minimum 21 hari terakhir ditambah 3 kali julat pergerakan sebenar purata. Apabila harga di atas cakera teratas saluran, ia akan menjadi isyarat tekanan; apabila harga di bawah cakera teratas saluran, ia akan menjadi isyarat menarik.
Kelebihan utama strategi ini ialah ia dapat mengesan trend harga secara dinamik dan menghasilkan isyarat perdagangan. Ia lebih baik menangkap trend perubahan harga berbanding dengan strategi purata bergerak dengan parameter tetap. Selain itu, pembentukan saluran yang digabungkan dengan julat pergerakan sebenar mengelakkan kelemahan pembatasan saluran hanya berdasarkan harga minimum tertinggi.
Strategi ini mempunyai dua aspek risiko utama: satu adalah risiko perdagangan berlebihan yang disebabkan oleh peningkatan isyarat perdagangan; kedua adalah risiko yang mungkin disebabkan oleh parameter yang tidak betul. Oleh kerana strategi ini menggunakan parameter dinamik, isyarat perdagangan akan lebih kerap daripada strategi purata bergerak tradisional, dan mungkin membawa risiko perdagangan berlebihan. Selain itu, jika parameter yang tidak betul, seperti jangka masa yang terlalu pendek atau jumlah had saluran yang terlalu kecil, isyarat palsu akan meningkat dan meningkatkan risiko.
Untuk mengawal risiko, parameter boleh disesuaikan dengan betul, pilih tempoh masa yang lebih lama, dan kelonggaran yang sesuai untuk had atas dan bawah saluran. Selain itu, anda juga boleh mempertimbangkan untuk memasukkan strategi hentikan kerugian untuk mengawal kerugian tunggal.
Ruang pengoptimuman strategi ini agak besar. Sebagai contoh, anda boleh mempertimbangkan untuk menggabungkan indikator penapisan lain, seperti RSI, KD, dan lain-lain untuk mengelakkan penembusan palsu. Anda juga boleh mencuba parameter pengoptimuman automatik melalui kaedah pembelajaran mesin.
Strategi ini secara keseluruhan merupakan strategi trend pengesanan yang sangat praktikal. Berbanding dengan strategi purata bergerak tradisional, ia lebih fleksibel dan pintar, mampu menangkap trend perubahan harga secara dinamik. Dengan penyesuaian parameter yang sesuai, kualiti isyarat dagangan yang lebih tinggi, dapat memperoleh pulangan yang baik.
/*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")