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

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

基于ATR和EMA的趋势跟随策略

概要

この戦略の核心思想は,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)
//------------







もっと見る