
এই কৌশলটি MACD সূচকের RSI মানের উপর ভিত্তি করে ক্রয় এবং বিক্রয় সংকেত নির্ধারণ করে। RSI মানটি ওভারবই লাইন বা ওভারসোলের সীমা অতিক্রম করার সময় ক্রয় করুন এবং RSI মানটি ওভারসোলের সীমা অতিক্রম করার সময় বন্ধ করুন বা বন্ধ করুন।
এই কৌশলটি MACD এবং RSI সূচকগুলির সুবিধাগুলিকে একত্রিত করে।
প্রথমে MACD সূচকের তিনটি কার্ভ গণনা করা হয়, যার মধ্যে রয়েছে DIF লাইন, DEA লাইন এবং MACD লাইন। তারপরে MACD লাইনে RSI সূচকটি গণনা করা হয়, যা MACD এর RSI গঠন করে।
যখন RSI of MACD সূচকটি 30 বা 35 এর বেশি ওভারসোল্ড ব্যাপ্তি অতিক্রম করে তখন একটি ক্রয় সংকেত উত্পন্ন হয়, এটি বোঝায় যে MACD লাইনটি ওভারসোল্ড অঞ্চলে প্রবেশ করেছে এবং শেয়ারের দামের প্রবণতাটি বিপরীত দিকে যেতে শুরু করেছে। যখন RSI of MACD সূচকটি 15 এরও বেশি ওভারসোল্ড ব্যাপ্তি অতিক্রম করে তখন এটি একটি বিক্রয় সংকেত উত্পন্ন করে, এটি বোঝায় যে প্রবণতা বিপরীতের শেষ।
এই কৌশলটি একটি আংশিক স্টপও সেট করে, যখন RSI of MACD সূচকটি 80 এর বেশি হয় তখন আংশিক অবস্থান বিক্রি করে আংশিক মুনাফা লক করতে পারে।
সমাধানঃ
এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে অপ্টিমাইজ করা যেতে পারেঃ
এই কৌশলটির সামগ্রিক নকশা ধারণাটি পরিষ্কার, মূল ধারণাটি হল MACD বিপরীতের সাথে আরএসআই ফিল্টারিং ব্যবহার করে ক্রয়-বিক্রয় পয়েন্ট নির্ধারণ করা। প্যারামিটার অপ্টিমাইজেশন, স্টপ লস ম্যানেজমেন্ট, ঝুঁকি নিয়ন্ত্রণ ইত্যাদির মাধ্যমে এটি একটি খুব ব্যবহারিক পরিমাণযুক্ত ট্রেডিং কৌশল হিসাবে তৈরি করা যেতে পারে।
/*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
/////////////////////////////////////////////////////////////////////////////////