アルファトレンド ダブルトラッキング戦略

作者: リン・ハーンチャオチャン,日付: 2024-02-02 15:17:01
タグ:

img

概要

AlphaTrendのデュアルトラッキング戦略は,AlphaTrendインジケーターによって生成される買い売り信号に基づいて取引する.AlphaTrendが買い売り信号を生成する領域で,ロングとショートポジションを開設する.

戦略の論理

アルファトレンド・デュアル・トラッキング戦略の核心は,アルファトレンド・インジケーターである.アルファトレンド・インジケーターは,アダプティブATRと価格 (閉値またはボリューム重量平均価格) をベースに上下帯を計算する.特定の計算方法は:

上部帯 = 最低値 - ATR * マルチプリキュア 下帯 = 最高高 + ATR * マルチプリキュア

ATRは,一定の期間における真平均範囲であり,倍数は調整可能なパラメータである.価格が上帯を超えると,指標線が上帯に近づく.価格が下帯を下回ると,指標線が下帯に近づく.したがって,AlphaTrendは適応チャネルを形成する.

AlphaTrendのデュアルトラッキング戦略は,AlphaTrendによって生成される信号に基づいて,ロングとショートポジションを確立します.

  • 価格がアルファトレンドを超えるとロング
  • 価格がアルファトレンドを下回るとショートします

これは,動的AlphaTrendチャネルに基づいた双方向トラッキング取引を完了します.

利点分析

AlphaTrendのデュアルトラッキング戦略の最大の利点は,市場の動向の変化を追跡できるということです.適応型ATRは,市場の変動の変化に応じてチャネル範囲を調整することができ,変動拡大により従来のボリンジャー帯が有効性を失う問題を回避します.

さらに,AlphaTrendは価格とボリューム (またはモメント) の情報の両方を組み合わせ,いくつかの偽のブレイクアウトをフィルタリングし,取引シグナルの品質を改善するのに役立ちます.

リスク分析

AlphaTrendのダブルトラッキング戦略の主なリスクは,ストップ・ロストポイントに打つ可能性がある巨大な市場変動から生じる.異常な市場動きがある場合,ストップ・ロストポイントが壊れ,大きな損失につながる可能性があります.これは,ATRパラメータとストップ・ロストポイントを適切に調整することによって制御する必要があります.

さらに,ALPHA自体も一定の遅れがあります.また,市場のターニングポイントの周りに誤ったシグナルを生成することがあります.シグナルを確認するために他の指標を使用する必要があります.

オプティマイゼーションの方向性

AlphaTrend の二重追跡戦略は,次の側面で最適化できます.

  1. トレンド指数と組み合わせて主要市場トレンドを決定し,トレンドに反する取引を避ける.
  2. 低容量の偽ブレイクによる損失を避けるため,ボリュームフィルターを増加させる.
  3. 異なる製品にチャネル範囲を最適化するために指標パラメータを最適化する.
  4. 機械学習アルゴリズムを増やして チャンネルをよりスマートにする

上記の最適化により,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!')






もっと