ダイナミックトレンドフォロー戦略に基づく


作成日: 2024-02-22 17:54:26 最終変更日: 2024-02-22 17:54:26
コピー: 1 クリック数: 604
1
フォロー
1617
フォロワー

ダイナミックトレンドフォロー戦略に基づく

概要

この戦略は,アンドリュー・アブラハムが1998年9月,取引技術アナリストの誌で発表したのトレンド追跡の記事で示した考え方を改良して,動的に株価のトレンドを追跡し,それに基づいて取引信号を生成するために設計された.

戦略原則

この戦略は,先21日間の平均真波幅を基準の底値として計算し,先21日間の最高値と最低値を計算し,それに基づいてチャネルの上限を設定し,チャネルの上限は,先21日間の最高値の平均真波幅の3倍を減算し,下限は,先21日間の最低値の平均真波幅の3倍を加算する.收盘値がチャネルの上限より高いときは,圧縮シグナルとして放出し,收盘値がチャネルの下限より低いときは,吸い込みシグナルとして吸い込む.偽のシグナルのために,長さ21の指数移動平均線も計算し,価格とチャネルの制限が同方向の移動平均線を突破したときにのみ,真の取引開始シグナルを生成する.また,この戦略は,逆転入力も提供し,元の多空シグナルを行うため,反空操作を行うことができる.

優位分析

この戦略の最大の利点は,価格の傾向を動的に追跡することができ,それに基づいて取引信号を生成することにある.固定パラメータの移動平均戦略と比較して,価格変化の傾向をよりよく捉えることができる.さらに,実際の変動範囲と組み合わせてチャネルを構築することで,最高価格の最低価格のみに基づいてチャネルを制限することによる欠陥を避けることができる.チャネルの上下限の変動範囲は,かなり合理的で,ある程度は偽の突破を避けることができる.カスタマイズ可能な反転パラメータも,戦略の柔軟性を高めることができる.

リスク分析

この戦略には主に2つのリスクがあります.一つは,取引シグナルの増加がもたらす過度取引のリスク;二つは,パラメータの設定が不適切である可能性がもたらすリスクです.この戦略は,ダイナミックパラメータを使用しているため,取引シグナルは,従来の移動平均戦略よりも頻繁に発生し,ある程度の過度取引リスクをもたらす可能性があります.また,パラメータが不適切で設定された場合,時間周期が短すぎるとか,チャネル制限数が小さすぎると,偽信号が増加し,リスクが増加します.

リスクを制御するために,パラメータを適切に調整し,より長い時間周期を選択し,チャネル上下限の制限を適切に緩和することもできます.また,単一損失を制御するために,ストップ・ロスの策略を加えることも考えることができます.

最適化の方向

この戦略の最適化余地もかなり大きい.例えば,偽突破を避けるためにRSI,KDなどの他のフィルタリング指標と組み合わせることを考えることができる.また,機械学習方法を使用してパラメータを自動的に最適化することも試すことができます.さらに,異なる株式と市場環境下では,パラメータの最適値も異なるでしょう.したがって,我々は,株式と市場の特徴の動向に基づいて最適なパラメータを選択するパラメータの最適化メカニズムを策定することを考えることもできます.

要約する

この戦略は,全体的に非常に実用的なトレンド追跡戦略である.従来の移動平均戦略と比較して,より柔軟でスマートで,価格変化のトレンドを動的に捉えることができる.パラメータを適切に調整した場合,取引信号の質は高く,良いリターンを得ることができます.その後,さらなる最適化により,この戦略のパフォーマンスは持続的に改善されることが予想されます.

ストラテジーソースコード
/*backtest
start: 2023-02-15 00:00:00
end: 2024-02-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 10/10/2018
// This is plots the indicator developed by Andrew Abraham 
// in the Trading the Trend article of TASC September 1998  
// It was modified, result values wass averages.
////////////////////////////////////////////////////////////
strategy(title="Trend Trader AVR Backtest", overlay = true)
Length = input(21, minval=1),
LengthMA = input(21, minval=1),
Multiplier = input(3, minval=1)
reverse = input(false, title="Trade reverse")
avgTR      = wma(atr(1), Length)
highestC   = highest(Length)
lowestC    = lowest(Length)
hiLimit = highestC[1]-(avgTR[1] * Multiplier)
loLimit = lowestC[1]+(avgTR[1] * Multiplier)
ret = 0.0
ret :=  iff(close > hiLimit and close > loLimit, hiLimit,
         iff(close < loLimit and close < hiLimit, loLimit, nz(ret[1], 0)))
nResMA = ema(ret, LengthMA)        
pos = 0
pos := iff(close < nResMA, -1,
       iff(close > nResMA, 1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
plot(nResMA, color= blue , title="Trend Trader AVR")