強化された移動平均収束傾向戦略

作者: リン・ハーンチャオチャン, 日付: 2023-09-14 16:46:53
タグ:

戦略の論理

このトレンドフォロー戦略は,強化されたMACD指標を使用します. 信号を生成するために,高速EMA,遅いEMA,その差,およびその差のEMAを計算します.

論理的には

  1. 速やかなEMA期間,例えば12日間の計算

  2. 遅いEMA期間を計算する,例えば26日

  3. MACD を取得するために,遅い EMA から速い EMA を引く.

  4. MACD の EMA を信号線として,例えば 9 日間

  5. MACD の EMA をマイナス シグナル で 強化 信号 を 与え ます.

  6. 強化信号がゼロ線を超えるとロング

  7. 強化された信号がゼロ線を下回るとロングを閉じる.

この戦略は,MACDのトレンドフォローする能力を利用し,中長期トレンド信号の質のためにさらに最適化します.

利点

  • 強化されたMACDはノイズを削減し,信号を改善します

  • 速/遅 EMA コンボ メーカー 方向と強度

  • 遅いパラメータは 中期から長期間の動向に焦点を当てています

リスク

  • EMA 期間を慎重に最適化する必要がある

  • 短期間しか利用できない

  • 頻度が低い信号

概要

この戦略は,中期から長期間のトレンド識別を改善するために,強化されたMACDを活用する.しかし,最適化とリスク制御は鍵である.他の要因と組み合わせることで,パフォーマンスを改善することができます.


/*backtest
start: 2022-09-07 00:00:00
end: 2023-09-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//study("MACDAS")
// strategy("macdas",shorttitle="macdas",overlay=true,default_qty_value=10000,initial_capital=10000,currency=currency.USD)

// Date range filter
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(4, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)

testStopYear = input(2018, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)

inTimeRange = true


fastperiod = input(12,title="fastperiod",minval=1,maxval=500)
slowperiod = input(26,title="slowperiod",minval=1,maxval=500)
signalperiod = input(9,title="signalperiod",minval=1,maxval=500)
fastMA = ema(close, fastperiod)
slowMA = ema(close, slowperiod)
macd = fastMA - slowMA
signal = ema(macd, signalperiod)
macdAS = macd - signal
signalAS = ema(macdAS, signalperiod)
plot(macdAS, color=blue, linewidth=2)
plot(signalAS, color=red, linewidth=2)
plot(0, color=black)

strategy.entry("LONG", strategy.long, when =inTimeRange and crossover(macdAS,signalAS))
strategy.close("LONG", when= inTimeRange and crossunder(macdAS,signalAS))

plotshape(crossover(macdAS, signalAS) , style = shape.arrowup, text="Long",color=green,size=size.huge)
plotshape(crossover(signalAS,macdAS) , style = shape.arrowdown, text="End Long",color=red,size=size.huge)



もっと