এই কৌশলটি এমএসিডি (মোভিং এভারেজ কনভার্জেন্স ডিভার্জেন্স) সূচকের শূন্য-ল্যাগ সংস্করণের উপর ভিত্তি করে, যা মূল্য পরিবর্তনের দ্রুত প্রতিক্রিয়া জানিয়ে স্বল্পমেয়াদী প্রবণতা ক্যাপচার করে, উচ্চ-ফ্রিকোয়েন্সি ট্রেডিং সক্ষম করে। কৌশলটি এমএসিডি সূচক তৈরি করতে বিভিন্ন সময়কালের (দ্রুত এবং ধীর লাইন) দুটি চলমান গড় ব্যবহার করে এবং সূচক এবং মূল্যের মধ্যে বিলম্ব দূর করতে একটি শূন্য-ল্যাগ অ্যালগরিদম প্রবর্তন করে, সংকেতগুলির সময়মততা উন্নত করে। অতিরিক্তভাবে, সংকেত লাইন এবং এমএসিডি লাইনের ক্রসওভার কেনা এবং বিক্রয় সংকেত হিসাবে ব্যবহৃত হয় এবং ব্যবসায়ীদের সময়মত ট্রেডিং সুযোগগুলি কাজে লাগাতে সহায়তা করার জন্য সতর্কতা সেট আপ করা হয়।
এমএসিডি ডুয়াল ক্রসওভার জিরো লেগ ট্রেডিং কৌশলটি মূল্য পরিবর্তনের দ্রুত প্রতিক্রিয়া জানানো এবং স্বল্পমেয়াদী প্রবণতা ক্যাপচার করে উচ্চ-ফ্রিকোয়েন্সি ট্রেডিং অর্জন করে। জিরো-লেগ অ্যালগরিদম এবং দ্বৈত চলমান গড় নকশা সংকেতগুলির সময়োপযোগীতা এবং নির্ভুলতা উন্নত করে। কৌশলটির স্বজ্ঞাত সংকেত এবং সুবিধাজনক অপারেশন যেমন কিছু সুবিধা রয়েছে, তবে ওভারট্রেডিং এবং প্যারামিটার সংবেদনশীলতার মতো ঝুঁকিগুলির মুখোমুখি হয়। ভবিষ্যতে, কৌশলটির দৃust়তা এবং লাভজনকতা উন্নত করতে প্রবণতা নিশ্চিতকরণ সূচক, প্যারামিটার অপ্টিমাইজেশন, মাল্টি-ফ্যাক্টর মডেল ইত্যাদি প্রবর্তন করে কৌশলটি অনুকূলিত করা যেতে পারে।
/*backtest start: 2024-04-23 00:00:00 end: 2024-05-23 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("BNM INTRADAY SETUP MACD 3M - Version 1.2", shorttitle="Zero Lag MACD Enhanced 1.2") source = close fastLength = input(12, title="Fast MM period", minval=1) slowLength = input(26,title="Slow MM period", minval=1) signalLength =input(9,title="Signal MM period", minval=1) useEma = input(true, title="Use EMA (otherwise SMA)") useOldAlgo = input(false, title="Use Glaz algo (otherwise 'real' original zero lag)") showDots = input(true, title="Show symbols to indicate crossing") dotsDistance = input(1.5, title="Symbols distance factor", minval=0.1) // Fast line ma1 = useEma ? ema(source, fastLength) : sma(source, fastLength) ma2 = useEma ? ema(ma1, fastLength) : sma(ma1, fastLength) zerolagEMA = ((2 * ma1) - ma2) // Slow line mas1 = useEma ? ema(source, slowLength) : sma(source, slowLength) mas2 = useEma ? ema(mas1, slowLength) : sma(mas1, slowLength) zerolagslowMA = ((2 * mas1) - mas2) // MACD line ZeroLagMACD = zerolagEMA - zerolagslowMA // Signal line emasig1 = ema(ZeroLagMACD, signalLength) emasig2 = ema(emasig1, signalLength) signal = useOldAlgo ? sma(ZeroLagMACD, signalLength) : (2 * emasig1) - emasig2 hist = ZeroLagMACD - signal upHist = (hist > 0) ? hist : 0 downHist = (hist <= 0) ? hist : 0 p1 = plot(upHist, color=color.blue, transp=40, style=plot.style_columns, title='Positive delta') p2 = plot(downHist, color=color.red, transp=40, style=plot.style_columns, title='Negative delta') zeroLine = plot(ZeroLagMACD, color=color.red, transp=0, linewidth=2, title='MACD line') signalLine = plot(signal, color=color.blue, transp=0, linewidth=2, title='Signal') ribbonDiff = hist > 0 ? color.blue : color.red fill(zeroLine, signalLine, color=ribbonDiff) circleYPosition = signal * dotsDistance ribbonDiff2 = hist > 0 ? color.blue : color.red // Generate dots for cross signals plot(showDots and cross(ZeroLagMACD, signal) ? circleYPosition : na, style=plot.style_circles, linewidth=4, color=ribbonDiff2, title='Dots') // Alerts for buy and sell signals buySignal = cross(ZeroLagMACD, signal) and (ribbonDiff2 == color.blue) and (ZeroLagMACD < 0) sellSignal = cross(ZeroLagMACD, signal) and (ribbonDiff2 == color.red) and (ZeroLagMACD > 0) // Use 'strategy.entry' for placing orders in strategy context if (buySignal) strategy.entry("Buy", strategy.long) alert("Buy Signal: Blue dot below zero line", alert.freq_once_per_bar_close) if (sellSignal) strategy.entry("Sell", strategy.short) alert("Sell Signal: Red dot above zero line", alert.freq_once_per_bar_close)