
アルファトレンド二方向追跡戦略は,アルファトレンド指標の買入・売却シグナルに基づいて取引する戦略である.この戦略は,アルファトレンド指標の買入・売却シグナルを生成する領域で多頭および空頭ポジションを開くことができる.
AlphaTrendの双方向追跡戦略の核心はAlphaTrend指標である.AlphaTrend指標は,自己適応平均真波幅 (ATR) と価格 (閉盤価格または成交量重量平均価格) の組み合わせに基づいて上軌と下軌を計算する.具体的計算方法は:
ATR*係数 = 最低価格 値が上がったとき,
ATRは,過去一定周期の平均真波幅であり,係数は調整可能なパラメータである.価格が上線より高いとき,指針線は上線に近づく.価格が下線より低いとき,指針線は下線に近づく.このように,AlphaTrend指標は,自己適応の通路を形成する.
AlphaTrendの双方向追跡戦略は,AlphaTrend指標の信号に基づいて多頭と空頭のポジションを構築する.具体的ロジックは:
ダイナミック・チャネルをベースにした2方向のトラッキング取引が完了しました.
AlphaTrendの双方向追跡戦略の最大の利点は,市場のトレンドの変化を追跡できる点にある.自適性ATRは,市場の変動率の変化に応じてチャネル範囲を調整することができ,従来のブリン帯などの指標が波動率の拡大によって失効しやすい問題を回避する.
また,AlphaTrend指標は,価格と取引量 (または勢い) を同時に組み合わせることで,偽の突破をフィルターすることができます. これは,戦略信号の質を向上させます.
アルファトレンド二方向追跡戦略の主なリスクは,巨大な市場動向が指標チャネルに与える衝撃から生じる.市場が異常な波動を起こしたとき,ストップ・ローポイントが突破され,大きな損失を引き起こす可能性がある.これはATRパラメータとストップ・ローポイントを適切に調整することによってリスクを制御する必要があります.
また,ALPHA指標自体は遅滞がある.したがって,市場転換点の近くでも誤信号が生じます.これは,他の指標の補助が必要である.
AlphaTrendの双方向トラッキング戦略は,以下の点で最適化できます.
以上の点の最適化により,AlphaTrendの戦略の安定性と収益性をさらに向上させることができます.
AlphaTrend二方向追跡戦略は,全体的に市場変化を追跡する効果的な戦略である.これは,従来の技術指標が失敗する問題を解決し,取引量と合わさってシグナルをフィルターする.適切な最適化によって,この戦略は,量化取引システムにおける強力なツールになることができます.
/*backtest
start: 2024-01-02 00:00:00
end: 2024-02-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_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', shorttitle='AT', overlay=true, format=format.price, precision=2)
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=true)
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 and showsignalsk and O1 > K2
if (longCondition)
strategy.entry("BUY", strategy.long, comment = "BUY ENTRY")
shortCondition = sellSignalk and showsignalsk and O2 > K1
if (shortCondition )
strategy.entry("SELL", strategy.short, comment = "SELL ENTRY")
// alertcondition(buySignalk and O1 > K2, title='Potential BUY Alarm', message='BUY SIGNAL!')
// alertcondition(sellSignalk and O2 > K1, title='Potential SELL Alarm', message='SELL SIGNAL!')
// alertcondition(buySignalk[1] and O1[1] > K2, title='Confirmed BUY Alarm', message='BUY SIGNAL APPROVED!')
// alertcondition(sellSignalk[1] and O2[1] > K1, title='Confirmed SELL Alarm', message='SELL SIGNAL APPROVED!')
// alertcondition(ta.cross(close, AlphaTrend), title='Price Cross Alert', message='Price - AlphaTrend Crossing!')
// alertcondition(ta.crossover(low, AlphaTrend), title='Candle CrossOver Alarm', message='LAST BAR is ABOVE ALPHATREND')
// alertcondition(ta.crossunder(high, AlphaTrend), title='Candle CrossUnder Alarm', message='LAST BAR is BELOW ALPHATREND!')
// alertcondition(ta.cross(close[1], AlphaTrend[1]), title='Price Cross Alert After Bar Close', message='Price - AlphaTrend Crossing!')
// alertcondition(ta.crossover(low[1], AlphaTrend[1]), title='Candle CrossOver Alarm After Bar Close', message='LAST BAR is ABOVE ALPHATREND!')
// alertcondition(ta.crossunder(high[1], AlphaTrend[1]), title='Candle CrossUnder Alarm After Bar Close', message='LAST BAR is BELOW ALPHATREND!')