ATR と EMA に基づくトレンド フォロー 戦略

作者: リン・ハーンチャオチャン,日付: 2024-02-23 14:34:24
タグ:

img

概要

この戦略の主な考えは,ATR指標によって計算された価格変動範囲を使用して価格突破を判断し,EMA指標を使用して取引後のトレンド方向を判断することです.価格がATR範囲の上または下限を突破すると,突破方向がEMA方向と一致した場合,ロングまたはショートポジションを取ります.閉じる条件は価格が再びATR範囲を突破することです.

戦略原則

まず,この戦略は,ATR指標を使用して,一定の期間における価格変動範囲を計算する.ATR範囲の上限はSMA+ATRであり,下限はSMA-ATRである.SMAは当日の閉値の単純な移動平均を表し,ATRは真のレンジ平均を表す.

価格がATRレンジの上限または下限を突破すると,取引機会が発生する.この時点で,方向を判断することが必要です.上向きの突破であれば,ロングに行く.下向きの突破であれば,ショートに行く.突破方向がトレンド方向と一致していることを確認するために,戦略は全体的なトレンド方向を決定するためにEMAインジケーターを使用します.突破方向がEMA方向と一致するときにのみ,ポジションを取ることができます.

最後に,この戦略は,ATR範囲を再び突破する価格を閉じる信号として使用します. 価格が下限を下回るとロングを閉じる. 価格が上限を超えるとショートを閉じる.

戦略 の 利点

  1. ATR指標を使用して突破を決定することは,価格動向突破を効果的に把握することができます. ATR範囲は変動に基づいて設定され,通常の変動にあまり干渉しません.

  2. EMA指標を指向判断として追加することで,トレンド方向に反する取引が避けられ,利益率が大幅に向上します.

  3. ストップ・ロスの方法として ATR 範囲上の価格ブレイクバックを使用することで,リスク制御を最大化することができます.

戦略リスク

  1. 不安定な市場では,ATR範囲は頻繁に突入され,過度に無効な取引とより大きな損失につながる可能性があります.

  2. 傾向の方向性を判断する指標として EMA は少し遅れがあるため,短期的な価格逆転の機会を逃す可能性があります.

  3. ストップ・ロスの方法は,価格がレンジを超えて戻るもので,突然の出来事により簡単に損失が増える可能性があります.

戦略の最適化方向

  1. EMAの単一の判断誤りを避けるために,他の指標を組み合わせてトレンドと引き下げを決定することを検討します.MACD,KDJなどです.

  2. ATRパラメータを市場変動に応じてリアルタイムで調整することを検討し,ATR範囲が実際の変動に近いようにする.

  3. 移動式ストップ・ロスのメソッドを組み込むことを検討し,単一の損失のリスク管理を最大化するためにストップ・ロスのポイントを継続的に調整する.

概要

この戦略の全体的な考え方は明確で,ATR指標を使用して価格突破を決定し,EMAと協力して方向性を決定することで,トレンドを効果的に追跡することができる.ストップロスの方法は単純で操作が簡単です.しかし,同時に,さらなるテストと調整を必要とする特定のリスクと最適化のための大きな余地があります.一般的に,この戦略は,高い勝利率を追求するトレンドトレーダーに適しています.


/*backtest
start: 2024-01-23 00:00:00
end: 2024-02-22 00:00:00
period: 3h
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/
// © cwagoner78
//@version=4
strategy("cATRpillar", overlay=true)
//------------

//inputs
lookback = input(title="Periods", type=input.integer, defval=37)
atrMult = input(title="Range Multiplier", type=input.float, defval=.2)
takeProfit = input(title="Take Profit", type=input.float, defval=5000)
stopLoss = input(title="Stop Loss", type=input.float, defval=2500)
lots = input(title="Lots to Trade", type=input.float, defval=1)
//------------

//indicators
atr=atr(lookback)*atrMult
sma=sma(close, lookback)
ema=ema(close,lookback*2)
rangeLo=sma-atr
rangeHi=sma+atr
//------------

//draw objects
p0 =plot(close, title="Close", color=#26A69A, linewidth=0, transp=80,style=plot.style_stepline)
p1 =plot(rangeHi, title="High", color=color.fuchsia, linewidth=0, transp=80,style=plot.style_stepline)
p2 =plot(rangeLo, title="Low", color=color.lime, linewidth=0, transp=80,style=plot.style_stepline)
p3 =plot(ema, title="EMA", color=color.white, linewidth=0, transp=80, style=plot.style_stepline)
fill(p1, p0, color=color.fuchsia)
fill(p0, p2, color=color.lime)
//------------

//Trading
atrShort=open[1] > rangeHi and open < rangeLo
atrLong=open[1] < rangeLo and open > rangeHi
exitLong=open>rangeLo
exitShort=open<rangeHi

//Long
longCondition=atrLong and open>ema+atr
strategy.entry(id="cATRpillar-Buy", long=true, when=longCondition)
longCloseCondition=exitLong
strategy.exit(id="cATRpillar-Exit", qty=lots, profit=takeProfit, loss=stopLoss, when=longCloseCondition)

//Short
shortCondition=atrShort and open<ema-atr
strategy.entry(id="cATRpillar-Sell", long=false, when=shortCondition)
shortCloseCondition=exitShort
strategy.exit(id="cATRpillar-Exit",  qty=lots, profit=takeProfit, loss=stopLoss, when=shortCloseCondition)

plotshape(shortCondition,  title= "Short", location=location.belowbar, color=color.fuchsia, transp=80, style=shape.triangledown, size=size.tiny)
plotshape(longCondition,  title= "Long", location=location.abovebar, color=color.lime, transp=80, style=shape.triangleup, size=size.tiny)
//------------







もっと