এই কৌশলটি এমএসিডি সূচক তৈরির জন্য 3 দিনের দ্রুত চলমান গড়, 10 দিনের ধীর চলমান গড় এবং 16 দিনের সংকেত মসৃণ চলমান গড় ব্যবহার করে, আরএসআই সূচক এবং ভলিউম বৈশিষ্ট্যগুলির দ্বারা পরিপূরক করে এবং বাজারের প্রবণতার অতিরিক্ত প্রসারিততা নির্ধারণের জন্য বহু-মাত্রিক কে-লাইন বৈশিষ্ট্যগুলি সেট করে, একটি পরিসীমা সুইং প্রবণতা গঠন করে এবং মুনাফা গ্রহণের জন্য দীর্ঘ বা সংক্ষিপ্ত এন্ট্রিগুলি বিপরীত করে।
এই কৌশলটি স্থানীয় ওভারকুপেড বা ওভারসোল্ড স্তর থেকে দ্রুত মূল্য বিপরীতমুখীতা ক্যাপচার করার লক্ষ্য রাখে। এটি সাধারণত 15m সময়সীমা ব্যবহার করে 0DTE SPY বিকল্পগুলির জন্য ভাল পারফর্ম করে।
এই কৌশলটি মূলত 3 দিনের দ্রুত চলমান গড় বিয়োগ 10 দিনের ধীর চলমান গড় ব্যবহার করে এমএসিডি সূচক গঠন করে, মসৃণকরণের জন্য 16 দিনের সংকেত রেখা সহ, একটি স্ট্যান্ডার্ড এমএসিডি কৌশল গঠন করে। এটি গতির বৈশিষ্ট্য নির্ধারণের জন্য ক্রয় এবং বিক্রয় পরিমাণের ভলিউম বিশ্লেষণকেও একত্রিত করে। ওভারকোপড বা ওভারসোল্ড স্তর নির্ধারণের জন্য আরএসআই সূচক চালু করা হয়। একাধিক সূচকের সংমিশ্রণের মাধ্যমে, এটি বাজারের বৈশিষ্ট্যগুলি বিচার করে এবং প্রবেশ সংকেতগুলি তৈরি করতে ব্যবধানের দোল প্রবণতাগুলিতে পরিবর্তন সনাক্ত করে।
বিশেষত, এমএসিডি লাইন এবং সিগন্যাল লাইনের মধ্যে সম্পর্ক, পাশাপাশি ঢালের পরিবর্তনগুলি পর্যবেক্ষণ করে, এটি বিপরীতমুখী সুযোগগুলি স্পট করার জন্য উত্থান ও পতনের শক্তিগুলির ebb এবং প্রবাহ নির্ধারণ করে। একই সাথে, কেনা এবং বিক্রয় ভলিউমের পরিবর্তনগুলি উত্থান এবং পতনের গতির পরিবর্তনকে প্রতিফলিত করে। অতিরিক্ত ক্রয় এবং অতিরিক্ত বিক্রয় শর্তগুলি নির্ধারণের জন্য আরএসআই সূচকের পরিবর্তনের সাথে মিলিয়ে, এই সূচকগুলি আমাদের স্থানীয় বাজার প্রোফাইল বৈশিষ্ট্য এবং সম্ভাব্য বিপরীতমুখী সময় নির্ধারণ করতে দেয়।
কৌশলটি মোট তিনটি প্রবেশ সংকেত নির্ধারণ করেঃ
লং যখন ক্রয় ভলিউম বিক্রয় ভলিউম উপর কোন সুবিধা নেই, RSI 41 নিচে যখন বৃদ্ধি, MACD সংকেত কোন উল্লেখযোগ্য বিচ্যুতি আছে;
ক্রেতা ভলিউম বিক্রয় ভলিউমের চেয়ে শক্তিশালী হলে লং, আরএসআই 45-55 পরিসীমা এবং উত্থান, এমএসিডি এবং সংকেত লাইন একযোগে সরানো;
যখন ম্যাকড প্রান্তিক সীমা অতিক্রম করে তখন শর্ট হয়।
এই তিনটি দৃশ্যপট একটি দিকনির্দেশক অতিরিক্ত সম্প্রসারণে স্থানীয়ভাবে বিস্তৃত দোলগুলি প্রতিফলিত করে, যা বিপরীত দিকের এন্ট্রিগুলির জন্য উপযুক্ত বিপরীত সময় হিসাবে বিচার করা হয়।
ড্রডাউন নিয়ন্ত্রণ এবং মুনাফা অর্জনের জন্য প্রাইফ (লিমিট অর্ডার) এবং স্টপ লস হিসাবে প্রস্থানগুলি সেট করা হয়।
এই কৌশলটি একটি স্পষ্ট বিপরীত লাভ গ্রহণের যুক্তি সহ ব্যাপ্তি এবং ওভারকুপেড / ওভারসোল্ড শর্তগুলি নির্ধারণের জন্য একাধিক সূচককে একত্রিত করে। এটি এন্ট্রিগুলিতে অতিরিক্ত বিশ্বাসের জন্য ভলিউম বিশ্লেষণ ব্যবহার করে। স্টপ লস এবং লভ্যাংশ গ্রহণও লাভের প্রাথমিক সুরক্ষার সময় এক দিকের ওভার-ট্রেডিং এড়াতে সহায়তা করে।
বিশেষ করে, সুবিধাগুলির মধ্যে রয়েছেঃ
এমএসিডি ভলিউম-ওয়েটেড ইম্পুটম অ্যাসিললেটর হিসাবে সরলীকৃত প্রযুক্তিগত বিশ্লেষণ এড়ায়;
ভলিউম শর্তগুলি প্রবেশের জন্য দোষী সাব্যস্ত করে;
RSI সম্ভাব্য বিপরীতমুখী অবস্থার চিহ্নিত করতে সাহায্য করে;
স্টপ লস এবং লাভ গ্রহণের মাধ্যমে অতিরিক্ত ড্রডাউন নিয়ন্ত্রণ করা হয় এবং কিছু মুনাফায় লক করা হয়।
জয়ের হার বাড়ানোর জন্য সূচকগুলির সংমিশ্রণ সত্ত্বেও, সমস্ত কৌশল ঝুঁকিপূর্ণ। প্রধান সমস্যাগুলি হলঃ
ভুল সংকেত, যেমন প্রাথমিক বিপরীতের পরে অব্যাহত থাকার সম্ভাবনা;
অপ্রয়োজনীয় স্টপ লস এবং লাভ নেওয়ার সেটিংগুলি অত্যধিক পরিমাণে ড্রডাউন এবং মুনাফা বন্ধ করতে ব্যর্থতা সৃষ্টি করে;
এমএ দৈর্ঘ্য, আরএসআই সময়কাল, লাভের অনুপাতের মতো পরামিতিগুলি আরও অপ্টিমাইজেশনের প্রয়োজন হতে পারে।
এই ঝুঁকিগুলি অতিরিক্ত অপ্টিমাইজেশনের মাধ্যমে হ্রাস করা যেতে পারে। পরবর্তী বিভাগে নির্দিষ্ট পদ্ধতিগুলি বিশদভাবে ব্যাখ্যা করা হয়েছে।
আরও অপ্টিমাইজেশনের সুযোগ রয়েছে, প্রধানতঃ
সর্বোত্তম ফলাফলের জন্য বিভিন্ন এমএ প্যারামিটার সমন্বয় পরীক্ষা করুন;
অপ্টিমাম ওভারকুপড/ওভারসোল্ড বিচারক খুঁজে পেতে RSI রিভার্স পিরিয়ড পরীক্ষা করুন।
মুনাফা গ্রহণ এবং ক্ষতি বন্ধের অনুপাতকে অপ্টিমাইজ করা হবে।
মেশিন লার্নিং মডেল প্রবর্তন করুন, ভুল বিচার কমাতে এবং জয়ের হার উন্নত করতে আরও তথ্য ব্যবহার করুন।
এগুলি আরও পদ্ধতিগত ব্যাকটেস্টের মাধ্যমে বাস্তবায়ন করা যেতে পারে। যেমন প্যারামিটার স্পেসগুলি প্রসারিত হয় এবং নমুনা আকারগুলি বৃদ্ধি পায়, কৌশল জয়ের হার এবং লাভজনকতাও উন্নত হবে।
এই কৌশলটি মার্কেট রেঞ্জিং বৈশিষ্ট্যগুলি নির্ধারণের জন্য এমএসিডি, আরএসআই এবং ভলিউম বিশ্লেষণকে একত্রিত করে, বিপরীতমুখী অঞ্চলগুলিতে প্রবেশগুলি পুনরুদ্ধার করার জন্য প্রবেশগুলি স্থাপন করে। যুক্তিটি স্পষ্ট, ট্রেন্ড এবং বিপরীতমুখীতা ভারসাম্যপূর্ণ। আরও অপ্টিমাইজেশনের সাথে, এটি একটি শক্তিশালী পরিমাণ কৌশল হিসাবে শক্তিশালী মুনাফা সম্ভাবনা রয়েছে। প্যারামিটার টিউনিং এবং মডেল প্রবর্তন এটিকে একটি অত্যন্ত দক্ষ অ্যালগরিদম হিসাবে উন্নত করতে পারে।
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("3 1 Oscillator Profile Flagging", shorttitle="3 1 Oscillator Profile Flagging", overlay=false) signalBiasValue = input(title="Signal Bias", defval=0.26) macdBiasValue = input(title="MACD Bias", defval=0.7) shortLookBack = input( title="Short LookBack", defval=3) longLookBack = input( title="Long LookBack", defval=6) takeProfit = input( title="Take Profit", defval=2) stopLoss = input( title="Stop Loss", defval=0.7) fast_ma = ta.sma(close, 3) slow_ma = ta.sma(close, 10) macd = fast_ma - slow_ma signal = ta.sma(macd, 16) hline(0, "Zero Line", color = color.black) buyVolume = volume*((close-low)/(high-low)) sellVolume = volume*((high-close)/(high-low)) buyVolSlope = buyVolume - buyVolume[1] sellVolSlope = sellVolume - sellVolume[1] signalSlope = ( signal - signal[1] ) macdSlope = ( macd - macd[1] ) plot(macd, color=color.blue, title="Total Volume") plot(signal, color=color.orange, title="Total Volume") plot(macdSlope, color=color.green, title="MACD Slope") plot(signalSlope, color=color.red, title="Signal Slope") intrabarRange = high - low rsi = ta.rsi(close, 14) rsiSlope = rsi - rsi[1] plot(rsiSlope, color=color.black, title="RSI Slope") getRSISlopeChange(lookBack) => j = 0 for i = 0 to lookBack if ( rsi[i] - rsi[ i + 1 ] ) > -5 j += 1 j getBuyerVolBias(lookBack) => j = 0 for i = 1 to lookBack if buyVolume[i] > sellVolume[i] j += 1 j getSellerVolBias(lookBack) => j = 0 for i = 1 to lookBack if sellVolume[i] > buyVolume[i] j += 1 j getVolBias(lookBack) => float b = 0.0 float s = 0.0 for i = 1 to lookBack b += buyVolume[i] s += sellVolume[i] b > s getSignalBuyerBias(lookBack) => j = 0 for i = 1 to lookBack if signal[i] > signalBiasValue j += 1 j getSignalSellerBias(lookBack) => j = 0 for i = 1 to lookBack if signal[i] < ( 0.0 - signalBiasValue ) j += 1 j getSignalNoBias(lookBack) => j = 0 for i = 1 to lookBack if signal[i] < signalBiasValue and signal[i] > ( 0.0 - signalBiasValue ) j += 1 j getPriceRising(lookBack) => j = 0 for i = 1 to lookBack if close[i] > close[i + 1] j += 1 j getPriceFalling(lookBack) => j = 0 for i = 1 to lookBack if close[i] < close[i + 1] j += 1 j getRangeNarrowing(lookBack) => j = 0 for i = 1 to lookBack if intrabarRange[i] < intrabarRange[i + 1] j+= 1 j getRangeBroadening(lookBack) => j = 0 for i = 1 to lookBack if intrabarRange[i] > intrabarRange[i + 1] j+= 1 j bool isNegativeSignalReversal = signalSlope < 0.0 and signalSlope[1] > 0.0 bool isNegativeMacdReversal = macdSlope < 0.0 and macdSlope[1] > 0.0 bool isPositiveSignalReversal = signalSlope > 0.0 and signalSlope[1] < 0.0 bool isPositiveMacdReversal = macdSlope > 0.0 and macdSlope[1] < 0.0 bool hasBearInversion = signalSlope > 0.0 and macdSlope < 0.0 bool hasBullInversion = signalSlope < 0.0 and macdSlope > 0.0 bool hasSignalBias = math.abs(signal) >= signalBiasValue bool hasNoSignalBias = signal < signalBiasValue and signal > ( 0.0 - signalBiasValue ) bool hasSignalBuyerBias = hasSignalBias and signal > 0.0 bool hasSignalSellerBias = hasSignalBias and signal < 0.0 bool hasPositiveMACDBias = macd > macdBiasValue bool hasNegativeMACDBias = macd < ( 0.0 - macdBiasValue ) bool hasBullAntiPattern = ta.crossunder(macd, signal) bool hasBearAntiPattern = ta.crossover(macd, signal) bool hasSignificantBuyerVolBias = buyVolume > ( sellVolume * 1.5 ) bool hasSignificantSellerVolBias = sellVolume > ( buyVolume * 1.5 ) // 202.30 Profit 55.29% 5m if ( ( getVolBias(longLookBack) == false ) and rsi <= 41 and math.abs(rsi - rsi[shortLookBack]) > 1 and hasNoSignalBias and rsiSlope > 1.5 and close > open) strategy.entry("5C1", strategy.long, qty=1) strategy.exit("TPS", "5C1", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss) // 171.70 Profit 50.22% 5m if ( getVolBias(longLookBack) == true and rsi > 45 and rsi < 55 and macdSlope > 0 and signalSlope > 0) strategy.entry("5C2", strategy.long, qty=1) strategy.exit("TPS", "5C2", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss) // 309.50 Profit 30.8% 5m 2 tp .7 sl 289 trades if ( macd > macdBiasValue and macdSlope > 0) strategy.entry("5P1", strategy.short, qty=1) strategy.exit("TPS", "5P1", limit=strategy.position_avg_price - takeProfit, stop=strategy.position_avg_price + stopLoss)