এই কৌশলটি সম্ভাব্য ক্রয় এবং বিক্রয় সুযোগগুলি সনাক্ত করতে একাধিক এক্সপোনেনশিয়াল মুভিং এভারেজ (ইএমএ), আপেক্ষিক শক্তি সূচক (আরএসআই) এবং স্ট্যান্ডার্ড ডিভিয়েশন-ভিত্তিক প্রস্থান শর্তকে একত্রিত করে। এটি বাজারের প্রবণতার দিক এবং শক্তি বিশ্লেষণের জন্য স্বল্পমেয়াদী (6, 8, 12 দিন), মাঝারি মেয়াদী (55 দিন) এবং দীর্ঘমেয়াদী (150, 200, 250 দিন) ইএমএ ব্যবহার করে। কনফিগারযোগ্য ক্রয় (30) এবং বিক্রয় (70) থ্রেশহোল্ড সহ আরএসআই, গতি নির্ধারণ এবং ওভারকপ বা ওভারসোল্ড শর্তগুলি সনাক্ত করতে ব্যবহৃত হয়। কৌশলটিতে একটি অনন্য প্রস্থান প্রক্রিয়াও রয়েছে যা যখন ক্লোজিং দামটি 12 দিনের ইএমএ থেকে একটি কনফিগারযোগ্য স্ট্যান্ডার্ড ডিভিয়েশন ব্যাপ্তি (ডিফল্ট 0.5) এ পৌঁছে যায় তখন প্ররোচিত হয়, সম্ভাব্য লাভ সুরক্ষা বা সম্ভাব্য ক্ষতি হ্রাস করার একটি পদ্ধতি সরবরাহ করে।
এই নিবন্ধটি একাধিক চলমান গড়, আরএসআই এবং স্ট্যান্ডার্ড ডিভিয়েশন প্রস্থান উপর ভিত্তি করে একটি ক্যান্ডেলস্টিক উচ্চতা ব্রেকআউট ট্রেডিং কৌশল প্রস্তাব করে। কৌশলটি প্রবণতা এবং গতি উভয় মাত্রা থেকে বাজার বিশ্লেষণ করে যখন একটি অনন্য স্ট্যান্ডার্ড ডিভিয়েশন প্রবণতা সুযোগ ক্যাপচার এবং ঝুঁকি পরিচালনা করার জন্য প্রস্থান প্রক্রিয়া নিয়োগ করে। কৌশল যুক্তি স্পষ্ট, কঠোর, এবং কোড বাস্তবায়ন সংক্ষিপ্ত এবং দক্ষ। সঠিক অপ্টিমাইজেশান সঙ্গে, এই কৌশল একটি শক্তিশালী অন্তঃদিবস মাঝারি থেকে উচ্চ ফ্রিকোয়েন্সি ট্রেডিং কৌশল হয়ে উঠতে সম্ভাবনা আছে। যাইহোক, এটি লক্ষ করা গুরুত্বপূর্ণ যে যে কোন কৌশল তার সীমাবদ্ধতা আছে, এবং অন্ধ ব্যবহার ঝুঁকি প্রবর্তন করতে পারে। পরিমাণগত ট্রেডিং একটি যান্ত্রিক
/*backtest start: 2023-03-22 00:00:00 end: 2024-03-27 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Candle Height Breakout with Configurable Exit and Signal Control", shorttitle="CHB Single Signal", overlay=true) // Input parameters for EMA filter and its length useEmaFilter = input.bool(true, "Use EMA Filter", group="Entry Conditions") emaFilterLength = input.int(55, "EMA Filter Length", minval=1, group="Entry Conditions") candleCount = input.int(4, "SamG Configurable Candle Count for Entry", minval=3, maxval=4, step=1, group="Entry Conditions") exitEmaLength = input.int(12, "Exit EMA Length", minval=1, group="Exit Conditions", defval=12) exitStdDevMultiplier = input.float(0.5, "Exit Std Dev Multiplier", minval=0.1, maxval=2.0, step=0.1, group="Exit Conditions") // State variables to track if we are in a long or short position var bool inLong = false var bool inShort = false // Calculating EMAs with fixed periods for visual reference ema6 = ta.ema(close, 6) ema8 = ta.ema(close, 8) ema12 = ta.ema(close, 12) ema55 = ta.ema(close, 55) ema100 = ta.ema(close, 100) ema150 = ta.ema(close, 150) ema200 = ta.ema(close, 200) emaFilter = ta.ema(close, emaFilterLength) exitEma = ta.ema(close, exitEmaLength) // Plotting EMAs plot(ema6, "EMA 6", color=color.red) plot(ema8, "EMA 8", color=color.orange) plot(ema12, "EMA 12", color=color.yellow) plot(ema55, "EMA 55", color=color.green) plot(ema100, "EMA 100", color=color.blue) plot(ema150, "EMA 150", color=color.purple) plot(ema200, "EMA 200", color=color.fuchsia) plot(emaFilter, "EMA Filter", color=color.black) plot(exitEma, "Exit EMA", color=color.gray) // Calculating the highest and lowest of the last N candles based on user input highestOfN = ta.highest(high[1], candleCount) lowestOfN = ta.lowest(low[1], candleCount) // Entry Conditions with EMA Filter longEntryCondition = not inLong and not inShort and (close > highestOfN) and (not useEmaFilter or (useEmaFilter and close > emaFilter)) shortEntryCondition = not inLong and not inShort and (close < lowestOfN) and (not useEmaFilter or (useEmaFilter and close < emaFilter)) // Update position state on entry if (longEntryCondition) strategy.entry("Buy", strategy.long, comment="B") inLong := true inShort := false if (shortEntryCondition) strategy.entry("Sell", strategy.short, comment="S") inLong := false inShort := true // Exit Conditions based on configurable EMA and Std Dev Multiplier smaForExit = ta.sma(close, exitEmaLength) upperExitBand = smaForExit + exitStdDevMultiplier * ta.stdev(close, exitEmaLength) lowerExitBand = smaForExit - exitStdDevMultiplier * ta.stdev(close, exitEmaLength) exitConditionLong = inLong and (close < upperExitBand or close < exitEma) exitConditionShort = inShort and (close > lowerExitBand or close > exitEma) // Strategy exits if (exitConditionLong) strategy.close("Buy", comment="Exit") inLong := false if (exitConditionShort) strategy.close("Sell", comment="Exit") inShort := false // Visualizing entry and exit points plotshape(series=longEntryCondition, style=shape.labelup, location=location.belowbar, color=color.green, size=size.tiny, title="Buy Signal", text="B") plotshape(series=shortEntryCondition, style=shape.labeldown, location=location.abovebar, color=color.red, size=size.tiny, title="Sell Signal", text="S")