এই কৌশলটি ম্যাকডি সূচকের আরএসআই মানের উপর ভিত্তি করে ক্রয় এবং বিক্রয় সংকেতগুলি নির্ধারণ করে। এটি যখন আরএসআই ওভারক্রয় লাইন বা ব্যাপ্তি অতিক্রম করে তখন এটি কিনে এবং যখন আরএসআই ওভারক্রয় ব্যাপ্তির নীচে পড়ে তখন মুনাফা / ক্ষতি বিক্রি করে বা বন্ধ করে দেয়।
এই কৌশলটি MACD এবং RSI উভয় সূচকেরই সুবিধাগুলি একত্রিত করে।
প্রথমে, ডিআইএফ, ডিইএ এবং এমএসিডি লাইন সহ এমএসিডি সূচকের তিনটি বক্ররেখা গণনা করা হয়। তারপরে এমএসিডি রেখায় আরএসআই সূচক গণনা করা হয় এমএসিডি এর আরএসআই গঠনের জন্য।
যখন এমএসিডি সূচকটির আরএসআই 30 বা 35 এর ওভারক্রয়েড ব্যাপ্তি অতিক্রম করে, তখন একটি ক্রয় সংকেত উত্পন্ন হয়, যা নির্দেশ করে যে এমএসিডি লাইনটি ওভারসোল্ড ব্যাপ্তিতে প্রবেশ করেছে এবং দামের প্রবণতা আপগ্রেডের দিকে বিপরীত হতে শুরু করেছে। যখন এমএসিডি সূচকের আরএসআই আবার 15 এর ওভারক্রয়েড ব্যাপ্তির নীচে ভেঙে যায়, তখন একটি বিক্রয় সংকেত উত্পন্ন হয়, যা প্রবণতা বিপরীত শেষ হয়েছে তা নির্দেশ করে।
এই কৌশলটি আংশিক মুনাফা গ্রহণের জন্যও নির্ধারণ করে। যখন এমএসিডি সূচকের আরএসআই ৮০ এর ওভারকুপড স্তর অতিক্রম করে, পজিশনের একটি অংশ আংশিক মুনাফা লক করার জন্য বিক্রি করা যেতে পারে।
সমাধান:
কৌশলটি নিম্নলিখিত দিকগুলিতেও অপ্টিমাইজ করা যেতে পারেঃ
সামগ্রিক কৌশল নকশা দর্শন স্পষ্ট, ম্যাকডি বিপরীত ব্যবহারের মূল ধারণা সঙ্গে সংযুক্ত RSI ফিল্টার কিনতে / বিক্রয় পয়েন্ট নির্ধারণ করতে। প্যারামিটার অপ্টিমাইজেশান, স্টপ লস ম্যানেজমেন্ট, ঝুঁকি নিয়ন্ত্রণ ব্যবস্থা ইত্যাদি সঙ্গে, এটি একটি খুব বাস্তব পরিমাণ ট্রেডিং কৌশল রূপান্তরিত করা যেতে পারে।
/*backtest start: 2024-01-07 00:00:00 end: 2024-01-14 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © mohanee //@version=4 strategy(title="RSI of MACD Strategy[Long only]", shorttitle="RSIofMACD" , overlay=false, pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=20, initial_capital=10000, currency=currency.USD) //default_qty_value=10, default_qty_type=strategy.fixed, ///////////////////////////////////////////////////////////////////////////////// // MACD Inputs /// fastLen = input(12, title="Fast Length") slowLen = input(21, title="Slow Length") sigLen = input(9, title="Signal Length") rsiLength = input(14, title="RSI of MACD Length") riskCapital = input(title="Risk % of capital", defval=10, minval=1) stopLoss=input(3,title="Stop Loss",minval=1) takeProfit=input(false, title="Take Profit") [macdLine, signalLine, _] = macd(close, fastLen, slowLen, sigLen) rsiOfMACD = rsi(macdLine, rsiLength) emaSlow = ema(close, slowLen) //drawings ///////////////////////////////////////////////////////////////////////////////// obLevelPlot = hline(80, title="Overbought / Profit taking line", color=color.blue , linestyle=hline.style_dashed) osLevelPlot = hline(30, title="Oversold / entry line", color=color.green, linestyle=hline.style_dashed) exitLinePlot = hline(15, title="Exit line", color=color.red, linestyle=hline.style_dashed) plot(rsiOfMACD, title = "rsiOfMACD" , color=color.purple) //drawings ///////////////////////////////////////////////////////////////////////////////// //Strategy Logic ///////////////////////////////////////////////////////////////////////////////// //Entry-- //Echeck how many units can be purchased based on risk manage ment and stop loss qty1 = (strategy.equity * riskCapital / 100 ) / (close*stopLoss/100) //check if cash is sufficient to buy qty1 , if capital not available use the available capital only qty1:= (qty1 * close >= strategy.equity ) ? (strategy.equity / close) : qty1 strategy.entry(id="RSIofMACD", long=true, qty=qty1, when = ( crossover(rsiOfMACD, 30) or crossover(rsiOfMACD, 35) ) and close>=emaSlow ) bgcolor(abs(strategy.position_size)>=1 ? color.blue : na , transp=70) barcolor(abs(strategy.position_size)>=1 and ( crossover(rsiOfMACD, 30) or crossover(rsiOfMACD, 35) ) ? color.purple : abs(strategy.position_size)>=1 ? color.blue : na ) //partial exit strategy.close(id="RSIofMACD", comment="PExit Profit is "+tostring(close - strategy.position_avg_price, "###.##") , qty=strategy.position_size/3, when= takeProfit and abs(strategy.position_size)>=1 and close > strategy.position_avg_price and crossunder(rsiOfMACD,80) ) //Close All strategy.close(id="RSIofMACD", comment="Close All Profit is "+tostring(close - strategy.position_avg_price, "###.##"), when=abs(strategy.position_size)>=1 and crossunder(rsiOfMACD,15) ) //and close > strategy.position_avg_price ) //Strategy Logic /////////////////////////////////////////////////////////////////////////////////