এই কৌশলটি চরম বাজারের মন্দাগুলির পরিসংখ্যানগত বৈশিষ্ট্যগুলির উপর ভিত্তি করে। চরম বাজারের অস্থিরতার পরিমাপ করতে পরিসংখ্যানগতভাবে ড্রাউনডাউন বিশ্লেষণ করে এবং স্ট্যান্ডার্ড ডিভিয়েশন ব্যবহার করে, এটি বাজারের হ্রাস স্বাভাবিক পরিসীমা অতিক্রম করার সময় ক্রয় অবস্থানগুলি শুরু করে। মূল ধারণাটি বাজারের আতঙ্কের কারণে অত্যধিক বিক্রয়ের সুযোগগুলি ক্যাপচার করা, বাজারের অযৌক্তিকতা থেকে উদ্ভূত গাণিতিক পরিসংখ্যানগত পদ্ধতির মাধ্যমে বিনিয়োগের সুযোগগুলি সনাক্ত করা।
কৌশলটি মূল্যের সর্বাধিক ড্রডাউন এবং তাদের পরিসংখ্যানগত বৈশিষ্ট্যগুলি গণনা করার জন্য একটি রোলিং সময় উইন্ডো ব্যবহার করে। এটি প্রথমে গত 50 টি সময়ের মধ্যে সর্বোচ্চ মূল্য গণনা করে, তারপরে সর্বোচ্চ মূল্যের তুলনায় বর্তমান বন্ধের দামের ড্রডাউন শতাংশ গণনা করে। এটি তারপর ড্রডাউনের গড় এবং স্ট্যান্ডার্ড বিচ্যুতি গণনা করে, ট্রিগার থ্রেশহোল্ড হিসাবে -1 স্ট্যান্ডার্ড বিচ্যুতি সেট করে। যখন বাজারের ড্রডাউন গড় বিয়োগ মান বিচ্যুতির একটি সেট বহুগুণ অতিক্রম করে, সম্ভাব্য ওভারসোল্ড শর্তগুলি নির্দেশ করে, তখন একটি দীর্ঘ অবস্থান প্রবেশ করা হয়। অবস্থানগুলি 35 টি সময়ের পরে স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায়। কৌশলটি বাজারের ওভারসোল্ড শর্তগুলির চাক্ষুষ মূল্যায়নের জন্য ড্রডাউন বক্ররেখা এবং এক, দুই এবং তিনটি স্ট্যান্ডার্ড বিচ্যুতি স্তরও প্লট করে।
এই কৌশলটি শক্তিশালী তাত্ত্বিক ভিত্তি এবং ব্যবহারিক মূল্য সহ পরিসংখ্যানগত পদ্ধতির মাধ্যমে বাজারের ওভারসোল্ড সুযোগগুলি ক্যাপচার করে। কৌশল যৌক্তিকতা সহজ এবং সামঞ্জস্যযোগ্য পরামিতিগুলির সাথে পরিষ্কার, সম্প্রসারণ এবং অপ্টিমাইজেশনের জন্য একটি বেস কৌশল হিসাবে উপযুক্ত। কৌশল স্থিতিশীলতা এবং লাভজনকতা প্রযুক্তিগত সূচক এবং ঝুঁকি নিয়ন্ত্রণ ব্যবস্থা যুক্ত করে আরও বাড়ানো যেতে পারে। লাইভ ট্রেডিংয়ে, যথাযথ ঝুঁকি নিয়ন্ত্রণ বজায় রেখে বাজারের পরিস্থিতি এবং ট্রেডিং সরঞ্জামের বৈশিষ্ট্য বিবেচনা করে সাবধানে পরামিতি সেট করুন।
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-28 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Buy When There's Blood in the Streets Strategy", overlay=false, shorttitle="BloodInTheStreets") //This strategy identifies opportunities to buy during extreme market drawdowns based on standard deviation thresholds. //It calculates the maximum drawdown over a user-defined lookback period, identifies extreme deviations from the mean, //and triggers long entries when specific conditions are met. The position is exited after a defined number of bars. // User Inputs lookbackPeriod = input.int(50, title="Lookback Period", minval=1, tooltip="Period to calculate the highest high for drawdown") stdDevLength = input.int(50, title="Standard Deviation Length", minval=1, tooltip="Length of the period to calculate standard deviation") stdDevThreshold = input.float(-1.0, title="Standard Deviation Threshold", tooltip="Trigger level for long entry based on deviations") exitBars = input.int(35, title="Exit After (Bars)", minval=1, tooltip="Number of bars after which to exit the trade") // Drawdown Calculation peakHigh = ta.highest(high, lookbackPeriod) drawdown = ((close - peakHigh) / peakHigh) * 100 // Standard Deviation Calculation drawdownStdDev = ta.stdev(drawdown, stdDevLength) meanDrawdown = ta.sma(drawdown, stdDevLength) // Define Standard Deviation Levels stdDev1 = meanDrawdown - drawdownStdDev stdDev2 = meanDrawdown - 2 * drawdownStdDev stdDev3 = meanDrawdown - 3 * drawdownStdDev // Plot Drawdown and Levels plot(drawdown, color=color.red, linewidth=2, title="Drawdown (%)") plot(meanDrawdown, color=color.blue, linewidth=2, title="Mean Drawdown") plot(stdDev1, color=color.green, linewidth=1, title="1st Std Dev") plot(stdDev2, color=color.orange, linewidth=1, title="2nd Std Dev") plot(stdDev3, color=color.purple, linewidth=1, title="3rd Std Dev") // Entry Condition var float entryBar = na goLong = drawdown <= meanDrawdown + stdDevThreshold * drawdownStdDev if (goLong and strategy.position_size == 0) strategy.entry("Long", strategy.long) entryBar := bar_index // Exit Condition if (strategy.position_size > 0 and not na(entryBar) and bar_index - entryBar >= exitBars) strategy.close("Long")