適応型ATR移動平均取引戦略


作成日: 2023-11-02 16:51:14 最終変更日: 2023-11-02 16:51:14
コピー: 0 クリック数: 763
1
フォロー
1621
フォロワー

適応型ATR移動平均取引戦略

概要

この戦略は,自適應ATR均線指標とトレンド追跡を融合して,市場におけるトレンドを発見し,トレンド取引を行う.この戦略は,Hull移動平均を平らなATRとして使用し,平らなATR均線を形成し,その後,価格とATR均線との関係に基づいて取引信号を発信する.ATR均線は,市場ノイズを効果的にフィルターし,大きなトレンドを識別する.この戦略は,固定ストップ・ローズを設定し,各単位のリスク/利益の比率を制御する.全体的に,この戦略は,自適應ATR均線指標を活用してトレンドを追跡し,厳格なリスク管理ルールを採用し,安定した利益の成長を実現することを目的としている.

戦略原則

この戦略の核心指標はATR平均線である.ATR指標は,市場の波動性と株価の実際の変動幅を測定できる重要なツールである.ATR平均線は,ATR指標を平滑処理し,平均線を形成した後,価格と比較して価格の傾向を判断する.

具体的には,この戦略はまずTR ((True Range) という,当日の最高値と最低値の差を計算し,前日のClose と現在の最高値と最低価格の間の最大差を採る.その後,Hull移動平均法を使ってTRを平滑化して自在に適応したATR平均線を計算する.ATR平均線は,市場中の高頻度のノイズを効果的にフィルターし,より大きな価格変動のみを捕捉する.

ATR平均線を計算した後,この戦略は,価格とATR平均線を比較する.ATR平均線を上方から破ると,価格が上昇傾向に入ることを示す戦略は,ロングポジションを開く.ATR平均線を下方から破ると,価格が低下傾向に入ることを示す戦略は,ショートポジションを開く.

さらに,この戦略は,固定のストップ・ストップの範囲を設定している. ポジションを開くたびに,固定のストップ・ストップとストップ・ストップを設定し,価格がストップ・ストップのポイントに触れたらストップ・アウトし,ストップ・ストップのポイントに触れたらストップ・アウトする. これは,一枚あたりの損失を制限し,同時に利益をロックすることができる.

総合的に,この戦略はATR平均線指数に適応した自律的な策略と,より大きな価格傾向を捉え,単一の損失を制御し,安定した利益の成長を実現するための厳しいリスク管理策を融合しています.

優位分析

この戦略の利点は以下の通りです.

  1. 適応ATR平均線指標を使用し,価格の大きなトレンドを効果的に識別し,市場ノイズをフィルターし,被套を防止します.

  2. ハル移動平均法を使用してATR平均線を計算し,ATR平均線をより滑らかにし,高周波振動から誤導されないようにする.

  3. 固定ストップ・ロスの設定は,単一の損失を制限し,利益をロックし,各取引のリスク/利益の比率を保証します.

  4. トレンドフォローの取引方法により,価格の傾向を継続的に捉え,収益性を高めることができます.

  5. 戦略の論理はシンプルで明快で,分かりやすい.パラメータの設定は柔軟で,異なる品種と市場環境に適しています.

  6. トレンド追跡はどの品種でも可能で,適応性が強い.

リスク分析

この戦略には以下のリスクがあります.

  1. ATR平均線が誤信号を発する可能性がある.価格が激しく波動し,ATR平均線が誤判断し,誤信号を発する可能性がある.

  2. ストップポイントが小さすぎると,ストップがトリガーされる確率が増加する可能性があります.ストップポイントの合理的な設定を確保し,価格に十分な波動空間を与えることが必要です.

  3. 固定ストップ目標は,早めにストップし,トレンドの動きを継続的に捉えることができません.ATRの動態に応じてストップポイントを調整することを考えることができます.

  4. 突発的な事件により,価格が急上昇し,ストップ・ロスを引き起こす.この時点で,巨額の損失を防ぐために取引を停止する必要があります.

  5. トレンドが逆転すると,時間内に平定しない場合,反転収監される可能性があります. タイミングでトレンド終了信号を判断する必要があります.

  6. パラメータは,異なる品種と市場環境で最適化する必要があるので,戦略のパフォーマンスを影響する.

最適化の方向

この戦略は以下の点で最適化できます.

  1. ATR平均線を最適化するパラメータは,ATR計算の長さperiodと滑らかなパラメータを含む.異なるパラメータの組み合わせがATR平均線に影響を与える.

  2. ストップ・ストップ・ストップ戦略を最適化するには,固定設定ではなくATRの動態に応じてストップ・ストップ・ポイントを調整することを考えることができます.

  3. トレンド判断ルールを追加し,他の指標と組み合わせてトレンドの逆転信号を判断し,逆転の檻に囚われないようにする.

  4. 異なる品種と市場環境に応じてパラメータをテストし,最適化し,最適なパラメータを見つけます.

  5. 緊急事態に対する判断力を高め,大空飛ぶ時に取引を停止し,損失を抑制する.

  6. 入場タイミングを最適化して,急上昇時に入場するのではなく,逆戻り時に入場することを考慮して,リスクを低減する.

  7. パラメータの組み合わせを最適化し,ATRの異なる長さと滑らかなパラメータの組み合わせをテストし,最適のマッチを見つける.

要約する

この戦略は,ATR平均線指標を自作してトレンドを発見し,固定ストップ・ストップ方式でトレンドを追跡する.ATR平均線は,トレンドを効果的に識別し,固定ストップ・ストップがリスク・収益比率を制御する.この戦略の優点は,論理的にシンプルで明確で,容易に理解でき,パラメータに応じて調整され,異なる品種に適用できる.しかし,ATR平均線判断誤り,ストップ・ストップ・ポイントの不適切な設定などのリスクもある.将来,ATR平均線パラメータ,ストップ・ストップ戦略を最適化し,トレンド判断方法を追加することで,戦略のパフォーマンスをさらに向上させることができる.

ストラテジーソースコード
/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("ATR(Hull)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills= false, calc_on_every_tick=true, pyramiding=0)
length = input(title="Length", defval=14, minval=1)
price = input(close)
SL = input(50, title="Stop loss")
TP = input(150, title="Take profit")
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12) 
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) 
FromYear = input(defval = 2018, title = "From Year", minval = 2017) 
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) 
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) 
ToYear = input(defval = 9999, title = "To Year", minval = 2017) 
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) 
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) 
window() => true
p=price[1]
func_hma(style, length)=>
    return = wma((2*wma(p,length/2))-wma(p,length),round(sqrt(length)))
ATR=func_hma(tr(true), length)    
plot(ATR[0], title="ATR1",color=green,transp=0)
plot(ATR[1], title="ATR2",color=red,transp=0)
if (ATR>ATR[1])
    strategy.entry("long",strategy.long,comment="Long",when=window())
if (ATR<ATR[1])
    strategy.entry("short",strategy.short,comment="Short",when=window())
//strategy.close_all(when=strategy.openprofit<-eqSL and window())
//strategy.close_all(when=strategy.openprofit>eqTP and window())
strategy.exit("exit", "long", profit = TP, loss = SL)
strategy.exit("exit", "short", profit = TP, loss = SL)