এই কৌশলটি তিনটি সূচককে একত্রিত করে - চলমান গড়, বোলিংজার ব্যান্ড এবং মাল্টি-পিরিয়ড স্টক ট্রেডিংয়ের জন্য আপেক্ষিক শক্তি সূচক (আরএসআই) । এটি দ্রুত এবং ধীর চলমান গড়ের ক্রসওভারগুলি বিবেচনা করে, 50 এর নীচে আরএসআই এবং বিক্রয়ের সময় বিবি মাঝারি ব্যান্ডের নীচে বন্ধ মূল্য। এটি 70 এর উপরে আরএসআই এবং বিক্রয়ের সময় বিবি উপরের ব্যান্ডের উপরে বন্ধ মূল্য বিবেচনা করে।
কৌশলটি মূলত সিদ্ধান্ত গ্রহণের জন্য তিনটি সূচক ব্যবহার করে। প্রথমত, দ্রুত এবং ধীর গতির গড়ের সমন্বয়ে গঠিত এমএসিডি সূচক। ধীর রেখার উপরে দ্রুত রেখার ক্রসওভারগুলি ক্রয় সংকেত উত্পন্ন করে। দ্বিতীয়ত, মাঝারি, উপরের এবং নীচের ব্যান্ডগুলির সাথে বোলিংজার ব্যান্ডগুলি। নিম্ন ব্যান্ডের কাছাকাছি দামগুলি সুইং লোতে কেনার সুযোগ উপস্থাপন করে, যখন উপরের ব্যান্ডের কাছাকাছি দামগুলি সুইং হাইসে বিক্রয় করার সুযোগ উপস্থাপন করে। শেষ পর্যন্ত, আরএসআই দামের ক্রিয়াকলাপের গতি এবং পরিবর্তনের হারকে প্রতিফলিত করে এবং সম্ভাব্য সুইং হাইস এবং সুইং লো সনাক্ত করে।
বিশেষত, কৌশলটি প্রথমে ধীর চলমান গড়ের উপরে দ্রুত চলমান গড়ের ক্রসিংয়ের প্রয়োজন, যা ক্রয়ের পরামর্শ দেয় এমন উত্থান প্রবণতাকে শক্তিশালী করে। এটি 50 এর নীচে আরএসআইয়েরও প্রয়োজন, যা দেখায় যে দামটি ওভারসোল্ড স্তরে থাকতে পারে এবং কেনার সুযোগগুলি উপস্থাপন করে। এছাড়াও, এটি বিবি মাঝারি ব্যান্ডের নীচে বন্ধের দামের প্রয়োজন, যা দামের দোল কম এবং একটি ভাল এন্ট্রি পয়েন্ট নির্দেশ করে।
মুনাফা গ্রহণ এবং স্টপ লসের জন্য, যখন আরএসআই 70 এর উপরে উঠে যায়, তখন এটি নির্দেশ করে যে দামটি অতিরিক্ত ক্রয়ের স্তরে থাকতে পারে এবং আপট্রেন্ডের গতি হ্রাস পাচ্ছে, মুনাফা গ্রহণের জন্য উপযুক্ত। এছাড়াও যখন বন্ধের দাম বিবি উপরের ব্যান্ডের উপরে উঠে যায়, এটি মুনাফা গ্রহণের জন্য উপযুক্ত প্রত্যাহারের ঝুঁকি বাড়িয়ে তোলে।
এই কৌশলটি প্রবেশ এবং প্রস্থান পয়েন্টগুলি আরও সঠিকভাবে নির্ধারণের জন্য চলমান গড়, বোলিংজার ব্যান্ড এবং আরএসআই এর শক্তিকে একত্রিত করে। প্রধান সুবিধা হলঃ
চলমান গড়গুলি দামের আপট্রেন্ড গতি নির্ধারণ করে। বিবি মধ্যবর্তী ব্যান্ড প্রবেশের জন্য সুইং নিচে চিহ্নিত করে। আরএসআই দামের শিখরে কেনা এড়ায়। তিনটি একসাথে দামের আপট্রেন্ডের সময় অপেক্ষাকৃত আদর্শ কেনার সুযোগ সরবরাহ করে।
আরএসআই এবং বিবি উপরের ব্যান্ডের সংমিশ্রণটি মুনাফা আদায়ের জন্য মূল্য সুইংয়ের উচ্চতা ধরে রাখে যাতে অতিরিক্ত ক্রয়ের শর্ত এড়ানো যায়।
মাল্টি-পিরিয়ড মূল্যায়নগুলি লাভের সর্বাধিকীকরণের জন্য সময়সীমার মধ্যে ব্যবসায়ের সুযোগগুলি ক্যাপচার করতে দেয়।
যুক্তিসঙ্গত ট্রেডিং নিয়ম মধ্যম ও দীর্ঘমেয়াদী বিনিয়োগের জন্য কৌশলটি সহজেই বোঝা যায়।
সিদ্ধান্ত গ্রহণের সঠিকতা বৃদ্ধির জন্য সূচকগুলির সমন্বয় সত্ত্বেও, মূল ঝুঁকিগুলি বিদ্যমানঃ
প্যারামিটার সেটিং ঝুঁকি। সূচকগুলির জন্য প্যারামিটারগুলি পরীক্ষামূলক সমন্বয় প্রয়োজন। অপর্যাপ্ত সমন্বয় কৌশল কর্মক্ষমতা প্রভাবিত করে।
ষাঁড়ের বাজারের জন্য আরও উপযুক্ত। ভালুকের বাজারে, দামের হ্রাসের গতি স্টপ লসকে অকার্যকর করে তুলতে পারে।
পোর্টফোলিও সত্ত্বেও একক স্টক ঝুঁকি অব্যাহত রয়েছে। সম্পদ জুড়ে বিনিয়োগের বৈচিত্র্য প্রয়োজন।
সম্ভাব্য অত্যধিক ট্রেডিং ফ্রিকোয়েন্সি। সর্বোত্তম প্যারামিটার সেটিং ঘন ঘন ট্রেডিংয়ের ফলস্বরূপ হতে পারে, যা উচ্চতর লেনদেনের খরচ এবং করের সাথে জড়িত।
সমাধান:
উপযুক্ত সিগন্যাল ফ্রিকোয়েন্সি অর্জনের জন্য ব্যাকটেস্টের উপর ভিত্তি করে পরামিতিগুলি সামঞ্জস্য করুন।
চলমান গড় সময়কালকে মাঝারি প্রবেশের ফ্রিকোয়েন্সিতে সামঞ্জস্য করুন এবং ক্ষতি হ্রাস করুন।
একক স্টক ঝুঁকি হ্রাস করার জন্য আরও বেশি সম্পদে বিনিয়োগকে বৈচিত্র্যময় করা।
বাণিজ্য ঘনত্ব কমাতে ক্রয় ও মুনাফা গ্রহণের মানদণ্ড কিছুটা শিথিল করা।
অপ্টিমাইজেশনের জন্য আরও জায়গা আছেঃ
ভলিউমের মতো আরও ফিল্টার যুক্ত করুন যাতে কেনার ক্ষেত্রে প্রসারিত ভলিউম নিশ্চিত হয়, সিদ্ধান্তের নির্ভুলতা উন্নত হয়।
বাজারের অবস্থার উপর ভিত্তি করে অবস্থানগুলিকে গতিশীলভাবে আকার দেওয়ার জন্য অবস্থান সাইজিং মডিউলগুলি অন্তর্ভুক্ত করুন।
বড় ডেটাসেটের প্রশিক্ষণের মাধ্যমে স্বয়ংক্রিয়ভাবে প্যারামিটারগুলি সামঞ্জস্য করতে গভীর শেখার অ্যালগরিদম ব্যবহার করুন।
বিচার প্রয়োগের সুযোগ বাড়ানোর জন্য আরও সময়সীমা নির্ধারণ করা।
সামগ্রিকভাবে, কৌশলটির স্পষ্ট, সহজেই বোঝার যুক্তি রয়েছে, মিথ্যা সংকেতগুলি হ্রাস করার জন্য সূচকগুলিকে সিঙ্ক্রোনাইজ করে। আরও পরামিতি টিউনিং এবং সূচক যুক্ত করা স্থিতিশীলতা এবং সিদ্ধান্তের নির্ভুলতা বাড়িয়ে তুলতে পারে। এটি মাঝারি থেকে দীর্ঘমেয়াদী বিনিয়োগ এবং পরিমাণগত ব্যবসায়ের জন্য উপযুক্ত। তবুও, কোনও কৌশলই বাজারের ঝুঁকিগুলি সম্পূর্ণরূপে নির্মূল করে না। উপযুক্ত অবস্থান আকার এবং স্টপ লস স্তর সর্বদা প্রয়োজনীয়।
/*backtest start: 2023-11-25 00:00:00 end: 2023-12-25 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // //@author Alorse //@version=4 strategy("MACD + BB + RSI [Alorse]", shorttitle="BB + MACD + RSI [Alorse]", overlay=true, pyramiding=0, currency=currency.USD, default_qty_type=strategy.percent_of_equity, initial_capital=1000, default_qty_value=20, commission_type=strategy.commission.percent, commission_value=0.01) txtVer = "1.0.1" version = input(title="Version", type=input.string, defval=txtVer, options=[txtVer], tooltip="This is informational only, nothing will change.") src = input(title="Source", type=input.source, defval=close) // MACD fast_length = input(title="Fast Length", type=input.integer, defval=12, group="MACD") slow_length = input(title="Slow Length", type=input.integer, defval=26, group="MACD") signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9, group="MACD") sma_source = input(title="Oscillator MA Type", type=input.string, defval="EMA", options=["SMA", "EMA"], group="MACD") sma_signal = input(title="Signal Line MA Type", type=input.string, defval="EMA", options=["SMA", "EMA"], group="MACD") fast_ma = sma_source == "SMA" ? sma(src, fast_length) : ema(src, fast_length) slow_ma = sma_source == "SMA" ? sma(src, slow_length) : ema(src, slow_length) macd = fast_ma - slow_ma signal = sma_signal == "SMA" ? sma(macd, signal_length) : ema(macd, signal_length) // Bollinger Bands bbGroup = "Bollindger Bands" length = input(20, title="Length", group=bbGroup) mult = input(2.0, title="StdDev", minval=0.001, maxval=5, group=bbGroup) basis = sma(src, length) dev = mult * stdev(src, length) upper = basis + dev lower = basis - dev // RSI rsiGroup = "RSI" lenRSI = input(14, title="Length", minval=1, group=rsiGroup) // lessThan = input(50, title="Less than", minval=1 , maxval=100, group=rsiGroup) RSI = rsi(src, lenRSI) // Strategy Conditions buy = crossover(macd, signal) and RSI < 50 and close < basis sell = RSI > 70 and close > upper // Stop Loss slGroup = "Stop Loss" useSL = input(false, title="╔══════ Enable ══════╗", group=slGroup, tooltip="If you are using this strategy for Scalping or Futures market, we do not recommend using Stop Loss.") SLbased = input(title="Based on", type=input.string, defval="Percent", options=["ATR", "Percent"], group=slGroup, tooltip="ATR: Average True Range\nPercent: eg. 5%.") multiATR = input(10.0, title="ATR Mult", type=input.float, group=slGroup, inline="atr") lengthATR = input(14, title="Length", type=input.integer, group=slGroup, inline="atr") SLPercent = input(10, title="Percent", type=input.float, group=slGroup) * 0.01 longStop = 0.0 shortStop = 0.0 if SLbased == "ATR" longStop := valuewhen(buy, low, 0) - (valuewhen(buy, rma(tr(true), lengthATR), 0) * multiATR) longStopPrev = nz(longStop[1], longStop) longStop := close[1] > longStopPrev ? max(longStop, longStopPrev) : longStop shortStop := (valuewhen(sell, rma(tr(true), lengthATR), 0) * multiATR) + valuewhen(sell, high, 0) shortStopPrev = nz(shortStop[1], shortStop) shortStop := close[1] > shortStopPrev ? max(shortStop, shortStopPrev) : shortStop if SLbased == "Percent" longStop := strategy.position_avg_price * (1 - SLPercent) shortStop := strategy.position_avg_price * (1 + SLPercent) strategy.entry("Long", true, when=buy) strategy.close("Long", when=sell, comment="Exit") if useSL strategy.exit("Stop Loss", "Long", stop=longStop)