মাল্টি-লেভেল RSI রিগ্রেশন ট্রেডিং কৌশল এবং গতিশীল অস্থিরতা সমন্বয়

RSI、PIVOT
সৃষ্টির তারিখ: 2024-06-21 14:16:31 অবশেষে সংশোধন করুন: 2024-06-21 14:16:31
অনুলিপি: 0 ক্লিকের সংখ্যা: 567
1
ফোকাস
1617
অনুসারী

মাল্টি-লেভেল RSI রিগ্রেশন ট্রেডিং কৌশল এবং গতিশীল অস্থিরতা সমন্বয়

ওভারভিউ

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

কৌশল নীতি

  1. ভর্তির শর্ত:

    • 20 পিরিয়ড RSI ((RSI20) ব্যবহার করে
    • একাধিক আরএসআই থ্রেশহোল্ড সেট করুন (৩৫/৬৫, ৩০/৭০, ২৫/৭৫, ২০/৮০) এবং সংশ্লিষ্ট ওঠানামা থ্রেশহোল্ড
    • যখন RSI একটি নির্দিষ্ট থ্রেশহোল্ডে পৌঁছে যায় এবং বর্তমান K-লাইন সত্তার আকারটি সংশ্লিষ্ট ওঠানামার থ্রেশহোল্ডকে অতিক্রম করে তখন একটি প্রবেশের সংকেত দেওয়া হয়
    • অতিরিক্ত শর্তঃ দামকে সাম্প্রতিক উচ্চতা/নিম্নতা সমর্থনকারী স্তরের একটি নির্দিষ্ট শতাংশ অতিক্রম করতে হবে
  2. প্যাকেজিং ব্যবস্থাঃ

    • সর্বোচ্চ ৫ টি প্রবেশের অনুমতি দেওয়া হয়েছে ((প্রাথমিক প্রবেশ + ৪ টি আমানত)
    • প্রতিটি আমানতের জন্য আরও কঠোর আরএসআই এবং অস্থিরতার শর্ত পূরণ করতে হবে
  3. খেলার ধরনঃ

    • পাঁচটি স্তরের স্টপ সেট করুন
    • স্টপ পয়েন্টটি প্রবেশের সময় সমর্থন/প্রতিরোধের গতিশীলতার উপর ভিত্তি করে গণনা করা হয়
    • ক্রমবর্ধমান হোল্ডিংয়ের সাথে সাথে স্টপ-আউট লক্ষ্যমাত্রা হ্রাস পেয়েছে
  4. ঝুঁকি নিয়ন্ত্রণঃ

    • শতকরা ঝুঁকি মডেল ব্যবহার করে, প্রতিটি লেনদেনের ঝুঁকি অ্যাকাউন্টের মোট মূল্যের 20% হিসাবে স্থির করা হয়
    • সর্বাধিক একযোগে পাঁচটি পজিশনের অনুমতি দেওয়া হয়েছে, যা সামগ্রিক ঝুঁকিতে সীমাবদ্ধ

কৌশলগত সুবিধা

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

  2. ডায়নামিক স্টপঃ সমর্থন/প্রতিরোধের ভিত্তিতে গণনা করা স্টপ, যা বাজারের কাঠামোর সাথে খাপ খাইয়ে নিতে পারে, লাভ রক্ষা করে এবং তাড়াতাড়ি ছাড় দেয় না।

  3. পিরামিড পজিশনিংঃ ট্রেন্ড চলতে থাকলে পজিশনিং বাড়িয়ে লাভের সম্ভাবনা উল্লেখযোগ্যভাবে বৃদ্ধি করা যায়।

  4. ঝুঁকি ব্যবস্থাপনাঃ স্থির শতাংশ ঝুঁকি এবং সর্বোচ্চ পজিশনের সীমাবদ্ধতা, প্রতিটি লেনদেন এবং সামগ্রিক ঝুঁকি কার্যকরভাবে নিয়ন্ত্রণ করে।

  5. নমনীয়তা: বিপুল পরিমাণে পরিবর্তনযোগ্য প্যারামিটারগুলি কৌশলকে বিভিন্ন বাজার পরিবেশ এবং লেনদেনের জাতের সাথে খাপ খাইয়ে নিতে সক্ষম করে।

  6. গড় মূল্যের রিটার্ন + ট্রেন্ড ট্র্যাকিং: গড় মূল্যের রিটার্ন এবং ট্রেন্ড ট্র্যাকিংয়ের সুবিধা একত্রিত করে, এটি স্বল্পমেয়াদী বিপর্যয়গুলিকে ধরা এবং বড় প্রবণতা মিস করতে পারে না।

কৌশলগত ঝুঁকি

  1. অত্যধিক লেনদেনঃ বাজারের উচ্চ অস্থিরতার কারণে লেনদেনের সংকেত ঘন ঘন ট্রিগার হতে পারে, যার ফলে লেনদেনের জন্য অতিরিক্ত ফি নেওয়া হয়।

  2. ভুয়া ব্রেকডাউনঃ বাজারে ক্ষণিকের চরম ওঠানামা হওয়ার পর দ্রুত রিডাউন হতে পারে, যা ভুল সংকেত দেয়।

  3. ক্রমাগত ক্ষতিঃ যদি বাজার একদিকে চলতে থাকে, তবে একাধিকবার পজিশনিংয়ের পরে বড় ক্ষতি হতে পারে।

  4. প্যারামিটার সংবেদনশীলতা: প্যারামিটার সেটিংয়ের প্রতি কৌশলটির কর্মক্ষমতা অত্যন্ত সংবেদনশীল হতে পারে, যার ফলে ওভারফিট হওয়ার ঝুঁকি রয়েছে।

  5. স্লাইড পয়েন্ট প্রভাবঃ প্রচণ্ড অস্থিরতার সময়ে, কৌশলটির কার্যকারিতা প্রভাবিত করে এমন গুরুতর স্লাইড পয়েন্টের সম্মুখীন হতে পারে।

  6. বাজার পরিস্থিতির উপর নির্ভরশীলতাঃ কিছু বাজার পরিস্থিতিতে কৌশলটি দুর্বল হতে পারে, যেমন কম অস্থিরতা বা শক্তিশালী প্রবণতা বাজার।

কৌশল অপ্টিমাইজেশনের দিকনির্দেশনা

  1. ডায়নামিক প্যারামিটার অ্যাডজাস্টমেন্টঃ বাজারের অবস্থার উপর ভিত্তি করে আরএসআই এবং ওঠানামা হ্রাসের গতিশীলতার সাথে সামঞ্জস্য করার জন্য একটি স্ব-অনুকূলিতকরণ ব্যবস্থা চালু করা হয়েছে।

  2. মাল্টি টাইম সাইকেল অ্যানালিসিসঃ দীর্ঘমেয়াদী বাজার প্রবণতা মূল্যায়নের সাথে মিলিত, প্রবেশের গুণমান উন্নত করা।

  3. স্টপ লস অপ্টিমাইজেশনঃ ট্র্যাকিং স্টপ বা ATR-ভিত্তিক গতিশীল স্টপ লস যুক্ত করুন, ঝুঁকি আরও নিয়ন্ত্রণ করুন।

  4. মার্কেট স্ট্যাটাস ফিল্টারঃ প্রবণতা শক্তি, ওঠানামা চক্রের মতো ফিল্টার শর্তগুলি যুক্ত করুন, যাতে অপ্রয়োজনীয় বাজার পরিবেশে লেনদেন এড়ানো যায়।

  5. তহবিল ব্যবস্থাপনা অপ্টিমাইজেশানঃ আরো সুনির্দিষ্ট পজিশন ব্যবস্থাপনা, যেমন বিভিন্ন স্তরের সংকেত অনুযায়ী লেনদেনের আকার সংশোধন করা।

  6. মেশিন লার্নিং ইন্টিগ্রেশনঃ মেশিন লার্নিং অ্যালগরিদম ব্যবহার করে প্যারামিটার নির্বাচন এবং সংকেত উত্পাদন প্রক্রিয়া অপ্টিমাইজ করুন।

  7. প্রাসঙ্গিকতা বিশ্লেষণঃ অন্যান্য সম্পদের সাথে প্রাসঙ্গিকতা বিশ্লেষণ যোগ করুন, কৌশলটির স্থায়িত্ব এবং বৈচিত্র্য বাড়ান।

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Retorno_Pivots_5min_Novo_v3.3')

// Input variables
bars_left1 = input(1, title = "Entry - Pivot Left Bars")
bars_right1 = input(1, title = "Entry - Pivot Right Bars")
rsi20_longentry0 = input(35, title = "Entry 1 - RSI20 Long")
rsi20_shortentry0 = input(65, title = "Entry 1 - RSI20 Short")
bar_size_entry0 = input.float(1, title="Entry 1 - Bar Size")
rsi20_longentry1 = input(30, title = "Entry 2 - RSI20 Long")
rsi20_shortentry1 = input(70, title = "Entry 2 - RSI20 Short")
bar_size_entry1 = input.float(0.8, title="Entry 2 - Bar Size")
rsi20_longentry2 = input(25, title = "Entry 3 - RSI20 Long")
rsi20_shortentry2 = input(75, title = "Entry 3 - RSI20 Short")
bar_size_entry2 = input.float(0.7, title="Entry 3 - Bar Size")
rsi20_longentry3 = input(20, title = "Entry 4 - RSI20 Long")
rsi20_shortentry3 = input(80, title = "Entry 4 - RSI20 Short")
bar_size_entry3 = input.float(0.5, title="Entry 4 - Bar Size")
limit_perc1 = input.float(0.60, title="Profit Range 1")
limit_perc2 = input.float(0.40, title="Profit Range 2")
limit_perc3 = input.float(0.20, title="Profit Range 3")
limit_perc4 = input.float(0.00, title="Profit Range 4")
limit_perc5 = input.float(0.00, title="Profit Range 5")
minimum_pivot_distance = input.float(0, title="Minimum Pivot Distance %")
barsize_1h_input = input(288, title="Highest Bar Lookback")
rsi20 = ta.rsi(close, 20)
rsi200 = ta.rsi(close, 200)
Pivot_High_Last1 = ta.valuewhen(ta.pivothigh(high, bars_left1, bars_right1), ta.pivothigh(high, bars_left1, bars_right1), 0)
Pivot_Low_Last1 = ta.valuewhen(ta.pivotlow(low, bars_left1, bars_right1), ta.pivotlow(low, bars_left1, bars_right1), 0)

barsize = math.abs(close - open)
barsize_1h = ta.highest(barsize, barsize_1h_input)

Bar0Long = rsi20 < rsi20_longentry0 and barsize >= (barsize_1h * bar_size_entry0)
Bar1Long = rsi20 < rsi20_longentry1 and barsize >= (barsize_1h * bar_size_entry1)
Bar2Long = rsi20 < rsi20_longentry2 and barsize >= (barsize_1h * bar_size_entry2)
Bar3Long = rsi20 < rsi20_longentry3 and barsize >= (barsize_1h * bar_size_entry3)

// Long Entries
Long_Entry1 = strategy.opentrades == 0 and rsi20 < rsi20[1] and ((rsi20 < rsi20_longentry0 and barsize >= (barsize_1h * bar_size_entry0)) or (rsi20 < rsi20_longentry1 and barsize >= (barsize_1h * bar_size_entry1)) or (rsi20 < rsi20_longentry2 and barsize >= (barsize_1h * bar_size_entry2)) or (rsi20 < rsi20_longentry3 and barsize >= (barsize_1h * bar_size_entry3))) and close < (Pivot_Low_Last1 * (1 - (minimum_pivot_distance / 100)))
Long_Entry2 = strategy.opentrades == 1 and strategy.position_size > 0 and rsi20 < rsi20[1] and (Bar0Long or Bar1Long or Bar2Long or Bar3Long)
Long_Entry3 = strategy.opentrades == 2 and strategy.position_size > 0 and rsi20 < rsi20[1] and (Bar0Long or Bar1Long or Bar2Long or Bar3Long)
Long_Entry4 = strategy.opentrades == 3 and strategy.position_size > 0 and rsi20 < rsi20[1] and (Bar0Long or Bar1Long or Bar2Long or Bar3Long)
Long_Entry5 = strategy.opentrades == 4 and strategy.position_size > 0 and rsi20 < rsi20[1] and (Bar0Long or Bar1Long or Bar2Long or Bar3Long)
if Long_Entry1 or Long_Entry2 or Long_Entry3 or Long_Entry4 or Long_Entry5
    strategy.entry("Long", strategy.long, comment = "ENTER-LONG_BINANCE-FUTURES_BTCBUSD_Bot-BTC-1min_1M_970d2ee265390c27")
// Longs Exits
Long_Exit1 = strategy.opentrades == 1 and close > (strategy.position_avg_price + ((ta.valuewhen(strategy.opentrades == 0, Pivot_Low_Last1, 0) - (strategy.position_avg_price)) * limit_perc1))
Long_Exit2 = strategy.opentrades == 2 and close > (strategy.position_avg_price + ((ta.valuewhen(strategy.opentrades == 0, Pivot_Low_Last1, 0) - (strategy.position_avg_price)) * limit_perc2))
Long_Exit3 = strategy.opentrades == 3 and close > (strategy.position_avg_price + ((ta.valuewhen(strategy.opentrades == 0, Pivot_Low_Last1, 0) - (strategy.position_avg_price)) * limit_perc3))
Long_Exit4 = strategy.opentrades == 4 and close > (strategy.position_avg_price + ((ta.valuewhen(strategy.opentrades == 0, Pivot_Low_Last1, 0) - (strategy.position_avg_price)) * limit_perc4))
Long_Exit5 = strategy.opentrades == 5 and close > (strategy.position_avg_price + ((ta.valuewhen(strategy.opentrades == 0, Pivot_Low_Last1, 0) - (strategy.position_avg_price)) * limit_perc5))
if Long_Exit1 or Long_Exit2 or Long_Exit3 or Long_Exit4 or Long_Exit5
    strategy.close("Long", comment = "EXIT-LONG_BINANCE-FUTURES_BTCBUSD_Bot-BTC-1min_1M_970d2ee265390c27")

Bar0Short = rsi20 > rsi20_shortentry0 and barsize >= (barsize_1h * bar_size_entry0)
Bar1Short = rsi20 > rsi20_shortentry1 and barsize >= (barsize_1h * bar_size_entry1)
Bar2Short = rsi20 > rsi20_shortentry2 and barsize >= (barsize_1h * bar_size_entry2)
Bar3Short = rsi20 > rsi20_shortentry3 and barsize >= (barsize_1h * bar_size_entry3)

// Short Entries
Short_Entry1 = strategy.opentrades == 0 and rsi20 > rsi20[1] and ((rsi20 > rsi20_shortentry0 and barsize >= (barsize_1h * bar_size_entry0)) or (rsi20 > rsi20_shortentry1 and barsize >= (barsize_1h * bar_size_entry1)) or (rsi20 > rsi20_shortentry2 and barsize >= (barsize_1h * bar_size_entry2)) or (rsi20 > rsi20_shortentry2 and barsize >= (barsize_1h * bar_size_entry2))) and close > (Pivot_High_Last1 * (1 + (minimum_pivot_distance / 100)))
Short_Entry2 = strategy.opentrades == 1 and strategy.position_size < 0 and rsi20 > rsi20[1] and (Bar0Short or Bar1Short or Bar2Short or Bar3Short)
Short_Entry3 = strategy.opentrades == 2 and strategy.position_size < 0 and rsi20 > rsi20[1] and (Bar0Short or Bar1Short or Bar2Short or Bar3Short)
Short_Entry4 = strategy.opentrades == 3 and strategy.position_size < 0 and rsi20 > rsi20[1] and (Bar0Short or Bar1Short or Bar2Short or Bar3Short)
Short_Entry5 = strategy.opentrades == 4 and strategy.position_size < 0 and rsi20 > rsi20[1] and (Bar0Short or Bar1Short or Bar2Short or Bar3Short)
if Short_Entry1 or Short_Entry2 or Short_Entry3 or Short_Entry4 or Short_Entry5
    strategy.entry("Short", strategy.short, comment = "ENTER-SHORT_BINANCE-FUTURES_BTCBUSD_Bot-BTC-1min_1M_970d2ee265390c27")
// Short Exits
Short_Exit1 = strategy.opentrades == 1 and close < (strategy.position_avg_price - ((strategy.position_avg_price - ta.valuewhen(strategy.opentrades == 0, Pivot_High_Last1, 0)) * limit_perc1))
Short_Exit2 = strategy.opentrades == 2 and close < (strategy.position_avg_price - ((strategy.position_avg_price - ta.valuewhen(strategy.opentrades == 0, Pivot_High_Last1, 0)) * limit_perc2))
Short_Exit3 = strategy.opentrades == 3 and close < (strategy.position_avg_price - ((strategy.position_avg_price - ta.valuewhen(strategy.opentrades == 0, Pivot_High_Last1, 0)) * limit_perc3))
Short_Exit4 = strategy.opentrades == 4 and close < (strategy.position_avg_price - ((strategy.position_avg_price - ta.valuewhen(strategy.opentrades == 0, Pivot_High_Last1, 0)) * limit_perc4))
Short_Exit5 = strategy.opentrades == 5 and close < (strategy.position_avg_price - ((strategy.position_avg_price - ta.valuewhen(strategy.opentrades == 0, Pivot_High_Last1, 0)) * limit_perc5))
if Short_Exit1 or Short_Exit2 or Short_Exit3 or Short_Exit4 or Short_Exit5
    strategy.close("Short", comment = "EXIT-SHORT_BINANCE-FUTURES_BTCBUSD_Bot-BTC-1min_1M_970d2ee265390c27")

// Plots
plot(rsi20, color=color.new(#fbff00, 0), linewidth=2)
plot(((strategy.position_avg_price + ((ta.valuewhen(strategy.opentrades == 0, Pivot_Low_Last1, 0) - (strategy.position_avg_price)) * limit_perc1))), color=color.new(#00ff2a, 0), linewidth=2)
plot(((strategy.position_avg_price + ((ta.valuewhen(strategy.opentrades == 0, Pivot_Low_Last1, 0) - (strategy.position_avg_price)) * limit_perc2))), color=color.new(#00ff2a, 50), linewidth=2)
plot(((strategy.position_avg_price + ((ta.valuewhen(strategy.opentrades == 0, Pivot_Low_Last1, 0) - (strategy.position_avg_price)) * limit_perc3))), color=color.new(#00ff2a, 80), linewidth=2)
plot(((strategy.position_avg_price + ((ta.valuewhen(strategy.opentrades == 0, Pivot_Low_Last1, 0) - (strategy.position_avg_price)) * limit_perc4))), color=color.new(#00ff2a, 100), linewidth=2)
plot((strategy.position_avg_price - ((strategy.position_avg_price - ta.valuewhen(strategy.opentrades == 0, Pivot_High_Last1, 0)) * limit_perc1)), color=color.new(#ff0000, 0), linewidth=2)
plot((strategy.position_avg_price - ((strategy.position_avg_price - ta.valuewhen(strategy.opentrades == 0, Pivot_High_Last1, 0)) * limit_perc2)), color=color.new(#ff0000, 50), linewidth=2)
plot((strategy.position_avg_price - ((strategy.position_avg_price - ta.valuewhen(strategy.opentrades == 0, Pivot_High_Last1, 0)) * limit_perc3)), color=color.new(#ff0000, 80), linewidth=2)
plot((strategy.position_avg_price - ((strategy.position_avg_price - ta.valuewhen(strategy.opentrades == 0, Pivot_High_Last1, 0)) * limit_perc4)), color=color.new(#ff0000, 100), linewidth=2)
plot(strategy.position_avg_price, color=color.new(#ffc400, 0), linewidth=2)
plot(strategy.opentrades * (strategy.position_size / math.abs(strategy.position_size)), color=color.new(#ff00bb, 0), linewidth=2)
plot(((barsize / barsize_1h) * 100), color=color.new(#0000ff, 0), linewidth=2)