RSI বিপরীতমুখী ব্রেকআউট কৌশল

লেখক:চাওঝাং, তারিখঃ ২০২৩-১১-০৮ ১২ঃ১১ঃ০৩
ট্যাগঃ

img

সারসংক্ষেপ

এই কৌশলটি আপেক্ষিক শক্তি সূচক (আরএসআই) সূচকের উপর ভিত্তি করে এবং ব্রেকআউট ট্রেড করার জন্য আরএসআইয়ের ওভারকপ্ট / ওভারসোল্ড নীতিগুলি ব্যবহার করে। যখন আরএসআই ওভারকপ্টের সীমা অতিক্রম করে তখন এটি দীর্ঘ হয় এবং যখন আরএসআই ওভারসোল্ডের সীমা অতিক্রম করে তখন এটি সংক্ষিপ্ত হয়। এটি একটি সাধারণ গড় বিপরীত ট্রেডিং কৌশল।

কৌশলগত যুক্তি

  1. ব্যবহারকারীর ইনপুটের ভিত্তিতে আরএসআই সূচক পরামিতিগুলি সেট করুন, যার মধ্যে আরএসআই সময়কাল, অতিরিক্ত ক্রয়ের থ্রেশহোল্ড এবং অতিরিক্ত বিক্রয়ের থ্রেশহোল্ড অন্তর্ভুক্ত রয়েছে।

  2. RSI-এর স্তরের তুলনায় তার অবস্থানের ভিত্তিতে নির্ধারণ করুন যে RSI-এর স্তরটি overbought বা oversold অঞ্চলে রয়েছে কিনা।

  3. যখন আরএসআই ওভারকোপড/ওভারসোল্ড জোন থেকে বেরিয়ে আসে এবং সংশ্লিষ্ট থ্রেশহোল্ড লাইন অতিক্রম করে, তখন বিপরীত দিকের ট্রেড করুন। উদাহরণস্বরূপ, যখন আরএসআই ওভারকোপড জোন থেকে ওভারকোপড লাইনের উপরে ভেঙে যায়, তখন বাজারকে বিপরীত বলে মনে করা হয়, এই মুহুর্তে দীর্ঘ যান। যখন আরএসআই ওভারসোল্ড জোন থেকে ওভারসোল্ড লাইনের নীচে ভেঙে যায়, তখন বাজারকে বিপরীত বলে মনে করা হয়, এখানে শর্ট যান।

  4. প্রবেশের পর, স্টপ লস সেট করুন এবং লাভের লাইন নিন। SL / TP ট্র্যাক করুন এবং যখন ট্রিগার হয় তখন অবস্থান বন্ধ করুন।

  5. কৌশলটি EMA কে ফিল্টার হিসাবে ব্যবহার করার বিকল্পও প্রদান করে। শুধুমাত্র যখন RSI সংকেত এবং EMA দিকের বিপরীতে মূল্যের ব্রেকআউট উভয়ই পূরণ করা হয় তখনই ট্রেড সংকেত গ্রহণ করুন।

  6. এটি শুধুমাত্র নির্দিষ্ট সময়সীমার মধ্যে ট্রেডিংয়ের অনুমতি দেয়। সময়সীমার শেষে পজিশন বন্ধ হয়ে যাবে।

সুবিধা বিশ্লেষণ

  • ভাল ব্যাকটেস্ট ফলাফল সহ ক্লাসিক আরএসআই ব্রেকআউট নীতি ব্যবহার করে।

  • বিভিন্ন পণ্যের জন্য উপযুক্ত নমনীয় ওভারকুপ/ওভারসোল্ড থ্রেশহোল্ড সেটিং।

  • ইচ্ছাকৃত ইএমএ ফিল্টার অত্যধিক whipsaw ট্রেড এড়ায়।

  • স্থিতিশীলতা বাড়াতে SL/TP সমর্থন করে।

  • অনুপযুক্ত সময়কাল এড়ানোর জন্য টাইম ফ্রেম ফিল্টার সমর্থন করে।

  • দ্বিপাক্ষিক মূল্য পরিবর্তনের পূর্ণ ব্যবহারের জন্য লং এবং শর্ট উভয়ই সমর্থন করে।

ঝুঁকি বিশ্লেষণ

  • আরএসআই বিভেদ প্রায়শই ঘটে, কেবলমাত্র আরএসআই-তে নির্ভর করে ভুল সংকেত তৈরি করতে পারে। প্রবণতা, চলমান গড় ইত্যাদির সাথে সংমিশ্রণের প্রয়োজন

  • ভুল থ্রেশহোল্ড সেটিং খুব ঘন ঘন বা অনুপস্থিত ট্রেডিংয়ের দিকে পরিচালিত করে।

  • খারাপ এসএল/টিপি সেটিংস অতিরিক্ত আক্রমণাত্মকতা বা অতিরিক্ত সংরক্ষণশীলতা সৃষ্টি করে।

  • ভুল EMA ফিল্টার সেটিংগুলি বৈধ ট্রেডগুলি মিস করতে পারে বা ভাল সংকেতগুলি ফিল্টার করতে পারে।

ঝুঁকি সমাধানঃ

  • বিভিন্ন পণ্যের জন্য RSI পরামিতি অপ্টিমাইজ করুন।

  • প্রবণতা সূচকগুলির সাথে একত্রিত হয়ে পার্থক্য চিহ্নিত করুন।

  • এসএল/টিপি পরামিতি পরীক্ষা এবং অপ্টিমাইজ করুন।

  • EMA পরামিতি পরীক্ষা এবং অপ্টিমাইজ করুন।

অপ্টিমাইজেশান নির্দেশাবলী

কৌশলটি নিম্নলিখিত দিকগুলিতে উন্নত করা যেতে পারেঃ

  1. সম্পূর্ণ ব্যাকটেস্টের মাধ্যমে বিভিন্ন পণ্যের জন্য সর্বোত্তম সেটিংস খুঁজে পেতে RSI পরামিতিগুলি অপ্টিমাইজ করুন।

  2. আরও শক্তিশালী সংকেত উৎপন্ন করার জন্য RSI এর সাথে সংযুক্ত বা প্রতিস্থাপিত বিভিন্ন সূচক চেষ্টা করুন, যেমন MACD, KD, Bollinger Bands ইত্যাদি।

  3. স্টপ লস অপ্টিমাইজ করুন এবং স্থিতিশীলতা বাড়ানোর জন্য মুনাফা কৌশল গ্রহণ করুন। অভিযোজিত স্টপ বা ট্রেলিং স্টপ ব্যবহার করা যেতে পারে।

  4. ইএমএ ফিল্টার প্যারামিটারগুলি অনুকূল করুন বা অন্যান্য ফিল্টারগুলির সাথে পরীক্ষামূলকভাবে উইপসাউগুলি আরও ভালভাবে এড়াতে।

  5. প্রাথমিক প্রবণতার বিরুদ্ধে ট্রেডিং এড়াতে প্রবণতা ফিল্টার মডিউল যুক্ত করুন।

  6. এই কৌশলটির জন্য সেরা ট্রেডিং সেশন খুঁজে পেতে বিভিন্ন সময়সীমা পরীক্ষা করুন।

সংক্ষিপ্তসার

আরএসআই বিপরীত ব্রেকআউট কৌশলটি ক্লাসিক ওভারবয় / ওভারসোল্ড নীতিগুলির উপর ভিত্তি করে একটি পরিষ্কার যুক্তি রয়েছে। এটি যথাযথ ঝুঁকি নিয়ন্ত্রণ ফিল্টারগুলির সাথে চরমের গড় বিপরীততা ক্যাপচার করার লক্ষ্যে। প্যারামিটার টিউনিং এবং মডুলার বর্ধনের মাধ্যমে এটিকে একটি স্থিতিশীল কৌশলতে পরিণত করার ভাল সম্ভাবনা রয়েছে। এটি লাইভ ট্রেডিংয়ে অনুকূলিতকরণ এবং প্রয়োগের জন্য মূল্যবান।


/*backtest
start: 2023-10-08 00:00:00
end: 2023-11-07 00:00:00
period: 1h
basePeriod: 15m
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/
// © REV0LUTI0N

//@version=4

strategy("RSI Strategy", overlay=true, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash)

// Strategy Backtesting
startDate  = input(timestamp("2021-10-01T00:00:00"), type = input.time, title='Backtesting Start Date')
finishDate = input(timestamp("9999-12-31T00:00:00"), type = input.time, title='Backtesting End Date')

time_cond  = true
// Strategy

Length = input(12, minval=1)
src = input(close, title="Source")
overbought = input(70, minval=1)
oversold = input(30, minval=1)
xRSI = rsi(src, Length)
    
rsinormal = input(true, title="Overbought Go Long & Oversold Go Short")
rsiflipped = input(false, title="Overbought Go Short & Oversold Go Long")

// EMA Filter
noemafilter = input(true, title="No EMA Filter")
useemafilter = input(false, title="Use EMA Filter")
ema_length = input(defval=15, minval=1, title="EMA Length")
emasrc = input(close, title="Source")
ema = ema(emasrc, ema_length)
plot(ema, "EMA", style=plot.style_linebr, color=#cad850, linewidth=2)

//Time Restriction Settings
startendtime = input("", title='Time Frame To Enter Trades')
enableclose = input(false, title='Enable Close Trade At End Of Time Frame')
timetobuy = (time(timeframe.period, startendtime))
timetoclose = na(time(timeframe.period, startendtime))

// Stop Loss & Take Profit % Based
enablesl = input(false, title='Enable Stop Loss')
enabletp = input(false, title='Enable Take Profit')
stopTick = input(5.0, title='Stop Loss %', type=input.float, step=0.1) / 100
takeTick = input(10.0, title='Take Profit %', type=input.float, step=0.1) / 100

longStop = strategy.position_avg_price * (1 - stopTick)
shortStop = strategy.position_avg_price * (1 + stopTick)
shortTake = strategy.position_avg_price * (1 - takeTick)
longTake = strategy.position_avg_price * (1 + takeTick)

plot(strategy.position_size > 0 and enablesl ? longStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Fixed SL")
plot(strategy.position_size < 0 and enablesl ? shortStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Short Fixed SL")
plot(strategy.position_size > 0 and enabletp ? longTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Long Take Profit")
plot(strategy.position_size < 0 and enabletp ? shortTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Short Take Profit")

// Alert messages
message_enterlong  = input("", title="Long Entry message")
message_entershort = input("", title="Short Entry message")
message_closelong = input("", title="Close Long message")
message_closeshort = input("", title="Close Short message")

// Strategy Execution
if (xRSI > overbought and close > ema and time_cond and timetobuy and rsinormal and useemafilter)
    strategy.entry("Long", strategy.long, alert_message = message_enterlong)
    
if (xRSI < oversold and close < ema and time_cond and timetobuy and rsinormal and useemafilter)
    strategy.entry("Short", strategy.short, alert_message = message_entershort)
    
if (xRSI < oversold and close > ema and time_cond and timetobuy and rsiflipped and useemafilter)
    strategy.entry("Long", strategy.long, alert_message = message_enterlong)
    
if (xRSI > overbought and close < ema and time_cond and timetobuy and rsiflipped and useemafilter)
    strategy.entry("Short", strategy.short, alert_message = message_entershort)
    
if (xRSI > overbought and time_cond and timetobuy and rsinormal and noemafilter)
    strategy.entry("Long", strategy.long, alert_message = message_enterlong)
    
if (xRSI < oversold and time_cond and timetobuy and rsinormal and noemafilter)
    strategy.entry("Short", strategy.short, alert_message = message_entershort)
    
if (xRSI < oversold and time_cond and timetobuy and rsiflipped and noemafilter)
    strategy.entry("Long", strategy.long, alert_message = message_enterlong)
    
if (xRSI > overbought and time_cond and timetobuy and rsiflipped and noemafilter)
    strategy.entry("Short", strategy.short, alert_message = message_entershort)
    
if strategy.position_size > 0 and timetoclose and enableclose
    strategy.close_all(alert_message = message_closelong)
if strategy.position_size < 0 and timetoclose and enableclose
    strategy.close_all(alert_message = message_closeshort)
    
if strategy.position_size > 0 and enablesl and time_cond
    strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong)
if strategy.position_size < 0 and enablesl and time_cond
    strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)
    
if strategy.position_size > 0 and enabletp and time_cond
    strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong)
if strategy.position_size < 0 and enabletp and time_cond
    strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)
    



আরো