
এটি একটি স্বনির্ধারিত প্রবণতা ট্র্যাকিং কৌশল যা অস্থিরতার উপর ভিত্তি করে এবং উইলিয়ামস শতাংশ পরিসীমা (উইলিয়ামস রেঞ্জ) এর সাথে মিলিত হয়। এই কৌশলটি মূল্যের অস্থিরতার পরিসীমা এবং কাস্টমাইজড কাউন্টারগুলি গণনা করে প্রবণতা বিচারের সংবেদনশীলতাকে সামঞ্জস্য করে, যা বিভিন্ন বাজারের পরিবেশে আরও ভাল অভিযোজনযোগ্যতা অর্জন করে। কৌশলটির মূলটি হ’ল দামের অস্থিরতার প্রশস্ততা পর্যবেক্ষণ করে উইলিয়ামস রেঞ্জের প্যারামিটারগুলিকে গতিশীলভাবে সামঞ্জস্য করা যাতে বাজারের প্রবণতার রূপান্তর পয়েন্টগুলি আরও সঠিকভাবে ধরা যায়।
কৌশলটি প্রথমে একটি চক্রের মধ্যে দামের ওঠানামা ((Range) এবং এর চলমান গড় ((AvgRange)) গণনা করে। মূল্যের পরিবর্তনের সাথে গড় ওঠানামার সাথে রিয়েল-টাইম সম্পর্কের তুলনা করে, দুটি কাউন্টার (TrueCount এবং TrueCount2) স্থাপন করা হয় যাতে উল্লেখযোগ্য ওঠানামার ঘনত্ব রেকর্ড করা যায়। এই কাউন্টারগুলি উইলিয়ামস সূচকের গণনা পরামিতিগুলিকে গতিশীলভাবে সামঞ্জস্য করার জন্য ব্যবহৃত হয়, যাতে কৌশলটি বাজারের ওঠানামার অবস্থার উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে তার সংবেদনশীলতা সামঞ্জস্য করতে পারে।
এটি একটি উদ্ভাবনী কৌশল যা অস্থিরতা বিশ্লেষণ এবং প্রবণতা ট্র্যাকিংয়ের সমন্বয় করে, স্ব-অনুকূলিতকরণ ব্যবস্থার মাধ্যমে কৌশলটির স্থিতিশীলতা এবং নির্ভরযোগ্যতা বাড়ায়। যদিও কিছু অন্তর্নিহিত ঝুঁকি রয়েছে, তবে যুক্তিসঙ্গত প্যারামিটার সেট এবং অপ্টিমাইজেশনের দিকনির্দেশের বাস্তবায়নের মাধ্যমে কৌশলটি বিভিন্ন বাজারের পরিবেশে স্থিতিশীল পারফরম্যান্স বজায় রাখার সম্ভাবনা রয়েছে। কৌশলটির কাঠামোগত নকশাটি আরও প্রসারিত এবং অপ্টিমাইজ করার অনুমতি দেয় এবং ভাল বিকাশের সম্ভাবনা রয়েছে।
/*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")