এই কৌশলটি কেল্টনার চ্যানেল, সিসিআই সূচক এবং আরএসআই সূচককে ট্রেডিং ভলিউমের শর্তগুলির সাথে একত্রিত করে একটি তুলনামূলকভাবে সম্পূর্ণ ট্রেন্ড ফিল্টারিং পরিমাণগত ট্রেডিং কৌশল তৈরি করে। এটি যখন মূল অঞ্চলগুলি ভেঙে দেয়, সূচকগুলি ট্রেডিং সংকেত দেয় এবং বড় ট্রেডিং ভলিউম উপস্থিত হয় তখন এটি ক্রয় এবং বিক্রয় সংকেত উত্পন্ন করে। একই সাথে, একটি পরিষ্কার প্রবণতা ছাড়াই ট্রেডিং এড়াতে প্রবণতা বিচারের জন্য চলমান গড় ব্যবহার করা হয়।
কৌশলটি মূলত নিম্নলিখিত সূচক এবং শর্তগুলির উপর ভিত্তি করে ট্রেডিং সিদ্ধান্ত নেয়ঃ
কেল্টনার চ্যানেলঃ চ্যানেলের মধ্যে দাম আছে কিনা তা নির্ধারণের জন্য একটি নির্দিষ্ট সময়ের মধ্যে আদর্শ মূল্য এবং ATR এর উপর ভিত্তি করে উপরের এবং নীচের ব্যান্ডগুলি গণনা করুন।
সিসিআই সূচকঃ দামের পরিমাণ বেশি কিনা তা নির্ধারণ করতে ব্যবহৃত হয়।
RSI ইন্ডিকেটর: অতিরিক্ত ক্রয়/অতিরিক্ত বিক্রয়ের মাত্রা নির্ধারণে সহায়তা করে।
ট্রেডিং ভলিউমঃ নির্দিষ্ট চলমান গড় মূল্যের বিরতি প্রয়োজন।
এমএ-র সাথে ট্রেন্ড ফিল্টারঃ সামগ্রিক ট্রেন্ডের দিকনির্দেশনা নির্ধারণের জন্য এসএমএ, ইএমএ ইত্যাদি ব্যবহার করুন।
ট্রেন্ডের দিকনির্দেশের শর্ত পূরণ হলে, কেল্টনার চ্যানেল ব্যান্ড, সিসিআই এবং আরএসআই যখন দাম ভাঙে তখন ক্রয় এবং বিক্রয় সংকেত তৈরি হয় এবং ট্রেডিং ভলিউম বৃদ্ধি পায়।
কৌশলটি অনিশ্চিত সংকেতগুলি ফিল্টার করতে এবং সিদ্ধান্তগুলি আরও নির্ভরযোগ্য করার জন্য একাধিক সূচক এবং শর্তকে একত্রিত করেঃ
প্রবণতা ফিল্টার অস্পষ্ট অস্থির বাজার এড়ায়।
কেল্টনার চ্যানেলগুলি মূল পলায়নের মাত্রা সনাক্ত করে।
সিসিআই এবং আরএসআই সংকেতগুলি তুলনামূলকভাবে সঠিক।
ভলিউম বৃদ্ধি কিছু মিথ্যা breakouts প্রতিরোধ করতে সাহায্য করে।
প্রধান ঝুঁকিঃ
ভুল প্রবণতা বিচার শক্তিশালী প্রবণতা মিস করতে পারে। বিভিন্ন এমএ পরামিতি পরীক্ষা করুন।
ভুল সূচক পরামিতি মিস বা মিথ্যা সংকেত হতে পারে। পরামিতি অপ্টিমাইজ করুন।
অপ্রয়োজনীয় ভলিউম ম্যাগনিফিকেশন কিছু ভুয়া ব্রেকআউট ঝুঁকি ফেলে। বিভিন্ন গুণক পরীক্ষা করুন।
সম্ভাব্য অপ্টিমাইজেশান দিকঃ
আরও ভাল প্রবণতা ফিল্টার জন্য বিভিন্ন এমএ প্রকার এবং দৈর্ঘ্য পরীক্ষা করুন।
আরও সঠিক সংকেতের জন্য কেল্টনার চ্যানেল, সিসিআই, আরএসআই এর পরামিতিগুলি অপ্টিমাইজ করুন।
সর্বোত্তম স্তর খুঁজে পেতে বিভিন্ন ভলিউম গুণক পরীক্ষা করুন।
ট্রেড প্রতি সর্বোচ্চ ক্ষতি সীমাবদ্ধ করার জন্য স্টপ লস যোগ করার কথা বিবেচনা করুন।
সামগ্রিকভাবে, এই কৌশলটি কেল্টনার চ্যানেল, সিসিআই, আরএসআই সূচক এবং ট্রেডিং ভলিউম শর্তাবলীকে একত্রিত করে একটি তুলনামূলকভাবে সম্পূর্ণ ট্রেন্ড ফিল্টারিং পরিমাণগত ট্রেডিং কৌশল তৈরি করে। এটিতে অস্পষ্ট অস্থির বাজারগুলি এড়ানো, মূল ব্রেকআউটগুলি সনাক্ত করা, তুলনামূলকভাবে সঠিক ওভারকোপড / ওভারসোল্ড সংকেত পাওয়া এবং কিছু মিথ্যা ব্রেকআউট প্রতিরোধের মতো সুবিধা রয়েছে। অনুপযুক্ত পরামিতি সেটিং এবং অকার্যকর ভলিউম বৃহত্তরীকরণের মতো দিকগুলিতে ঝুঁকি রয়েছে। প্রবণতা ফিল্টারিং পদ্ধতি, সূচক পরামিতি, ভলিউম মাল্টিপ্লায়ার এবং স্টপ লস প্রক্রিয়া যুক্ত করার ক্ষেত্রে আরও অপ্টিমাইজেশন করা যেতে পারে।
/*backtest start: 2024-01-27 00:00:00 end: 2024-02-26 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Custom Keltner CCI Strategy with Trend Filter", overlay=true ) // Input Parameters for allowing long and short trades allowLong = input(true, title="Allow Long Trades") allowShort = input(true, title="Allow Short Trades") // Trend Filter Inputs maType = input(title="MA Type", options=["OFF", "SMA", "EMA", "SMMA", "CMA", "TMA"], defval="OFF") trendFilterMethod = input(title="Trend Filter Method", options=["OFF", "Normal", "Reversed"], defval="OFF") maLength = input(14, title="MA Length") // Other Input Parameters lengthKC = input(30, title="Keltner Channels Length") multKC = input(0.7, title="Keltner Channels Multiplier") lengthCCI = input(5, title="CCI Length") overboughtCCI = input(75, title="CCI Overbought Level") oversoldCCI = input(-75, title="CCI Oversold Level") rsiPeriod = input(30, title="RSI Period") rsiOverbought = input(60, title="RSI Overbought Level") rsiOversold = input(60, title="RSI Oversold Level") volumeMultiplier = input(0, title="Volume Multiplier", type=input.float, step=0.1, minval=0) // Define Moving Averages var float maValue = na if (maType == "SMA") maValue := sma(close, maLength) else if (maType == "EMA") maValue := ema(close, maLength) else if (maType == "SMMA") maValue := na(maValue[1]) ? sma(close, maLength) : (maValue[1] * (maLength - 1) + close) / maLength else if (maType == "CMA") maValue := na(maValue[1]) ? sma(close, maLength) : (sma(close, maLength) + (sma(close, maLength) - maValue[1])) / 2 else if (maType == "TMA") maValue := sma(sma(close, round(maLength/2)), round(maLength/2)+1) // Entry Conditions with Trend Filter longCondition = allowLong and (trendFilterMethod == "OFF" or (trendFilterMethod == "Normal" and close > maValue) or (trendFilterMethod == "Reversed" and close < maValue)) shortCondition = allowShort and (trendFilterMethod == "OFF" or (trendFilterMethod == "Normal" and close < maValue) or (trendFilterMethod == "Reversed" and close > maValue)) // Keltner Channels typicalPrice = hlc3 middleLine = sma(typicalPrice, lengthKC) range = multKC * atr(lengthKC) upperChannel = middleLine + range lowerChannel = middleLine - range // CCI cci = cci(close, lengthCCI) // RSI rsi = rsi(close, rsiPeriod) // Volume volCondition = volume > sma(volume, 50) * volumeMultiplier // Combined Entry Conditions with Trend Filter longCondition := longCondition and cci < oversoldCCI and low < lowerChannel and rsi < rsiOversold and volCondition shortCondition := shortCondition and cci > overboughtCCI and high > upperChannel and rsi > rsiOverbought and volCondition // Execute orders at the open of the new bar after conditions are met if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) // Exit Conditions strategy.close("Long", when = cci > 0) strategy.close("Short", when = cci < 0) // Plotting plot(upperChannel, color=color.red, linewidth=1) plot(lowerChannel, color=color.green, linewidth=1) hline(overboughtCCI, "Overbought", color=color.red) hline(oversoldCCI, "Oversold", color=color.green)