
এই কৌশলটি সিসিআই সূচক এবং গতিশীলতার সূচকগুলিকে আরএসআই সূচকগুলির সাথে একত্রিত করে বাজারের প্রবণতা সনাক্ত করতে ব্যবহার করে, যখন ওভারসোল্ড ওভারসোল্ড অঞ্চলে উড়ে যাওয়ার ঘটনাটি পাওয়া যায় তখন প্রবেশ করে, এবং বুলিনকে ট্রেন্ডিং এবং রিটার্নের কেন্দ্রীয় অংশে ফিরিয়ে আনার জন্য ব্যবহার করে। কৌশলটি কার্যকরভাবে ব্রেকআউট এবং রিটার্নগুলি সনাক্ত করতে পারে, ট্রেন্ডের শুরুতে প্রবেশ করে এবং বিভিন্ন জাতের ব্যবসায়ের সাথে প্যারামিটারগুলিকে অবাধে সামঞ্জস্য করতে পারে।
প্রথমত, কৌশলটি সিসিআই সূচক বা গতিশীলতার সূচকের শূন্য অক্ষের উপরে এবং শূন্য অক্ষের নীচে পেরিয়ে যাওয়ার মাধ্যমে কেনা এবং বিক্রি করার সংকেত নির্ধারণ করে। একই সাথে, আরএসআই সূচককে ওভারব্রিড ওভারসোল অঞ্চলে থাকার জন্য বলা হয়, অর্থাৎ আরএসআই 65 এর বেশি হলে ওভারব্রিড অঞ্চল এবং 35 এর নীচে হলে ওভারব্রিড অঞ্চল। এটি অ-ওভারব্রিড ওভারসোল অঞ্চলে ভুল সংকেত এড়াতে পারে।
এছাড়াও, কৌশলটি RSI এর bullish divergence (সামান্য বৃদ্ধি) এবং bearish divergence (সামান্য পতন) বিচার করতে পারে কিনা তা বেছে নিতে পারে যাতে এটি নিশ্চিত করে যে এটি একটি নির্ভরযোগ্য বিক্রয় বা বিক্রয় সংকেত দেয়।
যখন ক্রয় সিগন্যাল সিসিআই বা গতিশীলতার সাথে মিলে যায় এবং আরএসআই ওভারসোল্ড অঞ্চলে থাকে, তখন কৌশলটি বিচার করে যে পূর্ববর্তী উচ্চ এবং নিম্ন উভয়ই বুলিং বন্ডের কেন্দ্রের উপরে রয়েছে কিনা। যদি তা হয় তবে একটি ক্রয় সিগন্যাল উত্পন্ন হয়। বিপরীতভাবে, যখন বিক্রয় সিগন্যালের সাথে মিলিত হয় এবং পূর্ববর্তী উচ্চ এবং নিম্ন উভয়ই বুলিং বন্ডের কেন্দ্রের নীচে থাকে, তখন একটি বিক্রয় সিগন্যাল উত্পন্ন হয়।
এইভাবে, কৌশলটি প্রবণতা সূচক এবং ঝাঁকুনি সূচক উভয়ই ব্যবহার করে, যাতে প্রবণতা শুরু হওয়ার সময় সময়মত ধরা যায় এবং কেন্দ্রীয় বিচার ব্যবহার করে মিথ্যা ব্রেকডাউন এড়ানো যায়। যখন দামগুলি ব্রিনের বন্ড থেকে বেরিয়ে যায়, তখন কৌশলটি লাভের লকডাউন করতে এবং প্রত্যাহারের বিস্তার রোধ করতে পুরো সমতল হয়।
প্রবণতা সূচক এবং অস্থিরতার সূচকগুলির সংমিশ্রণ, প্রবণতা শুরু হওয়ার সাথে সাথে প্রবেশ করা যায় এবং অস্থির বাজারে অপ্রয়োজনীয় অবস্থানগুলি এড়ানো যায়
বুলিন বন্ডের কেন্দ্রীয় সংযোজনকে প্রবেশের সংকেত হিসাবে ব্যবহার করে কার্যকরভাবে ছদ্মবেশী ব্রেকআউটগুলি ফিল্টার করা যায়
আরএসআই সূচকের ঐতিহাসিক গতিবিধি পর্যালোচনা করুন যাতে ভুল ট্রেডিং সংকেত তৈরি না হয়
সম্পূর্ণ স্বয়ংক্রিয় লেনদেন, কোনো মানুষের হস্তক্ষেপের প্রয়োজন নেই, অ্যালগরিদমিক লেনদেনের জন্য উপযুক্ত
কৌশলগত প্যারামিটারগুলি বিভিন্ন ধরণের লেনদেনের সাথে সামঞ্জস্যপূর্ণ
স্টপ লস স্টপ সেট করুন এবং ঝুঁকি নিয়ন্ত্রণ করুন
ভুলভাবে ব্রিন-ব্যান্ড প্যারামিটার সেট করা হলে কেন্দ্রীয় বিচার ব্যর্থ হতে পারে
সূচক প্যারামিটারগুলি ভুলভাবে সেট করা হয়েছে, যার ফলে অনেকগুলি ভুল সংকেত তৈরি হতে পারে
ব্রেকডাউন ব্যর্থ হয়েছে, দাম আবারও ব্রেন্ডের কেন্দ্রস্থলে ফিরে যাওয়ার সময় সময়মত স্টপ লস প্রয়োজন
ট্রেডিং প্রজাতির কম তরলতা থাকলে, বিপর্যয় ঘটতে পারে
লেনদেনের আগে ইতিহাসের তথ্য পরীক্ষা করা উচিত যাতে কার্ভটি খারাপভাবে ফিট না হয়
ভুয়া ব্রেকডাউন এড়ানোর জন্য ট্রেডিংয়ের সময়গুলোতে নজর দিতে হবে
ব্রিন-ব্যান্ড প্যারামিটারগুলিকে অপ্টিমাইজ করা যাতে কেন্দ্রটি আরও স্থিতিশীল হয়
বিভিন্ন প্রজাতির উপর বিভিন্ন সূচক পরামিতি পরীক্ষা করা
ট্রেডিং ভলিউম কন্ট্রোল বাড়ানো এবং একক পজিশনের অত্যধিকতা এড়ানো
প্রধান ট্রেডিং সময় অপারেশন সময়সীমার বিচার বৃদ্ধি
মেশিন লার্নিং অ্যালগরিদম যুক্ত করুন যাতে সিগন্যালগুলি আরও স্মার্ট হয়
বাজারের সামগ্রিক গতিবিধি নির্ধারণের জন্য আরও তথ্যের উৎস
পরিমাপ প্যাকেজ তৈরির জন্য আরও পরিমাপ একীকরণ বৃদ্ধি
এই কৌশলটি প্রবণতা সূচক এবং ঝাঁকুনি সূচককে একত্রিত করে, যখন প্রবণতা শুরু হয় তখন বাজারে প্রবেশ করা যায়। একই সাথে বুলিন বন্ডের কেন্দ্রীয় সংমিশ্রণটি প্রবেশের সংকেত হিসাবে ব্যবহার করা হয়, যা কার্যকরভাবে মিথ্যা বিরতি এড়াতে পারে। কৌশলটি প্যারামিটারগুলি নমনীয়ভাবে সামঞ্জস্য করতে পারে, বিভিন্ন জাতের সাথে খাপ খাইয়ে নিতে পারে, রিটার্নের কার্যকারিতা অনুকূল। পরবর্তী পদক্ষেপটি প্যারামিটার সেটিং এবং মডেলের সংমিশ্রণকে অনুকূলিত করে কৌশলটিকে আরও স্থিতিশীল এবং নির্ভরযোগ্য করে তোলে, যার ফলে দীর্ঘমেয়াদী স্থিতিশীল অতিরিক্ত লাভ পাওয়া যায়।
/*backtest
start: 2022-10-18 00:00:00
end: 2023-10-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title='BroTheJo Strategy', shorttitle='BTJ', overlay=true)
// Input settings
ccimomCross = input.string('CCI', 'Entry Signal Source', options=['CCI', 'Momentum'])
ccimomLength = input.int(10, minval=1, title='CCI/Momentum Length')
useDivergence = input.bool(false, title='Find Regular Bullish/Bearish Divergence')
rsiOverbought = input.int(65, minval=1, title='RSI Overbought Level')
rsiOversold = input.int(35, minval=1, title='RSI Oversold Level')
rsiLength = input.int(14, minval=1, title='RSI Length')
plotMeanReversion = input.bool(true, 'Plot Mean Reversion Bands on the chart')
emaPeriod = input(200, title='Lookback Period (EMA)')
bandMultiplier = input.float(1.6, title='Outer Bands Multiplier')
// CCI and Momentum calculation
momLength = ccimomCross == 'Momentum' ? ccimomLength : 10
mom = close - close[momLength]
cci = ta.cci(close, ccimomLength)
ccimomCrossUp = ccimomCross == 'Momentum' ? ta.cross(mom, 0) : ta.cross(cci, 0)
ccimomCrossDown = ccimomCross == 'Momentum' ? ta.cross(0, mom) : ta.cross(0, cci)
// RSI calculation
src = close
up = ta.rma(math.max(ta.change(src), 0), rsiLength)
down = ta.rma(-math.min(ta.change(src), 0), rsiLength)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)
oversoldAgo = rsi[0] <= rsiOversold or rsi[1] <= rsiOversold or rsi[2] <= rsiOversold or rsi[3] <= rsiOversold
overboughtAgo = rsi[0] >= rsiOverbought or rsi[1] >= rsiOverbought or rsi[2] >= rsiOverbought or rsi[3] >= rsiOverbought
// Regular Divergence Conditions
bullishDivergenceCondition = rsi[0] > rsi[1] and rsi[1] < rsi[2]
bearishDivergenceCondition = rsi[0] < rsi[1] and rsi[1] > rsi[2]
// Mean Reversion Indicator
meanReversion = plotMeanReversion ? ta.ema(close, emaPeriod) : na
stdDev = plotMeanReversion ? ta.stdev(close, emaPeriod) : na
upperBand = plotMeanReversion ? meanReversion + stdDev * bandMultiplier : na
lowerBand = plotMeanReversion ? meanReversion - stdDev * bandMultiplier : na
// Entry Conditions
prevHigh = ta.highest(high, 1)
prevLow = ta.lowest(low, 1)
longEntryCondition = ccimomCrossUp and oversoldAgo and (not useDivergence or bullishDivergenceCondition) and (prevHigh >= meanReversion) and (prevLow >= meanReversion)
shortEntryCondition = ccimomCrossDown and overboughtAgo and (not useDivergence or bearishDivergenceCondition) and (prevHigh <= meanReversion) and (prevLow <= meanReversion)
// Plotting
oldLongEntryCondition = ccimomCrossUp and oversoldAgo and (not useDivergence or bullishDivergenceCondition)
oldShortEntryCondition = ccimomCrossDown and overboughtAgo and (not useDivergence or bearishDivergenceCondition)
plotshape(oldLongEntryCondition, title='BUY', style=shape.triangleup, location=location.belowbar, color=color.new(color.lime, 0), textcolor=color.new(color.white, 0), size=size.tiny)
plotshape(oldShortEntryCondition, title='SELL', style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny)
// Strategy logic
if (longEntryCondition)
strategy.entry("Buy", strategy.long)
if (shortEntryCondition)
strategy.entry("Sell", strategy.short)
// Close all open positions when outside of bands
closeAll = (high >= upperBand) or (low <= lowerBand)
if (closeAll)
strategy.close_all("Take Profit/Cut Loss")
// Plotting
plot(upperBand, title='Upper Band', color=color.fuchsia, linewidth=1)
plot(meanReversion, title='Mean', color=color.gray, linewidth=1)
plot(lowerBand, title='Lower Band', color=color.blue, linewidth=1)