এই কৌশলটি একটি প্রবণতা অনুসরণকারী কৌশল যা প্রবণতা দিক এবং প্রবেশের পয়েন্টগুলি সনাক্ত করতে নাদরায়া-ওয়াটসন রিগ্রেশন এবং এটিআর চ্যানেলকে একত্রিত করে। যখন দাম নিম্ন রেলটি ভেঙে যায় এবং যখন দাম উপরের রেলটি ভেঙে যায় তখন অবস্থানটি বন্ধ করে দেয়। একটি স্টপ লস প্রক্রিয়াও সেট করা হয়।
প্রথমত, এই কৌশলটি বিভিন্ন বিলম্বের সাথে দুটি রিগ্রেশন বক্ররেখা গণনা করতে নাদারায়-ওয়াটসন কার্নেল রিগ্রেশন ব্যবহার করে এবং প্রবণতা দিক নির্ধারণের জন্য দুটি বক্ররেখার ক্রসওভার তুলনা করে। বিশেষত, এটি যথাক্রমে h-period এবং h-lag-period এর রিগ্রেশন বক্ররেখা গণনা করে। যখন h-lag-period বক্ররেখা h-period বক্ররেখা অতিক্রম করে, এটি একটি দীর্ঘ সংকেত নির্দেশ করে। যখন h-lag-period বক্ররেখা h-period বক্ররেখার নীচে অতিক্রম করে, এটি একটি সংক্ষিপ্ত সংকেত নির্দেশ করে।
দ্বিতীয়ত, এই কৌশলটি এন্ট্রি পয়েন্টগুলি নির্ধারণের জন্য এটিআর চ্যানেল ব্যবহার করে। উপরের রেলটি রিগ্রেশন কার্ভ প্লাস এন-পরিয়ড এটিআর গুণক এবং নিম্ন রেলটি রিগ্রেশন কার্ভ বিয়োগ এন-পরিয়ড এটিআর গুণক। যখন দাম নিম্ন রেলটি ভেঙে যায় তখন এটি দীর্ঘ হয় এবং যখন দাম উপরের রেলটি ভেঙে যায় তখন এটি সংক্ষিপ্ত হয়।
অবশেষে, একটি স্টপ লস প্রক্রিয়া সেট করা হয়। যদি দাম স্টপ লসবারের পরপর বারগুলির প্রবেশ মূল্যের নীচে থাকে, তবে অবস্থানটি স্টপ লসের মাধ্যমে বন্ধ হয়ে যাবে।
এই কৌশলটি রিগ্রেশন বিশ্লেষণ এবং চ্যানেলের অগ্রগতিকে একত্রিত করে, যা প্রবণতা দিক এবং গতি তুলনামূলকভাবে সঠিকভাবে ক্যাপচার করতে পারে। প্রবণতা সনাক্ত করতে চলমান গড়ের মতো একক সূচক ব্যবহারের তুলনায়, এই পদ্ধতিটি মিথ্যা সংকেত হ্রাস করে এবং এইভাবে কৌশলটির স্থায়িত্ব উন্নত করে।
এছাড়াও, এটিআর চ্যানেল যুক্তিসঙ্গত প্রবেশ পয়েন্ট সেট করে, প্রবণতা বিপরীত পয়েন্টগুলির চারপাশে ভুল এন্ট্রিগুলি এড়ায়। স্টপ লস প্রক্রিয়াটি একক ক্ষতি কার্যকরভাবে নিয়ন্ত্রণ করে।
এই কৌশলটির সুবিধাগুলি হল প্রবণতা চিহ্নিত করার ক্ষমতা, তুলনামূলকভাবে সঠিক প্রবেশ এবং প্রস্থান, নিয়ন্ত্রণযোগ্য একক স্টপ লস ঝুঁকি ইত্যাদি।
এই কৌশলটির সবচেয়ে বড় ঝুঁকি হল যখন মূল্য ATR চ্যানেলটি অতিক্রম করে, তখন এটি কেবল বিপরীতমুখী বা একীকরণ করতে পারে, যা প্রবেশের পরে অনুপযুক্ত প্রবেশ বা দ্রুত স্টপ লস হতে পারে।
এছাড়াও, রিগ্রেশন কার্ভ এবং এটিআর চ্যানেল উভয়ই কিছু পরামিতি অপ্টিমাইজেশনের প্রয়োজন। অনুপযুক্ত পরামিতি সেটিংগুলি দুর্বল রিগ্রেশন বিশ্লেষণ ফলাফল বা খুব প্রশস্ত বা খুব সংকীর্ণ এটিআর ব্যাপ্তিগুলির দিকে পরিচালিত করতে পারে, যা কৌশলটির কার্যকারিতা প্রভাবিত করবে।
কৌশলটির স্থিতিশীলতা এবং নির্ভুলতা বাড়ানোর জন্য আমরা প্রবণতা এবং বিপরীত সংকেতগুলি যেমন ভলিউম, এমএসিডি ইত্যাদি বিচার করার জন্য অন্যান্য সূচকগুলির সংমিশ্রণ বিবেচনা করতে পারি।
রিগ্রেশন বিশ্লেষণে কার্নেল ফাংশনটিও সামঞ্জস্য করা যেতে পারে, যেমন ইপানেচনিকভ কার্নেল চেষ্টা করা, আরও ভাল ফিটিং প্রভাব পাওয়া যায় কিনা তা দেখতে।
এটিআর চ্যানেলের এটিআর সময়কাল এবং গুণককেও সর্বোত্তম পরামিতি সংমিশ্রণ খুঁজে পেতে পুনরাবৃত্তি পরীক্ষা এবং অপ্টিমাইজেশনের প্রয়োজন।
এই কৌশলটি ট্রেন্ডের দিকনির্দেশনা এবং শক্তি সনাক্ত করতে রিগ্রেশন বিশ্লেষণ এবং চ্যানেলের অগ্রগতি ব্যবহার করে, যুক্তিসঙ্গত পয়েন্টগুলিতে প্রবেশ করে এবং স্টপ লস সেট করে, এইভাবে কৌশল অনুসরণ করে একটি স্থিতিশীল প্রবণতা উপলব্ধি করে। এই কৌশলটির আরও পরীক্ষা এবং উন্নতির জন্য এখনও অনেক জায়গা রয়েছে।
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Custom Strategy with Stop Loss and EMA", overlay=true) src = input(close, title='Source') h = input(10, title='Lookback Window', tooltip='The number of bars used for the estimation.') r = input(10, title='Relative Weighting', tooltip='Relative weighting of time frames.') x_0 = input(50, title='Start Regression at Bar', tooltip='Bar index on which to start regression.') lag = input(2, title='Lag', tooltip='Lag for crossover detection.') stopLossBars = input(3, title='Stop Loss Bars', tooltip='Number of bars to check for stop loss condition.') emaPeriod = input(46, title='EMA Period', tooltip='Period for Exponential Moving Averages.') lenjeje = input(32, title='ATR Period', tooltip='Period to calculate upper and lower band') coef = input(2.7, title='Multiplier', tooltip='Multiplier to calculate upper and lower band') // Function for Nadaraya-Watson Kernel Regression kernel_regression1(_src, _size, _h) => _currentWeight = 0.0 _cumulativeWeight = 0.0 for i = 0 to _size + x_0 y = _src[i] w = math.pow(1 + (math.pow(i, 2) / ((math.pow(_h, 2) * 2 * r))), -r) _currentWeight += y * w _cumulativeWeight += w [_currentWeight, _cumulativeWeight] // Calculate Nadaraya-Watson Regression [currentWeight1, cumulativeWeight1] = kernel_regression1(src, h, h) yhat1 = currentWeight1 / cumulativeWeight1 [currentWeight2, cumulativeWeight2] = kernel_regression1(src, h-lag, h-lag) yhat2 = currentWeight2 / cumulativeWeight2 // Calculate Upper and Lower Bands upperjeje = yhat1 + coef * ta.atr(lenjeje) lowerjeje = yhat1 - coef * ta.atr(lenjeje) // Plot Upper and Lower Bands plot(upperjeje, color=color.rgb(0, 247, 8), title="Upper Band", linewidth=2) plot(lowerjeje, color=color.rgb(255, 0, 0), title="Lower Band", linewidth=2) // Calculate EMAs emaLow = ta.ema(low, emaPeriod) emaHigh = ta.ema(high, emaPeriod) // Plot EMAs plot(emaLow, color=color.rgb(33, 149, 243, 47), title="EMA (Low)", linewidth=2) plot(emaHigh, color=color.rgb(255, 153, 0, 45), title="EMA (High)", linewidth=2) // Long Entry Condition longCondition = low < lowerjeje strategy.entry("Long", strategy.long, when=longCondition) // Stop Loss Condition stopLossCondition = close[1] < strategy.position_avg_price and close[2] < strategy.position_avg_price and close[3] < strategy.position_avg_price strategy.close("Long", when=stopLossCondition) // Close and Reverse (Short) Condition shortCondition = high > upperjeje strategy.close("Long", when=shortCondition) strategy.entry("Short", strategy.short, when=shortCondition)