এই কৌশলটি এসএমএমএ, এসএমএ, জেডএলইএমএ এবং ইএমএ সহ বিভিন্ন চলমান গড় সূচক ব্যবহার করে এবং তাদের উপর ভিত্তি করে একটি উন্নত এমএসিডি সূচক (ইম্পলস এমএসিডি) তৈরি করে। এটি ইমপলস এমএসিডি এবং এর সংকেত লাইনের ক্রসওভারের মাধ্যমে ট্রেডিং সংকেত উত্পন্ন করে। কৌশলটির মূল ধারণাটি ইমপলস এমএসিডি দিয়ে প্রবণতার শক্তি এবং দিকটি নিশ্চিত করার সময় বিভিন্ন সময়সীমার চলমান গড় ব্যবহার করে বাজারের প্রবণতা ক্যাপচার করা।
এই কৌশলটি বিভিন্ন ধরণের চলমান গড়ের উপর ভিত্তি করে একটি উন্নত এমএসিডি সূচক তৈরি করে এবং প্রবণতা শক্তিকে স্বজ্ঞাতভাবে প্রদর্শন করার সময় সংকেত লাইনের সাথে তার ক্রসওভারের মাধ্যমে ট্রেডিং সংকেত উত্পন্ন করে। সামগ্রিক ধারণাটি স্পষ্ট এবং সুবিধাগুলি সুস্পষ্ট। তবে কৌশলটির কিছু সীমাবদ্ধতা রয়েছে, যেমন অস্থির বাজারে অনুকূলতা এবং ঝুঁকি নিয়ন্ত্রণের ব্যবস্থাগুলির অভাব। কৌশলটির দৃust়তা এবং লাভজনকতা বাড়ানোর জন্য প্রবণতা সনাক্তকরণ, সংকেত নিশ্চিতকরণ, ঝুঁকি নিয়ন্ত্রণ এবং পরামিতি অপ্টিমাইজেশনের মতো দিক থেকে আরও উন্নতি বিবেচনা করা যেতে পারে।
/*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")