এই কৌশলটি গড় সত্য পরিসীমা (এটিআর) সূচক এবং গড় দিকনির্দেশ সূচক (এডিএক্স) এর উপর ভিত্তি করে একটি অভিযোজিত মূল্য চ্যানেল কৌশল। এর লক্ষ্য পার্শ্ববর্তী বাজার এবং মূল্য আন্দোলনের প্রবণতা সনাক্ত করা এবং সেই অনুযায়ী বাণিজ্য করা।
একটি নির্দিষ্ট দৈর্ঘ্যের উপর সর্বোচ্চ উচ্চ (এইচএইচ) এবং সর্বনিম্ন নিম্ন (এলএল) গণনা করুন। একই দৈর্ঘ্যের উপর এটিআরও গণনা করুন।
দামের উপরে এবং নীচে চলার উপর ভিত্তি করে +DI এবং -DI গণনা করুন। তারপর ADX গণনা করুন।
যদি ADX < 25, বাজারটি পাশের দিকে বিবেচনা করা হয়। যদি বন্ধ > উপরের চ্যানেল (HH - ATR গুণক * ATR), দীর্ঘ যান। যদি বন্ধ < নিম্ন চ্যানেল (LL + ATR গুণক * ATR), সংক্ষিপ্ত যান।
যদি ADX >= 25 এবং +DI > -DI হয়, তাহলে বাজারটি উত্থানমুখী। যদি বন্ধ > উপরের চ্যানেল হয়, তাহলে লম্বা যান।
যদি ADX >= 25 এবং +DI < -DI হয়, তাহলে বাজার bearish হয়।
প্রবেশের পর থেকে exit_length বারগুলির পরে প্রস্থান অবস্থান।
কৌশলটি বাজার অবস্থার উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে অভিযোজিত হয়, পাশের বাজারে চ্যানেল কৌশল এবং ট্রেন্ডিং বাজারে প্রবণতা অনুসরণ করে।
এটিআর এবং এডিএক্স ব্যবহার করে অভিযোজনযোগ্যতা নিশ্চিত করা হয়। এটিআর চ্যানেলের প্রস্থ সামঞ্জস্য করে, এডিএক্স প্রবণতা নির্ধারণ করে।
জোরপূর্বক বের হওয়া স্থিতিশীলতা যোগ করে।
এডিএক্স প্রায়ই মিথ্যা সংকেত উৎপন্ন করতে পারে।
দুর্বল এটিআর এবং এডিএক্স পরামিতি খারাপ পারফরম্যান্সের দিকে পরিচালিত করে।
ব্ল্যাক সোয়ান ইভেন্টের বিরুদ্ধে কার্যকরভাবে রক্ষা করতে অক্ষম।
এটিআর এবং এডিএক্সের প্যারামিটার অপ্টিমাইজ করুন অভিযোজনযোগ্যতা উন্নত করতে।
স্টপ লস যুক্ত করুন।
মিথ্যা সংকেত এড়াতে ফিল্টার যোগ করুন।
কৌশলটি বাজার অবস্থার সাথে মানিয়ে নেওয়ার জন্য সূচক এবং প্রক্রিয়াগুলিকে একত্রিত করে। তবে সূচক সীমাবদ্ধতার কারণে ভুল মূল্যায়ন ঘটতে পারে। পরামিতি এবং ঝুঁকি নিয়ন্ত্রণের ভবিষ্যতের অপ্টিমাইজেশন।
/*backtest start: 2023-11-03 00:00:00 end: 2023-12-03 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Adaptive Price Channel Strategy", overlay=true) length = input(20, title="Length") exit_length = input(10, title="Exit After X Periods") atr_multiplier = input(3.2, title="ATR Multiplier") startDate = input(defval = timestamp("2019-01-15T08:15:15+00:00"), title = "Start Date") endDate = input(defval = timestamp("2033-04-01T08:15:00+00:00"), title = "End Date") hh = ta.highest(high, length) ll = ta.lowest(low, length) atr = ta.atr(length) // calculate +DI and -DI upMove = high - high[1] downMove = low[1] - low plusDM = na(upMove[1]) ? na : (upMove > downMove and upMove > 0 ? upMove : 0) minusDM = na(downMove[1]) ? na : (downMove > upMove and downMove > 0 ? downMove : 0) plusDI = ta.rma(plusDM, length) / atr * 100 minusDI = ta.rma(minusDM, length) / atr * 100 // calculate ADX dx = math.abs(plusDI - minusDI) / (plusDI + minusDI) * 100 adx = ta.rma(dx, length) var int barSinceEntry = na if (not na(close[length]) ) if (adx < 25) // Sideways market if (close > hh - atr_multiplier * atr) strategy.entry("PChLE", strategy.long, comment="PChLE") barSinceEntry := 0 else if (close < ll + atr_multiplier * atr) strategy.entry("PChSE", strategy.short, comment="PChSE") barSinceEntry := 0 else if (adx >= 25 and plusDI > minusDI) // Bullish market if (close > hh - atr_multiplier * atr) strategy.entry("PChLE", strategy.long, comment="PChLE") barSinceEntry := 0 else if (adx >= 25 and plusDI < minusDI) // Bearish market if (close < ll + atr_multiplier * atr) strategy.entry("PChSE", strategy.short, comment="PChSE") barSinceEntry := 0 if (na(barSinceEntry)) barSinceEntry := barSinceEntry[1] + 1 else if (barSinceEntry >= exit_length) strategy.close("PChLE") strategy.close("PChSE") barSinceEntry := na plot(hh, title="Highest High", color=color.green, linewidth=2) plot(ll, title="Lowest Low", color=color.red, linewidth=2)