
この戦略は,SMMA,SMA,ZLEMA,EMAを含む複数の移動平均指標を使用し,それらの上に改良されたMACD指標であるImpulse MACDを構築し,Impulse MACDとその信号線の交差によって取引信号を生成します.戦略の主な構想は,異なる時間尺度の移動平均を使用して市場トレンドを捉え,Impulse MACDを使用してトレンドの強さと方向を確認することです.
この戦略は,複数のタイプの移動平均に基づいて改良されたMACD指標を構築し,信号線と交差して取引信号を生成し,傾向の強さを直観的に表示し,全体的な考えが明確で,優位性は明らかである.しかし,この戦略には,変動状況への適応性の欠如,風力管理措置の欠如などの一定の制限があります.トレンド判断,信号確認,リスク制御,パラメータ最適化などの側面から戦略の安定性と収益性を向上させるために,戦略のさらなる改善を考慮することができます.
/*backtest
start: 2023-05-11 00:00:00
end: 2024-05-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Impulse MACD Strategy [LazyBear]", shorttitle="IMACD_Strategy", overlay=false)
// Function to calculate SMMA
calc_smma(src, len) =>
var float smma = na
smma := na(smma[1]) ? ta.sma(src, len) : (smma[1] * (len - 1) + src) / len
smma
// Function to calculate SMA
ta.sma(src, len)
sum = 0.0
for i = 0 to len - 1
sum := sum + src[i]
sum / len
// Function to calculate ZLEMA
calc_zlema(src, length) =>
var float ema1 = na
var float ema2 = na
var float d = na
ema1 := ta.ema(src, length)
ema2 := ta.ema(ema1, length)
d := ema1 - ema2
ema1 + d
// Function to calculate EMA
calc_ema(src, len) =>
ema = 0.0
ema := ta.ema(src, len)
ema
// Inputs
lengthMA = input(34, title="Length of Moving Average")
lengthSignal = input(9, title="Length of Signal Line")
// Calculations
src = hlc3
hi = calc_smma(high, lengthMA)
lo = calc_smma(low, lengthMA)
mi = calc_zlema(src, lengthMA)
md = mi > hi ? (mi - hi) : mi < lo ? (mi - lo) : 0
sb = ta.sma(md, lengthSignal)
sh = md - sb
mdc = src > mi ? src > hi ? color.lime : color.green : src < lo ? color.red : color.orange
// Plotting
plot(0, color=color.gray, linewidth=1, title="MidLine")
plot(md, color=mdc, linewidth=2, title="ImpulseMACD", style=plot.style_histogram)
plot(sh, color=color.blue, linewidth=2, title="ImpulseHisto", style=plot.style_histogram)
plot(sb, color=color.maroon, linewidth=2, title="ImpulseMACDCDSignal")
// Execute trades based on signals
if (ta.crossover(md, sb))
strategy.entry("Buy", strategy.long)
if (ta.crossunder(md, sb))
strategy.close("Buy")