
इस रणनीति में एसएमएमए, एसएमए, जेएलईएमए और ईएमए सहित कई चलती औसत संकेतकों का उपयोग किया जाता है, और उनके आधार पर एक बेहतर एमएसीडी संकेतक (इंपल्स एमएसीडी) का निर्माण किया जाता है, जो इंपल्स एमएसीडी और इसकी सिग्नल लाइनों के क्रॉसिंग के माध्यम से एक व्यापारिक संकेत उत्पन्न करता है। रणनीति का मुख्य विचार बाजार की प्रवृत्ति को पकड़ने के लिए विभिन्न समय के पैमाने पर चलती औसत का उपयोग करना है, जबकि इंपल्स एमएसीडी का उपयोग प्रवृत्ति की ताकत और दिशा की पुष्टि करने के लिए किया जाता है।
इस रणनीति के आधार पर कई प्रकार के चलती औसत के सुधार 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")