ダブル移動平均引き締めトレンドフォロー戦略


作成日: 2023-12-28 17:24:53 最終変更日: 2023-12-28 17:24:53
コピー: 0 クリック数: 626
1
フォロー
1623
フォロワー

ダブル移動平均引き締めトレンドフォロー戦略

概要

双均線収縮トレンド追跡戦略 (Dual Moving Average Convergence Trend Tracking Strategy) は,急速移動平均,遅い移動平均,超遅い移動平均を計算して,MACD指標と組み合わせて価格の傾向方向を判断し,トレンド追跡取引を実現する. 急速移動平均線が黄金交差時に多し,死交差時に空きする. 同時に,長期移動平均線をフィルターして休日突破する.

戦略原則

この戦略は,まず,12日間の急速移動平均,26日間の遅い移動平均,および200日間の超遅い移動平均を計算する. 急速移動平均の上で遅い移動平均を横断すると金交差が始まり,牛市が始まる; 急速移動平均が上から下へと緩い移動平均を横断すると死交差が始まり,熊市が始まる. 戦略は,金交差が起こる時に多行し,死交差が起こる時に空行する.

また,この戦略は,MACD指標と組み合わせてトレンドの方向を判断する.MACDは,快線,慢線,MACD柱で構成されている.快線上での慢線通過は多頭信号で,下での空頭信号である.長期平均線過渡の偽信号と組み合わせて,快線が上方突破するだけ,MACD柱は負の正し,価格の200日移動平均が上昇する時に多頭信号を発信する.快線が下方へ落ちるだけ,緩やかな線を破るだけ,MACD柱は正の負の正し,価格が200日移動平均を破る時に空頭信号を発信する.

遅速均線システムとMACD指数による二重確認により,単一の指数による偽信号を回避し,トレンドの開始時にのみ入場を確保する.

戦略的優位性

  1. スロー・均線システムとMACD指標の二重確認により,偽突破を回避し,トレンドの開始時にのみ入場を確保する.

  2. 200日移動平均をフィルターして,不況期に誤った取引を避ける.

  3. ストップ・損失設定により最大損失を制限できます.

  4. 移動平均の長さ,水平衡の停止などのパラメータをカスタマイズして,異なる品種に適応できます.

  5. 戦略は明確でシンプルで,理解し,最適化することが容易です.

戦略リスク

  1. 長期にわたるトレンドを追跡し,短期的な機会を捉えることができない.

  2. トレッキング効果はパラメータの設定に依存し,パラメータが正しくない場合,トレンドを正しく捉えることはできません.

  3. ストップ・ロジの位置が正しく設定されていない場合,余りにも緩やかまたは過度に緊張し,損失が拡大したり,早めにストップ・ロジになる可能性があります.

  4. 長期にわたって持っていたら,金銭的なプレッシャーを負う必要がある.

戦略の最適化

  1. 移動平均の長さのパラメータを最適化して,最適なパラメータの組み合わせを探します.

  2. KDJ指数など,補助判断信号として他の指標を追加する.

  3. ストップを最小化したり,ストップを追跡したりなど,ストップ戦略を最適化します.

  4. 品種と取引周期に応じて移動平均のパラメータを調整する.

  5. 結合量とは,交信量などの偽信号をフィルターする指標である.

要約する

双均線緊縮トレンド追跡戦略は,複数の均線システムを計算してトレンドの方向を判断し,MACD指標のフィルタリング信号を使用する.その優点は,操作理念がシンプルで明確で,リスクが制御可能であり,トレンドを追跡するのに適しています.この戦略は,パラメータ最適化,止損戦略最適化,補助指標など,さまざまな方法で改善することができます.これは推奨されるトレンド追跡戦略です.

ストラテジーソースコード
/*backtest
start: 2022-12-21 00:00:00
end: 2023-12-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Trend Strategy", shorttitle="TSTrend Strategy", overlay=true)


// Trend Strategy
// If the inverse logic is true, the strategy
// goes short. For the worst case there is a
// max intraday equity loss of 50% filter.


// Input
source = input(close)
fastLength = input(12, minval=1, title="MACD fast moving average")
slowLength=input(26,minval=1, title="MACD slow moving average")
signalLength=input(9,minval=1, title="MACD signal line moving average")
veryslowLength=input(200,minval=1, title="Very slow moving average")
switch1=input(true, title="Enable Bar Color?")
switch2=input(true, title="Enable Moving Averages?")
switch3=input(true, title="Enable Background Color?")

// Calculation
fastMA = sma(source, fastLength)
slowMA = sma(source, slowLength)
veryslowMA = sma(source, veryslowLength)
macd = fastMA - slowMA
signal = sma(macd, signalLength)
hist = macd - signal

// Colors
MAtrendcolor = change(veryslowMA) > 0 ? green : red
trendcolor = fastMA > slowMA and change(veryslowMA) > 0 and close > slowMA ? green : fastMA < slowMA and change(veryslowMA) < 0 and close < slowMA ? red : blue
bartrendcolor = close > fastMA and close > slowMA and close > veryslowMA and change(slowMA) > 0 ? green : close < fastMA and close < slowMA and close < veryslowMA and change(slowMA) < 0 ? red : blue
backgroundcolor = slowMA > veryslowMA and crossover(hist, 0) and macd > 0 and fastMA > slowMA and close[slowLength] > veryslowMA ? green : slowMA < veryslowMA and crossunder(hist, 0) and macd < 0 and fastMA < slowMA and close[slowLength] < veryslowMA ? red : na
bgcolor(switch3?backgroundcolor:na,transp=80)
barcolor(switch1?bartrendcolor:na)

// Output
F=plot(switch2?fastMA:na,color=trendcolor)
S=plot(switch2?slowMA:na,color=trendcolor,linewidth=2)
V=plot(switch2?veryslowMA:na,color=MAtrendcolor,linewidth=4)
fill(F,V,color=gray)

// Strategy
buyprice = low
sellprice = high
cancelLong = slowMA < veryslowMA
cancelShort = slowMA > veryslowMA

if (cancelLong)
    strategy.cancel("MACDLE")

if crossover(hist, 0) and macd > 0 and fastMA > slowMA and close[slowLength] > veryslowMA 
    strategy.entry("MACDLE", strategy.long, stop=buyprice, comment="Bullish")

if (cancelShort)
    strategy.cancel("MACDSE")

if crossunder(hist, 0) and macd < 0 and fastMA < slowMA and close[slowLength] < veryslowMA 
    strategy.entry("MACDSE", strategy.short, stop=sellprice, comment="Bearish")

// maxIdLossPcnt = input(50, "Max Intraday Loss(%)", type=float)
// strategy.risk.max_intraday_loss(maxIdLossPcnt, strategy.percent_of_equity)

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)