মূল্যের দোলন সনাক্তকরণের জন্য থ্রি ফ্যাক্টর মডেল একটি স্বল্পমেয়াদী ট্রেডিং কৌশল যা বিচারের জন্য একাধিক কারণকে একীভূত করে। এই কৌশলটি মূল্যের দোলন সনাক্ত করতে এবং স্বল্পমেয়াদী ট্রেডিং সুযোগগুলি আবিষ্কার করতে ভলিউম অনুপাত, আরএসআই, এমএসিডি এবং সংকেত লাইনের মতো কারণগুলি বিবেচনা করে।
এই কৌশলটির মূল যুক্তি হল:
দ্রুত এমএ, ধীর এমএ, এমএসিডি এবং সিগন্যাল লাইনের মতো প্রযুক্তিগত সূচক গণনা করুন;
ভলিউম রেসিও, আরএসআই, এমএসিডি এবং সিগন্যাল লাইন সহ একাধিক ফ্যাক্টর শর্ত বিচার করুন;
মাল্টিফ্যাক্টর বিশ্লেষণের উপর ভিত্তি করে বর্তমান দামের ওসিলেশন পর্যায় এবং ক্রয়/বিক্রয় সুযোগ নিশ্চিত করুন;
লং বা শর্ট পজিশন নিন এবং লাভ এবং স্টপ লস সেট করুন;
যখন মূল্য লাভ বা স্টপ লস পায় তখন পজিশন বন্ধ করুন।
এই কৌশলটি নমনীয়ভাবে ভলিউম অনুপাত, আরএসআই, এমএসিডি এবং সিগন্যাল লাইনের মতো কারণগুলি ব্যবহার করে দামের দোলন সনাক্ত করতে এবং স্বল্পমেয়াদী সুযোগগুলি ক্যাপচার করতে। একাধিক কারণের সংমিশ্রণ একক কারণ থেকে মিথ্যা সংকেত এড়াতে সহায়তা করে এবং নির্ভুলতা উন্নত করে।
এই কৌশলটির সুবিধাঃ
এই কৌশলের ঝুঁকি:
উপরের ঝুঁকি মোকাবেলায় নিম্নলিখিত ক্ষেত্রে অপ্টিমাইজেশন করা যেতে পারেঃ
মূল অপ্টিমাইজেশান দিকঃ
গতিশীলভাবে ফ্যাক্টর ওজন অপ্টিমাইজ করুন। অভিযোজনযোগ্যতা উন্নত করার জন্য বাজারের অবস্থার উপর ভিত্তি করে ওজনগুলি সামঞ্জস্য করা যেতে পারে;
ফ্যাক্টরগুলির অভিযোজিত অপ্টিমাইজেশান অর্জনের জন্য মেশিন লার্নিং অ্যালগরিদম প্রবর্তন করুন। নিউরাল নেটওয়ার্ক এবং জেনেটিক অ্যালগরিদমের মতো অ্যালগরিদমগুলি মডেলটি প্রশিক্ষণ এবং প্যারামিটারগুলি অপ্টিমাইজ করার জন্য ব্যবহার করা যেতে পারে;
স্টপ লস কৌশল অপ্টিমাইজ করুন। সেরা সমাধান খুঁজে পেতে স্টপ লস ট্র্যাকিং এবং চলমান স্টপ লসের বিভিন্ন সমন্বয় পরীক্ষা করা যেতে পারে;
উন্নত প্রযুক্তিগত সূচক অন্তর্ভুক্ত করুন। আরো সূচক যেমন অস্থিরতা সুইং এবং গতির দোলন কারণগুলি সমৃদ্ধ করতে পারে।
মূল্য ওসিলেশন সনাক্তকরণের জন্য থ্রি ফ্যাক্টর মডেল একটি দক্ষ স্বল্পমেয়াদী ট্রেডিং কৌশল বাস্তবায়নের জন্য মূল্য ওসিলেশনগুলির বৈশিষ্ট্যগুলি পুরোপুরি ব্যবহার করে। এটি ভলিউম, আরএসআই, এমএসিডি এবং সিগন্যাল লাইনের মতো একাধিক কারণের উপর ভিত্তি করে সেরা প্রবেশ এবং প্রস্থান পয়েন্টগুলি বিচার করে। একাধিক কারণ নির্ভুলতা বাড়ায় এবং স্থিতিশীল রিটার্নের দিকে পরিচালিত করে। অভিযোজনযোগ্য অপ্টিমাইজেশনের জন্য মেশিন লার্নিংয়ের মাধ্যমে আরও অপ্টিমাইজেশন করা যেতে পারে, যার ফলে আরও ভাল কৌশল কর্মক্ষমতা হয়।
/*backtest start: 2024-01-26 00:00:00 end: 2024-02-25 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("3 10.0 Oscillator Profile Flagging", shorttitle="3 10.0 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.0) 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.0) 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.0) strategy.exit("TPS", "5P1", limit=strategy.position_avg_price - takeProfit, stop=strategy.position_avg_price + stopLoss)