এই কৌশলটি ট্রেডিং সিগন্যাল তৈরির জন্য এমএসিডি সূচকের সংযোজন এবং বিচ্যুতি ব্যবহার করে। যখন এমএসিডি লাইন সিগন্যাল লাইনটি অতিক্রম করে এবং এমএসিডি লাইনের মান যথাক্রমে 1.5 এর চেয়ে বেশি বা -1.5 এর চেয়ে কম হয়, তখন এটি যথাক্রমে দীর্ঘ এবং সংক্ষিপ্ত সংকেত তৈরি করে। কৌশলটি স্থির লাভ এবং স্টপ-লস স্তর সেট করে এবং ঝুঁকি-পুরষ্কার অনুপাত (আরঃ আর) ধারণাটি প্রবর্তন করে। উপরন্তু, এটি দৈনিক সর্বাধিক ক্ষতি এবং লাভের সীমা এবং ঝুঁকিগুলি আরও ভালভাবে নিয়ন্ত্রণ করার জন্য একটি শক্ত ট্রেলিং স্টপ-লস ব্যবহার করে।
এই কৌশলটি ঝুঁকি-প্রতিদান অনুপাত, ট্রেলিং স্টপ-লস এবং দৈনিক সীমাগুলির মতো ঝুঁকি নিয়ন্ত্রণের ব্যবস্থা প্রবর্তনের সময় ট্রেডিং সংকেত উত্পন্ন করতে এমএসিডি সূচকের সংযোজন এবং বিচ্যুতি ব্যবহার করে। যদিও কৌশলটি প্রবণতা আন্দোলনগুলি ক্যাপচার করতে পারে এবং কিছুটা ঝুঁকি নিয়ন্ত্রণ করতে পারে, তবুও অপ্টিমাইজেশন এবং উন্নতির জন্য এখনও জায়গা রয়েছে। ভবিষ্যতে, আরও শক্তিশালী এবং উল্লেখযোগ্য রিটার্ন অর্জনের জন্য সংকেত নিশ্চিতকরণ, লাভ এবং স্টপ-লস স্তর, ট্রেলিং স্টপ-লস এবং দৈনিক সীমাগুলির মতো দিকগুলি থেকে অপ্টিমাইজেশন বিবেচনা করা যেতে পারে।
/*backtest start: 2023-05-28 00:00:00 end: 2024-06-02 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © DD173838 //@version=5 strategy("MACD Convergence Strategy with R:R, Daily Limits, and Tighter Stop Loss", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1) // MACD settings fastLength = input.int(12, title="Fast Length", minval=1) slowLength = input.int(26, title="Slow Length", minval=1) signalSmoothing = input.int(9, title="Signal Smoothing", minval=1) source = input(close, title="Source") // Calculate MACD [macdLine, signalLine, _] = ta.macd(source, fastLength, slowLength, signalSmoothing) // Plot MACD and signal line plot(macdLine, title="MACD Line", color=color.blue) plot(signalLine, title="Signal Line", color=color.red) // Define convergence conditions macdConvergenceUp = ta.crossover(macdLine, signalLine) and macdLine > 1.5 macdConvergenceDown = ta.crossunder(macdLine, signalLine) and macdLine < -1.5 // Define take profit and stop loss takeProfit = 600 stopLoss = 100 // Plot buy and sell signals on the chart plotshape(series=macdConvergenceDown, title="Short Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SHORT") plotshape(series=macdConvergenceUp, title="Long Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="LONG") // Execute short and long orders with defined take profit and stop loss if (macdConvergenceDown) strategy.entry("Short", strategy.short, qty=1, stop=high + (stopLoss / syminfo.mintick), limit=low - (takeProfit / syminfo.mintick)) if (macdConvergenceUp) strategy.entry("Long", strategy.long, qty=1, stop=low - (stopLoss / syminfo.mintick), limit=high + (takeProfit / syminfo.mintick)) // Trailing stop logic var float entryPrice = na var float trailingStopPrice = na if (strategy.position_size != 0) entryPrice := strategy.opentrades.entry_price(0) if (strategy.position_size > 0) // For long positions if (close - entryPrice > 300) trailingStopPrice := entryPrice + (close - entryPrice - 300) if (strategy.position_size < 0) // For short positions if (entryPrice - close > 300) trailingStopPrice := entryPrice - (entryPrice - close - 300) if (strategy.position_size > 0 and not na(trailingStopPrice) and close < trailingStopPrice) strategy.close("Long", comment="Trailing Stop") if (strategy.position_size < 0 and not na(trailingStopPrice) and close > trailingStopPrice) strategy.close("Short", comment="Trailing Stop") // Daily drawdown and profit limits var float startOfDayEquity = na if (na(startOfDayEquity) or ta.change(time('D')) != 0) startOfDayEquity := strategy.equity maxDailyLoss = 600 maxDailyProfit = 1800 currentDailyPL = strategy.equity - startOfDayEquity if (currentDailyPL <= -maxDailyLoss) strategy.close_all(comment="Max Daily Loss Reached") if (currentDailyPL >= maxDailyProfit) strategy.close_all(comment="Max Daily Profit Reached")