এটি একটি অভিযোজিত প্রবণতা অনুসরণকারী কৌশল যা অস্থিরতা এবং উইলিয়ামস শতাংশ পরিসীমা সূচকগুলিকে একত্রিত করে। কৌশলটি মূল্যের পরিসীমা এবং কাস্টম কাউন্টারগুলি গণনা করে প্রবণতা নির্ধারণ সংবেদনশীলতা সামঞ্জস্য করে, বিভিন্ন বাজারের অবস্থার মধ্যে আরও ভাল অভিযোজনযোগ্যতা অর্জন করে। মূল প্রক্রিয়াটি হ'ল বাজারের প্রবণতা রূপান্তর পয়েন্টগুলি আরও সঠিকভাবে ক্যাপচার করার জন্য দামের অস্থিরতার উপর ভিত্তি করে উইলিয়ামস সূচক পরামিতিগুলিকে গতিশীলভাবে সামঞ্জস্য করা।
কৌশলটি একটি নির্দিষ্ট সময়ের মধ্যে মূল্যের পরিসীমা এবং এর চলমান গড় (AvgRange) গণনা করে শুরু হয়। গড় অস্থিরতার পরিসরের সাথে রিয়েল-টাইম মূল্য পরিবর্তনগুলির তুলনা করে, এটি উল্লেখযোগ্য অস্থিরতার ফ্রিকোয়েন্সি রেকর্ড করতে দুটি কাউন্টার (ট্রুকাউন্ট এবং ট্রুকাউন্ট 2) স্থাপন করে। এই কাউন্টারগুলি ডায়নামিকভাবে উইলিয়ামস সূচক গণনার পরামিতিগুলি সামঞ্জস্য করতে ব্যবহৃত হয়, যা কৌশলটিকে বাজারের অস্থিরতার অবস্থার উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে তার সংবেদনশীলতা সামঞ্জস্য করতে দেয়। যখন সামঞ্জস্যকৃত উইলিয়ামস সূচক মানগুলি পূর্বনির্ধারিত থ্রেশহোল্ডগুলি অতিক্রম করে তখন ক্রয় বা বিক্রয় সংকেত উত্পন্ন হয়।
এই উদ্ভাবনী কৌশলটি অস্থিরতা বিশ্লেষণ এবং প্রবণতা অনুসরণকে একত্রিত করে, অভিযোজনশীল প্রক্রিয়াগুলির মাধ্যমে কৌশল স্থিতিশীলতা এবং নির্ভরযোগ্যতা উন্নত করে। যদিও অন্তর্নিহিত ঝুঁকি রয়েছে, কৌশলটি সঠিক পরামিতি সেটিং এবং অপ্টিমাইজেশান বাস্তবায়নের মাধ্যমে বিভিন্ন বাজারের অবস্থার মধ্যে স্থিতিশীল কর্মক্ষমতা বজায় রাখতে পারে। কৌশল কাঠামো আরও সম্প্রসারণ এবং অপ্টিমাইজেশনের অনুমতি দেয়, ভাল বিকাশের সম্ভাবনা দেখায়।
/*backtest start: 2024-10-28 00:00:00 end: 2024-11-27 00:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("ASCTrend", shorttitle="ASCTrend", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100) eternalfg = input(false, title="eternal 確定") eternal = eternalfg ? 1 : 0 ASClength = input.int(title="ASC Length", minval=4, defval=10) RISK = input.int(title="RISK", minval=0, defval=3) // Custom sum function customSum(source, length) => sum = 0.0 for i = 0 to length - 1 sum := sum + source[i] sum x1 = 67 + RISK x2 = 33 - RISK Range = ta.highest(ASClength) - ta.lowest(ASClength) AvgRange = ta.sma(Range, ASClength) CountFg = math.abs(open - close) >= AvgRange * 2.0 ? 1 : 0 TrueCount = customSum(CountFg, ASClength) CountFg2 = math.abs(close[3] - close) >= AvgRange * 4.6 ? 1 : 0 TrueCount2 = customSum(CountFg2, ASClength - 3) wpr3RR = ta.wpr(3 + RISK + RISK) wpr3 = ta.wpr(3) wpr4 = ta.wpr(4) WprAbs = 100 + (TrueCount2 > 0 ? wpr4 : TrueCount > 0 ? wpr3 : wpr3RR) ASC_Trend = 0 ASC_Trend := WprAbs[eternal] < x2[eternal] ? -1 : WprAbs[eternal] > x1[eternal] ? 1 : ASC_Trend[1] if (ta.crossover(ASC_Trend, 0)) strategy.entry("Long", strategy.long) if (ta.crossunder(ASC_Trend, 0)) strategy.entry("Short", strategy.short) plotshape(ta.crossover(ASC_Trend, 0), location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small, text="B", textcolor=color.white) plotshape(ta.crossunder(ASC_Trend, 0), location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small, text="S", textcolor=color.white) alertcondition(ta.crossover(ASC_Trend, 0), title="ASC_Trend UP", message="ASC_Trend UP") alertcondition(ta.crossunder(ASC_Trend, 0), title="ASC_Trend Down", message="ASC_Trend Down")