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


作成日: 2024-02-23 14:34:24 最終変更日: 2024-02-23 14:34:24
コピー: 0 クリック数: 825
1
フォロー
1617
フォロワー

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

概要

この戦略の核心思想は,ATR指標が計算した価格変動の範囲を使用して価格の突破を判断し,EMA指標が全体的なトレンド方向を判断し,トレンドをフォローすることを実現することです.価格がATR範囲から上方または下方沿いに突破すると,突破方向がEMA方向と一致した場合,入場は多かれ少なかれ空いている.平仓条件は価格がATR範囲を戻すためです.

戦略原則

まず,この戦略はATR指数を使用して,特定の周期における価格変動の範囲を計算する.ATRの範囲の上限はSMA+ATR,下限はSMA-ATRである.SMAは当日の閉店価格の単純な移動平均を表し,ATRは実際の波幅の平均を表している.

価格がATRの範囲から上方または下方から突破するとき,取引機会が形成されます.このとき,方向を判断する必要があります.上方突破の場合,より多くのことをし,下方突破の場合,空白をします.突破方向がトレンド方向と一致していることを確認するために,戦略はEMA指標を使用して全体的なトレンド方向を判断します.

最後に,策略は,価格がATR範囲を再び破ると平仓のシグナルである. 値上げは価格が下限を破ると平仓する. 値下げは価格が上限を破ると平仓する.

戦略的優位性

  1. ATR指標を用いてブレイクを判断し,価格の傾向的なブレイクを効果的に捉えることができる.ATRの範囲は,変動率に応じて設定され,通常の変動に多大な干渉を引き起こさない.

  2. EMAを方向判断として加え,トレンド方向に反して取引を避けることで,利潤率を大幅に高めることができる.

  3. ATRの範囲を逆転する価格を,ストップ・ロードとして採用することで,損失のリスクを最大限に抑えることができる.

戦略リスク

  1. ATRの範囲は,変動の状況で頻繁に割れ,過度に無効な取引や損失を拡大する可能性があります.

  2. EMAはトレンドの方向を判断する指標として,ある程度の遅れがある。したがって,短期的な価格逆転のチャンスを逃す可能性がある。

  3. ストップ・ロスは,価格の逆転で,突然の出来事により拡大する損失を容易にする.

戦略最適化の方向性

  1. 他の指標との組み合わせでトレンド判断と撤回を考慮して,EMA単一の判断誤りを避ける.例えばMACD,KDJなど.

  2. 市場変動率に応じて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)
//------------