
यह एक स्व-अनुकूली रुझान ट्रैकिंग रणनीति है जो अस्थिरता और विलियम्स प्रतिशत रेंज (विलियम्स सूचकांक) के संयोजन पर आधारित है। यह रणनीति मूल्य में उतार-चढ़ाव की सीमा और अनुकूलित काउंटर की गणना करके रुझान के निर्णय की संवेदनशीलता को समायोजित करती है, जिससे विभिन्न बाजार स्थितियों में बेहतर अनुकूलन प्राप्त होता है। रणनीति का मूल मूल्य में उतार-चढ़ाव की चौड़ाई को देखकर विलियम्स सूचकांक के मापदंडों को गतिशील रूप से समायोजित करना है, ताकि बाजार में रुझान के बदलाव को अधिक सटीक रूप से पकड़ सके।
रणनीति पहले एक चक्र के भीतर कीमतों के उतार-चढ़ाव की सीमा ((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")