একটি RSI বিপরীত ট্রেডিং কৌশল

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

img

সারসংক্ষেপ

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

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

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

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

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

এই কৌশলটির সুবিধাগুলির মধ্যে রয়েছেঃ

  1. বাজারের ঘুরপাক পয়েন্টগুলি নির্ভরযোগ্যভাবে ধরা পড়ার জন্য ওভারকুপ/ওভারসোল্ড স্তরগুলি চিহ্নিত করতে RSI ব্যবহার করা একটি পরিপক্ক ট্রেডিং কৌশল।

  2. বাউলিশ/বেয়ারিশ ক্রসওভারের ব্যবহার কিছু ভুয়া সংকেতকে ফিল্টার করে এবং ট্রেডিংকে আরো নির্ভরযোগ্য করে তোলে।

  3. ট্রেন্ড ট্রেইলিং স্টপগুলি যতটা সম্ভব মুনাফা বন্ধ করে দেয়, একই সাথে প্রতি ট্রেডের ক্ষতির জন্য দ্রুত স্টপ আউট রয়েছে।

  4. স্থির TP/SL স্তরগুলি কার্যকরভাবে প্রতি বাণিজ্য ঝুঁকি নিয়ন্ত্রণ করে।

  5. সামগ্রিকভাবে সহজ এবং পরিষ্কার যুক্তি, সহজেই বোঝা এবং বাস্তবায়ন, নতুনদের জন্য উপযুক্ত।

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

এই কৌশলের ঝুঁকিগুলির মধ্যে রয়েছেঃ

  1. আরএসআই সিগন্যালগুলি মিথ্যা হতে পারে, প্যাটার্ন ব্যর্থতার উচ্চ সম্ভাবনা সহ, স্টপ লস ট্রিগারের দিকে পরিচালিত করে।

  2. ফিক্সড টিপি/এসএল বাজারের অস্থিরতার সাথে খাপ খাইয়ে নিতে পারে না, মুনাফা কমিয়ে দিতে পারে বা লোকসান হতে পারে।

  3. শতকরা অনুপাত শুধুমাত্র সর্বোচ্চ/নিম্নতম মূল্য অনুসরণ করে, খুব আক্রমণাত্মক হতে পারে লাভের পিছনে ছেড়ে।

  4. শুধুমাত্র ঐতিহাসিক তথ্যের জন্য প্যারামিটার হিসাবে অতিরিক্ত ঝুঁকি অপ্টিমাইজ করা যেতে পারে।

  5. লেনদেনের খরচ এবং স্লিপিং বাড়ানোর জন্য উচ্চ বাণিজ্য ফ্রিকোয়েন্সি

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

কৌশল উন্নত করার সম্ভাব্য উপায়:

  1. সর্বোত্তম ফলাফলের জন্য RSI পরামিতি অপ্টিমাইজ করুন।

  2. সিগন্যালের সঠিকতা বাড়াতে ফিল্টার ইন্ডিকেটর যুক্ত করুন।

  3. বাজারের অস্থিরতার ভিত্তিতে অভিযোজিত স্টপ/লাভ।

  4. লেনদেনের খরচ কমানোর জন্য লেনদেনের ফ্রিকোয়েন্সি সীমিত করুন।

  5. ট্রেড প্রতি ক্ষতি সীমাবদ্ধ করার জন্য পজিশন সাইজিং যোগ করুন।

  6. স্থিতিশীলতা পরীক্ষা করার জন্য দীর্ঘ সময়ের মধ্যে ব্যাকটেস্ট।

সিদ্ধান্ত

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


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// LOVE JOY PEACE PATIENCE KINDNESS GOODNESS FAITHFULNESS GENTLENESS SELF-CONTROL 
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// Author: © JoshuaMcGowan
// Taken from https://www.tradingview.com/script/GbZGYi6l-Adding-some-essential-components-to-a-prebuilt-RSI-strategy/
// Just updated to compile in version 4. 

//@version=4

strategy("Adding some essential components to a prebuilt RSI strategy", overlay=true)

/////////////// Component Code Start ///////////////

testStartYear = input(2011, "Backtest Start Year") 
testStartMonth = input(8, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2100, "Backtest Stop Year")
testStopMonth = input(9, "Backtest Stop Month")
testStopDay = input(29, "Backtest Stop Day")
// testStopDay = testStartDay + 1
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
    
/////////////// Component Code Stop ///////////////

// Replace RSI Component, Long/Short, and Long Signal/Short Signal conditions with your trade setup components.
///////////// RSI component /////////////

length = input( 14 )
overSold = input( 30 )
overBought = input( 70 )
price = close

vrsi = rsi(price, length)
notna = not na(vrsi)

/////////////// STRATEGY ///////////////

ts = input(99999, "Trailing Stop") / 100
tp = input(99999, "Take Profit") / 100
sl = input(99999, "Stop Loss") / 100

// Update this with your setup. 
long = notna and crossover(vrsi, overSold)
short = notna and crossunder(vrsi, overBought)

last_long = 0
last_short = 0
last_long := long ? time : nz(last_long[1])
last_short := short ? time : nz(last_short[1])

// Update this to reflect your setup. 
long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)

float last_open_long_signal = 0
float last_open_short_signal = 0
last_open_long_signal := long_signal ? open : nz(last_open_long_signal[1])
last_open_short_signal := short_signal ? open : nz(last_open_short_signal[1])

last_long_signal = 0
last_short_signal = 0
last_long_signal := long_signal ? time : nz(last_long_signal[1])
last_short_signal := short_signal ? time : nz(last_short_signal[1])

in_long_signal = last_long_signal > last_short_signal
in_short_signal = last_short_signal > last_long_signal

float last_high = 0
float last_low = 0
last_high := not in_long_signal ? na : in_long_signal and (na(last_high[1]) or high > nz(last_high[1])) ? high : nz(last_high[1])
last_low := not in_short_signal ? na : in_short_signal and (na(last_low[1]) or low < nz(last_low[1])) ? low : nz(last_low[1])

long_ts = not na(last_high) and high <= (last_high - ts) //and high >= last_open_long_signal
short_ts = not na(last_low) and low >= (last_low + ts) //and low <= last_open_short_signal

long_tp = high >= (last_open_long_signal + tp)
short_tp = low <= (last_open_short_signal - tp)

long_sl = low <= (last_open_long_signal - sl)
short_sl = high >= (last_open_short_signal + sl)

leverage = input(200, "Leverage")
long_call = last_open_long_signal - (0.8 + 0.2 * (1/leverage)) / leverage * last_open_long_signal
short_call = last_open_short_signal + (0.78 + 0.2 * (1/leverage)) / leverage * last_open_short_signal
long_call_signal = low <= long_call
short_call_signal = high >= short_call

if testPeriod()
    strategy.entry("Long", strategy.long, when=long_signal)
    strategy.entry("Short", strategy.short, when=short_signal)

    // plot(long_call, color=color.red)
    // plot(short_call, color=color.green)
    strategy.close("Long", when=long_call_signal)
    strategy.close("Short", when=short_call_signal)
    strategy.close("Long", when=long_tp)
    strategy.close("Short", when=short_tp)
    strategy.close("Long", when=long_sl)
    strategy.close("Short", when=short_sl)
    strategy.close("Long", when=long_ts)
    strategy.close("Short", when=short_ts)







আরো