AlphaTrend Adaptive ATR Channel Breakout Strategi

Penulis:ChaoZhang, Tanggal: 2023-09-11 14:27:54
Tag:

Strategi AlphaTrend menggunakan saluran ATR adaptif untuk menangkap arah tren harga dan mengikuti tren berdasarkan penembusan saluran. Secara khusus, ia membangun saluran dinamis berdasarkan ATR, dengan band atas adalah nilai ATR rendah dikurangi, dan band bawah adalah nilai ATR tinggi ditambah. entri panjang diambil ketika harga pecah di atas band atas, dan entri pendek diambil ketika harga pecah di bawah band bawah.

ATR mencerminkan volatilitas dan momentum pasar secara real time. Saluran yang terbentuk oleh band atas dan bawah dapat mengukur momentum dan kekuatan harga. Breakout menandakan kemungkinan pembalikan atau akselerasi tren, sehingga masuk akal untuk mengikuti tren. Keuntungan dari AlphaTrend adalah memanfaatkan kemampuan adaptasi ATR untuk menangkap perubahan harga, sementara juga menggabungkan indikator lain seperti RSI untuk menentukan arah tren, meningkatkan akurasi entri.

Namun, beberapa masalah perlu dicatat. ATR itu sendiri memiliki karakteristik tertinggal, yang dapat menyebabkan entri setelah pembalikan tren. Juga, tidak menggunakan stop loss menyebabkan penurunan besar. Akhirnya, parameter seperti periode ATR perlu dioptimalkan untuk produk dan kerangka waktu yang berbeda.

Singkatnya, AlphaTrend memiliki kekuatan unik dalam mengidentifikasi titik pembalikan tren dinamis, tetapi manajemen risiko yang ketat masih diperlukan untuk perdagangan langsung, termasuk menggunakan stop, posisi sizing, dan penyesuaian parameter.


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

Lebih banyak