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