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


作成日: 2023-11-16 11:25:23 最終変更日: 2023-11-16 11:25:23
コピー: 0 クリック数: 855
1
フォロー
1617
フォロワー

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

概要

この戦略は,ダブルEMA平均線の金叉,死叉形成シグナルを使用し,ATR指数と連携して市場の変動率を判断し,低買い高売りのトレンドを追う戦略である. 快線金叉慢線が,ATR指数が前日より低ければ多頭シグナルとして多多行する. 快線死叉慢線が,ATR指数が前日より高ければ空頭シグナルとして空行する.

戦略原則

  1. 20と55の長さの二重EMA平均線を使用する.快線上での慢線を貫通すると金叉が生じ,多頭信号とみなされる.快線下での慢線を貫通すると死叉が生じ,空頭信号とみなされる.

  2. 14の長さのATR指標を使用する.ATR指標は市場の波動率とリスクの程度を反映する.ATRが前日より低いときは,市場の波動が弱くなり,介入が適していることを示す.ATRが前日より高いときは,市場の波動が増加し,介入が適していることを示す.

  3. 快線金叉慢線でATRが前日より低い時にだけ多めにする.快線死叉慢線でATRが前日より高い時にだけ空きをする.市場波動が大きい時に容易に介入することを避ける.

  4. ATR指標は,ストップ・ローズとストップ・ローズを設定するためにも使用されます. ストップ・ローズは,現在の価格からATRを止めてストップ・ローズ倍数; ストップ・ローズは,現在の価格にATRを掛け,ストップ・ローズ倍数を加えます.

  5. ストップ・ロース・倍数はATRの3倍をデフォルトで設定し,ストップ・ロース・倍数はATRの3倍をデフォルトで設定する.これにより,ストップ・ロースとストップ・ポジションは,市場の変動に動的に従うことができる.

戦略的優位性

  1. 二重均線システムを使用すると,多空状態判断に強い確認を提供できる。市場によくある偽突破によって誤導されない。

  2. ATR指標の導入により,戦略は低波動時にのみ介入し,多くの偽信号をフィルターし,システムのリスクを軽減します.

  3. ATRのダイナミックストップは,ストップを市場の変動レベルに合わせて設定する.ストップがあまりにも近く,ストップが浅すぎないようにする.

  4. 均線交差を追加の退出メカニズムとして採用するかどうかを設定できます. システムの損益結果をさらに最適化できます.

  5. ATRによる動的ストップとストップのレベルを設定することができ,トレンド取引の論理に適合し,ストップは過度に敏感ではなく,ストップは過度に緩やかではありません.

戦略リスク

  1. 双均線システムは,信号が一定に遅れていることを判断する. 強い短期トレンドを逃す可能性がある.

  2. 高波動時にATRは上昇し,介入のタイミングを逃す可能性があります.ATRパラメータを適切に調整する必要があります.

  3. 長期にわたってポジションを保持する場合,ストップ・ロスはあまりにも近い可能性があり,トレンドの強さを適切に緩和する必要があります.

  4. 均線システムは曲折円盤整合のシナリオを判断する効果が悪い。他の指標と連携して確認すべきである。

  5. ATRパラメータは,異なる品種の異なる周期に応じて調整されるべきである.パラメータを正しく選択しないことは,システム損失に影響を与える.

戦略最適化の方向性

  1. 異なる長さのパラメータの均線組合せをテストして,その品種の傾向特性に最も適合する均線パラメータを探します.

  2. MACD,KDなどの他の指標を導入することができ,均線交差信号の確認を行い, Entscheidungssicherheitを向上させる.

  3. ATRパラメータは,その品種の波動平衡特性に適したように,追溯によって最適化することができる.

  4. 設定可能なATR倍数ファクタは,トレンドの強さに応じてストップ・ストップ・ロスの位置を動的に調整する可調変数である.

  5. トレンドの強度指標と組み合わせて,トレンドが弱い時にストップ・ローズを低く,トレンドが強い時にストップ・ローズを高くすることができる.

要約する

この戦略は,双EMA平均線のトレンド判断と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)