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