
এই কৌশলটি SMMA, SMA, ZLEMA এবং EMA সহ বিভিন্ন চলমান গড় সূচক ব্যবহার করে এবং তাদের উপর ভিত্তি করে একটি উন্নত MACD সূচক (Impulse 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")