アルファトレンド アダプティブATRチャンネルブレイク戦略

作者: リン・ハーンチャオチャン, 日付: 2023-09-11 14:27:54
タグ:

アルファトレンド戦略は,価格のトレンド方向を把握し,チャネルブレイクに基づいてトレンドを追跡するために適応性ATRチャネルを使用する.具体的には,上帯は低マイナスATR値,下帯は高プラスATR値で,ATRに基づいて動的チャネルを構築する.価格が上帯を超えるとロングエントリ,下帯を超えるとショートエントリが行われる.

ATRは市場変動と勢いをリアルタイムで反映する.上下帯によって形成されたチャネルは価格の勢いと強さを測定することができる.ブレイクアウトは潜在的なトレンド逆転または加速をシグナル化し,トレンドをフォローすることが賢明である.AlphaTrendの利点は,価格変化を把握するためにATRの適応性を活用し,トレンド方向性を決定するためにRSIなどの他の指標を組み合わせ,エントリー精度を向上させることです.

ATRは,トレンド逆転後にエントリを引き起こす可能性がある.また,ストップ損失を使用しないことは大きな引き下げにつながる.最後に,ATR期間のようなパラメータは,異なる製品とタイムフレームに最適化する必要があります.

概要すると,AlphaTrendは動的トレンド逆転点を特定する独特の強みがありますが,ストップ,サイズのポジション,パラメータチューニングを含むライブ取引には依然として厳格なリスク管理が必要です.適切なリスク制御により,この戦略は長期的に成功して適用できます.


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

もっと