RSI কৌশল ব্যাকটেস্টিং এবং অপ্টিমাইজেশন

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

img

সারসংক্ষেপ

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

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

এই কৌশলটি কেবলমাত্র প্রবেশ সংকেত হিসাবে আরএসআই সূচক ব্যবহার করে। যখন আরএসআই নিম্ন বিন্দু (ডিফল্ট 20) এর নীচে অতিক্রম করে তখন এটি দীর্ঘ হয় এবং যখন আরএসআই উচ্চ বিন্দু (ডিফল্ট 80) এর উপরে অতিক্রম করে তখন এটি সংক্ষিপ্ত হয়। এটি প্রতিবার স্থির পরিমাণে (ডিফল্ট 100 ডলার) ট্রেড করে এবং বাজারের অবস্থার নির্বিশেষে 1% লাভের লক্ষ্য রাখে। যদি ক্ষতি 3% এ পৌঁছায় তবে এটি বন্ধ হয়ে যায়। বাণিজ্যের ফ্রিকোয়েন্সি নিয়ন্ত্রণ করতে, কৌশলটি হারানো ব্যবসায়ের পরে 24 বার ট্রেডিং বন্ধ করে দেয়।

মূল যুক্তি হচ্ছে:

  1. অতিরিক্ত ক্রয়/অতিরিক্ত বিক্রয় নির্ধারণের জন্য RSI ব্যবহার করুন
  2. আরএসআই ২০ এর নিচে গেলে লম্বা হয়ে যান
  3. আরএসআই ৮০ এর উপরে গেলে শর্ট করুন
  4. প্রতিবার ১০০ ডলার দিয়ে ট্রেড করুন
  5. বন্ধ করার জন্য লাভ বা স্টপ লস নিন
  6. যদি ক্ষতি হয়, তাহলে ২৪ বার ট্রেডিং বন্ধ করুন

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

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

এই কৌশলটির সবচেয়ে বড় সুবিধা হল সরলতা এবং দক্ষতা।

  1. একক সূচক আরএসআই ব্যবহার করে, জটিল প্রযুক্তিগত বিশ্লেষণের প্রয়োজন নেই।
  2. পুরোপুরি যান্ত্রিক সিস্টেম, মানসিক হস্তক্ষেপ থেকে মুক্ত।
  3. বাজারের দিকনির্দেশনা না দিয়ে স্বল্পমেয়াদী বিচ্যুতি থেকে লাভ।
  4. স্টপ লস/টেক প্রফিট দিয়ে ঝুঁকি পরিচালনা করা হয়।

এটি লাভ এবং ঝুঁকি নিয়ন্ত্রণের জন্য স্টপ লস / লাভের অনুপাত বাস্তবায়ন করে, পাশাপাশি ফ্রিকোয়েন্সি হ্রাস করার জন্য বাণিজ্য স্থগিত করে। এটি ঝুঁকি হ্রাস করার সময় পুরষ্কারকে সর্বাধিক করে তোলে।

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

এই কৌশলটির প্রধান ঝুঁকিগুলি নিম্নলিখিত থেকে আসেঃ

  1. শক্তিশালী ট্রেন্ডিং মার্কেটে মুনাফা করতে অক্ষম। ট্রেন্ড অব্যাহত থাকলে আরএসআই দীর্ঘ সময়ের জন্য ওভারকোপড/ওভারসোল্ড জোনে থাকতে পারে।

  2. স্টপ লস খুব বড় হতে পারে যা অত্যধিক ক্ষতির দিকে পরিচালিত করতে পারে। বর্তমান 3% স্টপ লস 1-2% পর্যন্ত হ্রাস করা প্রয়োজন হতে পারে।

  3. উচ্চ ট্রেডিং ফ্রিকোয়েন্সি জয়ের পরে অতিরিক্ত ট্রেডিং হতে পারে।

  4. ১০০ ডলার মূলধনের ঝুঁকিতে নিয়োজিত।

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

বিশ্লেষণের ভিত্তিতে, কৌশলটি নিম্নলিখিত উপায়ে উন্নত করা যেতে পারেঃ

  1. প্রবণতা অস্পষ্ট হলে ট্রেডিং বন্ধ করার জন্য MA এর মত প্রবণতা ফিল্টার যুক্ত করুন।

  2. স্টপ লস/টেক প্রফিট রেসিও অপ্টিমাইজ করুন। স্টপ লসকে ১-২% এ কমিয়ে আনুন এবং গতিশীল লাভ নিন।

  3. ট্রেডিং ফ্রিকোয়েন্সি সীমাবদ্ধ করুন, যেমন সময়সীমার মধ্যে সর্বোচ্চ ২টি ট্রেড।

  4. মূলধনের ১০০ ডলারের পরিবর্তে মূলধনের শতাংশের উপর ভিত্তি করে আকারের লেনদেন।

  5. আরএসআই প্যারামিটার যেমন পিরিয়ড, ওভারকুপড/সোল্ড লেভেলের অপ্টিমাইজ করুন।

  6. মূলধন বৃদ্ধির সময় পজিশনের আকার বৃদ্ধি না করার জন্য পজিশনের আকার যোগ করুন।

এই অপ্টিমাইজেশানগুলির মাধ্যমে ঝুঁকি হ্রাস করা যায় এবং স্থিতিশীলতা উল্লেখযোগ্যভাবে উন্নত করা যায়।

সিদ্ধান্ত

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


/*backtest
start: 2023-11-02 00:00:00
end: 2023-11-09 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("rsi超买超卖_回测用", overlay=false, initial_capital=50000, currency=currency.USD, default_qty_type=strategy.cash)
open_pos = input.int(50000, title = "每次开单资金(usdt)")
rsi_period = input.int(14, title = "rsi周期")
rsi_line      = input.float(20.0,      title='RSI触发线',      step=0.05)
stop_rsi_top_line = input.float(70, title = "顶部rsi止损线")
stop_rsi_bottom_line = input.float(30, title = "底部rsi止损线")
stop_loss_perc = input.float(0.03, title = "止损线")
stop_profit = input.float(0.01, title = "止盈")
loss_stop_trade_k = input.int(24, title = "亏损后x根K线不做交易")


rsiParam = ta.rsi(close, rsi_period)

var int failedTimes = 0
var bool stopTrade = false

// plot(rsiParam)

if stopTrade
    failedTimes += 1
    if failedTimes == loss_stop_trade_k
        failedTimes := 0
        stopTrade := false



// 获取当前持仓方向
checkCurrentPosition() =>
    strategy.position_size > 0 ? 1 : strategy.position_size < 0 ? -1 : 0

curPosition = checkCurrentPosition()

// 当前持仓成本价
position_avg_price = strategy.position_avg_price


// 当前持单, 触达反向的rsi线,清仓
if curPosition > 0 and rsiParam >= stop_rsi_top_line
    strategy.close_all(comment = "closebuy")

if curPosition < 0 and rsiParam <= stop_rsi_bottom_line
    strategy.close_all(comment = "closesell")


// 止盈止损清仓
if curPosition > 0
    // if (position_avg_price - close) / close >= stop_loss_perc
    //     // 止损
    //     strategy.close_all(comment = "closebuy")
    //     stopTrade := true
    if (close - position_avg_price) / position_avg_price >= stop_profit
        // 止盈
        strategy.close_all(comment = "closebuy")



if curPosition < 0
    // if (close - position_avg_price) / position_avg_price >= stop_loss_perc
    //     // 止损
    //     strategy.close_all(comment = "closesell")
    //     stopTrade := true

    if (position_avg_price - close) / close >= stop_profit
        // 止盈
        strategy.close_all(comment = "closesell")


a = strategy.closedtrades.exit_bar_index(strategy.closedtrades - 1)

if bar_index == a and strategy.closedtrades.profit(strategy.closedtrades - 1) < 0
    stopTrade := true

var float openPrice = 0.0



if rsiParam <= rsi_line and stopTrade == false
	strategy.entry("long", strategy.long, open_pos / close, comment = "long")
    if curPosition == 0
        openPrice := close
    strategy.exit("long_stop", "long", limit = openPrice * (1+stop_profit), stop=openPrice * (1-stop_loss_perc), comment = "closebuy")

if rsiParam >= 100 - rsi_line and stopTrade == false
    strategy.entry("short", strategy.short, open_pos / close, comment = "short")
    if curPosition == 0
        openPrice := close
    strategy.exit("short_stop", "short", limit = openPrice * (1-stop_profit), stop=openPrice * (1+stop_loss_perc), comment = "closesell")




plot(failedTimes)

আরো