この戦略の核心思想は,ATRが計算した価格波動範囲を使用して価格ブレイクを判断し,EMAが全体的な傾向方向を判断し,トレンドをフォローすることを実現することです.価格がATRから上方または下方からブレイクすると,ブレイク方向がEMA方向と一致した場合,入場は多かまたは空かします.平衡条件は価格がATR範囲を回転します.
まず,この戦略はATR指標を使用して,特定の周期間の価格変動範囲を計算する.ATR範囲の上限はSMA+ATR,下限はSMA-ATRである.SMAは当日の閉店価格の単純な移動平均を表し,ATRは実際の波幅の平均を表す.
価格がATRの上方または下方から突破すると取引機会が形成される.このとき,方向を判断する必要がある.上方突破の場合,多くを行う,下方突破の場合,空にする.突破方向がトレンド方向と一致することを確認するために,戦略はEMAを活用し,全体的なトレンド方向を判断する.突破方向がEMAと一致するときにのみ入場する.
最後に,戦略は,価格がATR範囲を逆転すると平衡信号として使用する.
ATR指標による突破判断により,価格傾向突破を効果的に把握することができる.ATR範囲は波動率に基づいて設定され,通常の波動に過度に干渉しない.
EMAを方向判断として増やし,トレンド方向に逆の取引を避けることで,利益率が大幅に向上する.
価格回転がATRを破るのを止まる手段として利用することで,損失リスクを最大限に抑えることができる.
波動的な市場では,ATRの範囲は頻繁に破損し,過度の非有効取引と損失拡大を引き起こす可能性があります.
EMAは傾向の方向性を判断する指標として,一定の遅れがある.したがって,短期的な価格逆転の機会を逃す可能性があります.
ストップダースは,価格を押し戻し,急激な出来事によって損失を拡大することが容易である.
他の指標の傾向判断とレグロ判断を組み合わせて検討し,EMAの単一判断の誤りを避ける.例えばMACD,KDJなど.
市場波動率に基づいてATRパラメータをリアルタイムに調整することを検討し,ATR範囲を実際の波動に近いものにすることができます.
移動ストップローズモードを組み合わせ,ストップローズポイントをリアルタイムに調整し,単一の損失リスクを最大限に抑えることができます.
この戦略の全体的な考え方は明確で,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) //------------