এই কৌশলটি ট্রেডিং সিগন্যাল তৈরির জন্য বোলিংজার ব্যান্ড এবং 5-দিনের এক্সপোনেনশিয়াল মুভিং এভারেজ (ইএমএ) একত্রিত করে। যখন দাম উপরের বোলিংজার ব্যান্ডের উপরে ভেঙে যায় এবং 5-দিনের ইএমএ এর নীচে বন্ধ হয়, তখন একটি শর্ট পজিশন খোলা হয়। বিপরীতভাবে, যখন দাম নীচের বোলিংজার ব্যান্ডের নীচে ভেঙে যায় এবং 5-দিনের ইএমএ এর উপরে বন্ধ হয়, তখন একটি লং পজিশন খোলা হয়। অতিরিক্তভাবে, যখন একটি বিপরীত সংকেত উপস্থিত হয়, তখন কৌশলটি বর্তমান অবস্থানটি বন্ধ করে এবং বিপরীত দিকের একটি নতুন অবস্থান খোলে। কৌশলটি তুলনামূলক মূল্য স্তরগুলি পরিমাপ করতে বোলিংজার ব্যান্ড এবং ট্রেডিং সংকেত তৈরির জন্য একটি প্রবণতা ফিল্টার হিসাবে ইএমএ ব্যবহার করে বাজারের অস্থিরতা এবং প্রবণন পরিবর্তনগুলি ক্যাপচার করার লক্ষ্য রাখে।
বোলিংজার ব্যান্ড এবং ইএমএ একত্রিত করে, এই কৌশলটি কার্যকরভাবে প্রবণতা এবং অস্থিরতার সুযোগগুলি ক্যাপচার করতে পারে, যা মাঝারি থেকে দীর্ঘমেয়াদী ট্রেডিং কৌশলগুলির জন্য উপযুক্ত। তবে, প্যারামিটার অপ্টিমাইজেশন, অবস্থান নিয়ন্ত্রণ এবং ঝুঁকি ব্যবস্থাপনার প্রতি মনোযোগ দেওয়া উচিত। এটি আরও ভাল পারফরম্যান্সের জন্য অন্যান্য প্রযুক্তিগত সূচক এবং মৌলিক বিশ্লেষণের সাথে একত্রিত করা উচিত। কৌশলটির পারফরম্যান্স বাজারের অবস্থার দ্বারা প্রভাবিত হতে পারে এবং প্রকৃত পরিস্থিতির উপর ভিত্তি করে সমন্বয় এবং অপ্টিমাইজেশনের প্রয়োজন।
/*backtest start: 2024-05-01 00:00:00 end: 2024-05-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bollinger Bands and EMA Strategy", overlay=true) // Define the Bollinger Bands length = input.int(20, title="BB Length") src = input(close, title="BB Source") mult = input.float(2.0, title="BB Multiplier") basis = ta.sma(src, length) dev = mult * ta.stdev(src, length) upper = basis + dev lower = basis - dev // Plot Bollinger Bands plot(upper, "Upper Band", color=color.red) plot(lower, "Lower Band", color=color.green) plot(basis, "Middle Band", color=color.blue) // Use plot instead of hline for basis // Define the 5-period EMA ema5 = ta.ema(close, 5) // Plot the 5 EMA plot(ema5, "5 EMA", color=color.orange) // Generate signals var float entry_price = na var string trade_direction = "none" if (na(close[1])) trade_direction := "none" // Condition for entering a short trade if (open > upper and close < ema5) if (trade_direction != "short") strategy.entry("Short", strategy.short) entry_price := close trade_direction := "short" // Condition for entering a long trade if (open < lower and close > ema5) if (trade_direction != "long") strategy.entry("Long", strategy.long) entry_price := close trade_direction := "long" // Close short trade on a long signal if (trade_direction == "short" and open < lower and close > ema5) strategy.close("Short") strategy.entry("Long", strategy.long) entry_price := close trade_direction := "long" // Close long trade on a short signal if (trade_direction == "long" and open > upper and close < ema5) strategy.close("Long") strategy.entry("Short", strategy.short) entry_price := close trade_direction := "short" // Close trades when opposite signal is generated if (trade_direction == "long" and open > upper and close < ema5) strategy.close("Long") trade_direction := "none" if (trade_direction == "short" and open < lower and close > ema5) strategy.close("Short") trade_direction := "none"