
বিপরীত গড় ব্রেকিং কৌশলটি একটি বহু-ফ্যাক্টর সমন্বিত প্রবণতা বিপরীত কৌশল। এটি চলমান গড়, ব্রিন ব্যান্ড, সিসিআই সূচক, আরএসআই সূচক ইত্যাদির মতো একাধিক প্রযুক্তিগত সূচককে একত্রিত করে, যার লক্ষ্য মূল্যের ওভারবোল্ড ওভারসোল্ড অঞ্চল থেকে বিপরীত হওয়ার সুযোগগুলি ধরা। এই কৌশলটি একই সাথে সঠিক বিচ্ছিন্নতা বিশ্লেষণের সাথে মিলিত হয় যা বর্তমান প্রবণতা পূর্বের সাথে সামঞ্জস্যপূর্ণ কিনা তা সনাক্ত করতে পারে, যাতে ব্যবসায়ের মিথ্যা ব্রেকিং এড়ানো যায়।
এই কৌশলটির মূল যুক্তি হল, যখন দাম ওভারবয় ওভারসোল এলাকা থেকে বিপরীত হয়, তখন যথাযথভাবে লোপ এবং ওভার করা হয়। বিশেষ করে, কৌশলটি চারটি দিক থেকে বিপরীত হওয়ার সুযোগকে বিচার করেঃ
সিসিআই বা গতিশীলতা সূচকটি ওভারবয় ওভারসোল্ডের সিদ্ধান্ত নেওয়ার জন্য একটি গোল্ডেন ফর্ক সিগন্যাল দেয়।
RSI সূচকটি একটি ওভার-বই ওভার-সোড অঞ্চলে রয়েছে কিনা তা নির্ধারণ করে। RSI 65 এর উপরে ওভার-বই অঞ্চল এবং 35 এর নীচে ওভার-সোড অঞ্চল হিসাবে নির্ধারণ করে।
বুলিনের ব্যান্ডটি ব্যবহার করে, দামটি স্বাভাবিক অঞ্চলের বাইরে চলে গেছে কিনা তা নির্ধারণ করুন। যখন দাম স্বাভাবিক অঞ্চলে ফিরে আসে, তখন এটি বিপরীত হতে পারে।
আরএসআই সূচকগুলির সঠিক বিচ্ছিন্নতা সনাক্ত করুন এবং মিথ্যা ব্রেকিংয়ের পিছনে তাড়া করা এড়িয়ে চলুন।
উপরের শর্ত পূরণ হলে, কৌশলটি বিপরীত দিকে প্রবেশ করবে। এবং স্টপ লস সেট করে ঝুঁকি নিয়ন্ত্রণ করবে।
এই কৌশলটির সবচেয়ে বড় সুবিধা হল যে এটি একাধিক সূচককে একত্রিত করে যা বিপরীত হওয়ার সম্ভাবনা নির্ধারণ করে এবং গড় জয়ের হার বেশি। বিশেষত, নিম্নলিখিত বিষয়গুলি মূলত রয়েছেঃ
মাল্টি ফ্যাক্টর বিচার, উচ্চ নির্ভরযোগ্যতা। কেবলমাত্র একক সূচকের উপর নির্ভর করা হবে না, ভুল বিচারের সম্ভাবনা হ্রাস করা হবে।
বিপরীতমুখী ট্রেডিংয়ে জয়ের সম্ভাবনা বেশি। প্রবণতা বিপরীতমুখী একটি নির্ভরযোগ্য ট্রেডিং পদ্ধতি।
ভঙ্গুরতা সনাক্তকরণ, ভুয়া ব্রেক-আপ হ্যাকিং এড়ানো এবং সিস্টেমিক ঝুঁকি হ্রাস করা।
ক্ষতি প্রতিরোধ ব্যবস্থা ঝুঁকি নিয়ন্ত্রণ করে। একক ক্ষতির পরিমাণ যতটা সম্ভব কমিয়ে আনা যায়।
এই কৌশলটির কিছু ঝুঁকিও রয়েছে, যার মধ্যে রয়েছেঃ
বিপরীত দিকের সময় নির্ধারণ করা যায় না। যার ফলে স্টপ ক্ষতির সূত্রপাত হয়। স্টপ ক্ষতির পরিধি যথাযথভাবে প্রসারিত করা যায়।
ব্রিন-ব্যান্ড প্যারামিটারটি ভুলভাবে সেট করা হয়েছে, যা স্বাভাবিক মূল্যকে অস্বাভাবিক হিসাবে বিবেচনা করে। এটি বাজার ওঠানামা সেট করা প্যারামিটারগুলির সাথে কাজ করা উচিত।
ট্রেডিংয়ের সংখ্যা অনেক বেশি হতে পারে। যথাযথভাবে সিসিআই এবং অন্যান্য বিচারক প্যারামিটারগুলির পরিধি প্রসারিত করুন এবং ট্রেডিংয়ের ঘনত্ব হ্রাস করুন।
মাল্টি-স্পেস ভারসাম্য বড় পার্থক্য হতে পারে। পরিমাপ প্যারামিটারগুলি যুক্তিসঙ্গত কিনা তা ঐতিহাসিক তথ্যের উপর ভিত্তি করে বিচার করা উচিত।
এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে অপ্টিমাইজ করা যেতে পারেঃ
মেশিন লার্নিং অ্যালগরিদম ব্যবহার করে স্বয়ংক্রিয়ভাবে সূচক প্যারামিটারগুলি অপ্টিমাইজ করুন।
শিলা সূচক, ব্যাপ্তি সূচক ইত্যাদির উপর ভিত্তি করে ওভারব্রেড ওভারসেলিংয়ের মাত্রা নির্ধারণ করা।
ট্রেডিং ভলিউম, ডাটা হোল্ডিং ইত্যাদির মতো ট্রেডিং ভলিউমকে বাড়িয়ে তুলুন।
ব্লকচেইন ডেটার সাথে মার্কেট সেন্টিমেন্টের মূল্যায়ন করা। কৌশলগুলির উপযুক্ততা বাড়ানো।
স্বনির্ধারিত স্টপ মেশিনের প্রবর্তন। বাজারের ওঠানামা অনুযায়ী স্টপ লেভেলের পরিবর্তন।
বিপরীত গড় ব্রেকিং কৌশলটি বিপরীত হওয়ার সম্ভাবনা নির্ধারণের জন্য একাধিক সূচক ব্যবহার করে। ঝুঁকি নিয়ন্ত্রণের পূর্বশর্তে, এর জয়ের সম্ভাবনা বেশি। এই কৌশলটি খুব শক্তিশালী ব্যবহারিক এবং আরও অপ্টিমাইজেশনের জন্য জায়গা রয়েছে। যদি প্যারামিটারগুলি সঠিকভাবে সেট করা হয় তবে এটির তুলনামূলকভাবে আদর্শ প্রভাব পাওয়া উচিত।
/*backtest
start: 2023-12-12 00:00:00
end: 2023-12-19 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title='BroTheJo Strategy', shorttitle='BTJ INV', overlay=true)
// Input settings
stopLossInPips = input.int(10, minval=0, title='Stop Loss (in Pips)')
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)
shortEntryCondition = ccimomCrossUp and oversoldAgo and (not useDivergence or bullishDivergenceCondition) and (prevHigh >= meanReversion) and (prevLow >= meanReversion)
longEntryCondition = ccimomCrossDown and overboughtAgo and (not useDivergence or bearishDivergenceCondition) and (prevHigh <= meanReversion) and (prevLow <= meanReversion)
// Plotting
oldShortEntryCondition = ccimomCrossUp and oversoldAgo and (not useDivergence or bullishDivergenceCondition)
oldLongEntryCondition = ccimomCrossDown and overboughtAgo and (not useDivergence or bearishDivergenceCondition)
plotshape(oldLongEntryCondition, title='BUY', style=shape.triangleup, text='B', 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, text='S', location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny)
// Strategy logic
if (longEntryCondition)
stopLoss = close - stopLossInPips
strategy.entry("Buy", strategy.long)
strategy.exit("exit", "Buy", stop=stopLoss)
if (shortEntryCondition)
stopLoss = close + stopLossInPips
strategy.entry("Sell", strategy.short)
strategy.exit("exit", "Sell", stop=stopLoss)
// 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)