戦略をフォローするATR指標のトレンドと組み合わせた二重移動平均偏差

作者: リン・ハーンチャオチャン,日付:2023年11月16日11時25分23秒
タグ:

img

概要

この戦略は,市場波動性を判断するためにATR指標と組み合わせて,二重EMA移動平均によって形成された黄金クロスとデッドクロス信号を使用して,低買い高売りトレンドをフォローする戦略を実装する.高速線がスローラインの上を横切って,ATR指標が前日よりも低いとき,それはロングに行くための上昇信号とみなされる.高速線がスローラインを下を横切って,ATR指標が前日よりも高いとき,それはショートに行くための下落信号とみなされる.

戦略の論理

  1. 長さ20と55の二重EMA移動平均値を使用する.高速線がスローラインの上を横切って金色のクロスを発生すると,それは上昇信号とみなされる.高速線がスローライン下を横切ってデッドクロスを発生すると,それは下落信号とみなされる.

  2. 長さ14のATRインジケーターを使用する.ATRインジケーターは市場の波動性とリスクレベルを反映する.ATRが前日よりも低いとき,市場の波動性が弱まり,ロングに行くのに適していることを示します.ATRが前日よりも高いとき,市場の波動性が増加していることを示し,ショートに行くのに適しています.

  3. ロープラインがスローラインを横断し,ATRが前日よりも低いときのみロングに行く. ロープラインがスローラインを横断し,ATRが前日よりも高いときのみショートに行く. これにより,市場の変動が高いときに介入を避ける.

  4. ATRインジケーターは,ストップロストとテイクプロフィートレベルを設定するためにも使用されます.ストップロスは現在の価格マイナスATRをストップロスト倍数で掛け算で設定します.テイクプロフィートは現在の価格プラスATRをテイクプロフィート倍数で掛け算で設定します.

  5. 既定ストップ損失倍数は3xATRで,既定の取利益倍数は3xATRです.これはストップ損失と取利益が市場の変動を動的に追跡することを可能にします.

戦略 の 利点

  1. 二重移動平均システムを使用すると,ロング/ショート状態の確証がより強くなり,市場で頻繁に発生する偽のブレイクによって誤導されるのを避ける.

  2. ATRインジケーターの導入により,戦略は波動性が低い場合にのみ使用できます.これは多くの誤った信号をフィルターし,システムリスクを軽減します.

  3. ダイナミックなATRストップ・ロスト/テイク・プロフィートにより,ストップとターゲットは市場の変動レベルに応じて設定できます.これはストップがあまりにも近く,ターゲットはあまりにも浅いことを防ぐことができます.

  4. 移動平均のクロスオーバーを追加的な退出メカニズムとして設定することも可能.これはシステムの収益性をさらに最適化することができます.

  5. 動的ストップ損失とATRに基づく利益の引き上げレベルは,トレンド取引論理により適しています.ストップ損失は過度に敏感ではなく,利益の引き上げは過度に緩やかではありません.

戦略 の リスク

  1. 二重移動平均値の信号は少し遅れている.これはより強い短期トレンドを見逃す可能性があります.

  2. 波動性が高い場合,ATRは上昇し,エントリー機会を逃す可能性があります.ATRパラメータはそれに応じて調整する必要があります.

  3. ストップ・ロスは長く持っていたら 接近しすぎます 傾向の強さに合わせて 緩めなければなりません

  4. 動向平均は変動の激しい市場では悪調である.確認のために他の指標が必要である.

  5. ATR パラメータは,異なる製品と時間枠に合わせて調整する必要があります.誤ったパラメータは性能に悪影響を及ぼします.

改善 の 分野

  1. 異なる長さの移動平均の組み合わせをテストして,製品のトレンド特性に一致するパラメータを見つけます.

  2. MACD,KDなどの他の指標を組み込むことで,移動平均のクロスオーバー信号を確認し,決定確実性を向上させる.

  3. ATR パラメータをバックテストによって最適化して,製品の揮発性特性をよりよく適合させる.

  4. ATR マルチプリキュアファクタを動的に調整し,トレンド強さに合わせてストップ・ロース/テイク・プロフィートを調整する.

  5. 傾向強さの指標を組み込む. 傾向が弱い場合,ストップロスの要件を減らす. 傾向が強い場合,利益を引き上げる.

概要

この戦略は,デュアルEMAsのトレンド判断とATR波動性指標のリスク制御を統合し,比較的完全なトレンドフォローシステムを形成する.最適化のための焦点は,移動平均とATRパラメータを製品特性とマッチするように調整し,トレンド強さの変化を追跡するためのダイナミックストップ損失/取利益メカニズムを設計することです.パラメータと論理最適化によって,この戦略は優れたトレンドフォロー戦略になることができます.


/*backtest
start: 2023-10-16 00:00:00
end: 2023-11-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// **********************************************
// PtahX EMA/ATR Strategy Public Release
// EMA Strategy with ATR & "Fear Factor" built in 
// written by PtahX October 2019
// * modifications welcome 
// * please let me know if you improve it so I can continue to learn :) 
// * use at your own risk - I'm a new programmer and still learning
// * Best of luck on your trades!!

// Take Profit (TP) option based on ATR or MA Crossover 
//***********************************************

strategy(title="PtahX EMA/ATR Strategy", overlay=true, pyramiding=1, calc_on_every_tick=true, default_qty_value=1, initial_capital=10000, slippage=2)

//***************************** 
// Global Inputs
//***************************** 

fastMA = input(title="Fast Moving Average", defval=20, step=1)
slowMA = input(title="Slow Moving Average", defval=55, step=1)
source = input(close, title="Source")
atrLength = input(title="ATR Length", defval=14, minval=7, step=1)
slMultiplier = input(title="Stop Loss Multiple", type=input.float, defval=3, minval=1, step=0.2)
tpMultiplier = input(title= "Take Profit Multiple", type=input.float, defval=3, minval=1, step=0.2)
maPlot = input(true, title="Plot EMA?")
maCrossoverExit =  input(false, title="Exit with Slow MA Crossover?")
atrExit = input(true, title="Exit with ATR?")
//***********************************
// ATR
//***********************************
atr = atr(atrLength)


//***********************************
// Volatility Filter
//**********************************
// During uptrends the ATR indicator tends to post lower volatility. 
// During downtrends, the ATR indicator tends to post higher volatility

volatilityBullish = atr < atr[1] 
volatilityBearish = atr > atr[1]


//***********************************
// Moving Averages
//***********************************
    
// Double Line Plot Code (used for Entries & Exits not plotted by default)
fast = ema(source, fastMA)
slow = ema(source, slowMA)
maLong = crossover(fast, slow)
maShort = crossunder(fast, slow) 

// Single Line Plot Code
bullish = slow > slow[1]
bearish = slow < slow[1]
barColor = bullish ? color.green : bearish ? color.red : color.blue


//***************************** 
// Entries
//***************************** 

entryLong = maLong and volatilityBullish
entryShort = maShort and volatilityBearish

if entryLong
    sLoss = source - atr * slMultiplier
    strategy.entry("Long", strategy.long, qty=10)
    strategy.exit("Long Exit", "Long", stop=sLoss)


if entryShort
    sLoss = source + atr * slMultiplier
    tProfit = close > slowMA
    strategy.entry("Short", strategy.short, qty=10)
    strategy.exit("Short Exit", "Short", stop=sLoss)


//***************************** 
// Exits
//*****************************

exitLong = 0
exitShort = 0

if maCrossoverExit
    exitLong = maShort
    exitShort = maLong
    strategy.exit("Long Exit", "Long", when = exitLong)
    strategy.exit("Short Exit", "Short", when = exitShort)

if atrExit
    exitLong = source + atr * tpMultiplier
    exitShort = source - atr * tpMultiplier
    strategy.exit("Long Exit", "Long", limit = exitLong)
    strategy.exit("Short Exit", "Short", limit = exitShort)


//******************************
// ATR Based Exit/ Stop Plotting 
//******************************

// Stop Loss Calculations
longStopLoss = source - atr(atrLength) * slMultiplier
shortStopLoss = source + atr(atrLength) * slMultiplier

longTakeProfit = source - atr(atrLength) * slMultiplier
shortTakeProfit = source + atr(atrLength) * slMultiplier
  

//*********************************
//Chart Plotting
//*********************************

//ATR Based Stop Losses
plot(shortStopLoss, color=color.fuchsia, offset=0, transp=0, show_last=5, linewidth=2, style=plot.style_stepline, title="Short Stop Loss")
plot(longStopLoss, color=color.fuchsia, offset=0, transp=0, show_last=5, linewidth=2, style=plot.style_stepline, title="Long Stop Loss")


// Single Slow EMA Option
plot(slow and maPlot ? slow : na, title="EMA", color=barColor, linewidth=3)






もっと