Strategi AlphaTrend menggunakan saluran ATR adaptif untuk menangkap arah trend harga dan mengikuti trend berdasarkan penembusan saluran. Khususnya, ia membina saluran dinamik berdasarkan ATR, dengan band atas adalah nilai ATR rendah dikurangkan, dan band bawah adalah nilai ATR tinggi ditambah.
ATR mencerminkan turun naik pasaran dan momentum dalam masa nyata. Saluran yang terbentuk oleh jalur atas dan bawah boleh mengukur momentum harga dan kekuatan. Penembusan menandakan kemungkinan pembalikan trend atau percepatan, menjadikannya masuk akal untuk mengikuti trend. Kelebihan AlphaTrend adalah memanfaatkan kemampuan penyesuaian ATR untuk menangkap perubahan harga, sementara juga menggabungkan penunjuk lain seperti RSI untuk menentukan arah trend, meningkatkan ketepatan kemasukan.
Walau bagaimanapun, beberapa isu perlu diperhatikan. ATR itu sendiri mempunyai ciri-ciri kelewatan, yang boleh menyebabkan entri selepas pembalikan trend. Juga, tidak menggunakan stop loss membawa kepada penarikan yang besar. Akhirnya, parameter seperti tempoh ATR memerlukan pengoptimuman untuk produk dan jangka masa yang berbeza.
Ringkasnya, AlphaTrend mempunyai kekuatan unik dalam mengenal pasti titik pembalikan trend dinamik, tetapi pengurusan risiko yang ketat masih diperlukan untuk perdagangan langsung, termasuk menggunakan berhenti, kedudukan saiz, dan penyesuaian parameter. Dengan kawalan risiko yang betul, strategi ini boleh digunakan dengan berjaya dalam jangka panjang.
/*backtest start: 2023-01-01 00:00:00 end: 2023-04-10 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // author © KivancOzbilgic // developer © KivancOzbilgic //@version=5 strategy("AlphaTrend Strategy", shorttitle='ATst', overlay=true, format=format.price, precision=2, margin_long=100, margin_short=100) coeff = input.float(1, 'Multiplier', step=0.1) AP = input(14, 'Common Period') ATR = ta.sma(ta.tr, AP) src = input(close) showsignalsk = input(title='Show Signals?', defval=false) novolumedata = input(title='Change calculation (no volume data)?', defval=false) upT = low - ATR * coeff downT = high + ATR * coeff AlphaTrend = 0.0 AlphaTrend := (novolumedata ? ta.rsi(src, AP) >= 50 : ta.mfi(hlc3, AP) >= 50) ? upT < nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : upT : downT > nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : downT color1 = AlphaTrend > AlphaTrend[2] ? #00E60F : AlphaTrend < AlphaTrend[2] ? #80000B : AlphaTrend[1] > AlphaTrend[3] ? #00E60F : #80000B k1 = plot(AlphaTrend, color=color.new(#0022FC, 0), linewidth=3) k2 = plot(AlphaTrend[2], color=color.new(#FC0400, 0), linewidth=3) fill(k1, k2, color=color1) buySignalk = ta.crossover(AlphaTrend, AlphaTrend[2]) sellSignalk = ta.crossunder(AlphaTrend, AlphaTrend[2]) K1 = ta.barssince(buySignalk) K2 = ta.barssince(sellSignalk) O1 = ta.barssince(buySignalk[1]) O2 = ta.barssince(sellSignalk[1]) plotshape(buySignalk and showsignalsk and O1 > K2 ? AlphaTrend[2] * 0.9999 : na, title='BUY', text='BUY', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(#0022FC, 0), textcolor=color.new(color.white, 0)) plotshape(sellSignalk and showsignalsk and O2 > K1 ? AlphaTrend[2] * 1.0001 : na, title='SELL', text='SELL', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.maroon, 0), textcolor=color.new(color.white, 0)) longCondition = buySignalk if (longCondition) strategy.entry("Long", strategy.long) shortCondition = sellSignalk if (shortCondition) strategy.entry("Short", strategy.short)