यह रणनीति उच्च आवृत्ति व्यापार के लिए सुपरट्रेंड पिवोट पॉइंट और एडीएक्स संकेतक को जोड़ती है। सुपरट्रेंड लाइनें गतिशील रूप से मूल्य रुझानों को निर्धारित करने और व्यापार संकेत उत्पन्न करने के लिए नवीनतम समर्थन और प्रतिरोध स्तरों की गणना करती हैं। एडीएक्स संकेतक प्रवृत्ति की ताकत को मापता है और एक फ़िल्टर के रूप में कार्य करता है, केवल तभी ट्रेड करता है जब प्रवृत्ति पर्याप्त मजबूत होती है।
पीवोट समर्थन और प्रतिरोध रेखाओं की गणना करें। समापन मूल्य लें और ऊपर और नीचे एटीआर रेंज जोड़ें/घटाएं। इन रेखाओं के टूटने से रुझान रिवर्स का संकेत मिलता है।
एडीएक्स प्रवृत्ति की ताकत निर्धारित करता है। उच्च एडीएक्स मूल्य एक मजबूत प्रवृत्ति का संकेत देते हैं।
व्यापार संकेतों के लिए दोनों को मिलाएं. केवल पिवोट ब्रेक और उच्च ADX पर लंबा/लघु जाएं.
इस रणनीति के फायदे:
गतिशील सुपरट्रेंड लाइनें तेजी से ब्रेकआउट की पहचान करती हैं।
एडीएक्स फ़िल्टर रेंज-बाउंड बाजारों के दौरान झूठे संकेतों से बचाता है।
अच्छा जोखिम-लाभ अनुपात और उपयोग नियंत्रण।
इस रणनीति के जोखिमः
अंतराल की चाल सुपरट्रेंड लाइनों को अमान्य कर सकती है।
खराब एडीएक्स सीमा सेटिंग प्रदर्शन को प्रभावित करती है।
उच्च व्यापारिक आवृत्ति से लेन-देन की लागत बढ़ जाती है।
समाधान:
व्यापक ब्रेकआउट रेंज की अनुमति देने के लिए मापदंडों का अनुकूलन करें.
बेहतर ADX मानों के लिए परीक्षण करें।
व्यापार की आवृत्ति को कम करें।
सुधार के क्षेत्र:
अधिक मजबूत लाइनों के लिए एटीआर गुणक को अनुकूलित करें.
विभिन्न ADX मापदंडों का परीक्षण करें।
घाटे को सीमित करने के लिए स्टॉप-लॉस जोड़ें।
यह रणनीति सुपरट्रेंड और एडीएक्स की ताकत को जोड़ती है ताकि उच्च संभावना वाले रुझान उलट बिंदुओं की पहचान की जा सके, जो गुणवत्ता के लिए एडीएक्स द्वारा फ़िल्टर किए जाते हैं। पैरामीटर ट्यूनिंग और तंत्र समायोजन के साथ, यह एक स्थिर लाभ-उत्पादक उच्च आवृत्ति रणनीति बन सकती है।
/*backtest start: 2023-02-12 00:00:00 end: 2024-02-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("STPP20 + ADX", overlay = true) /////////////////////////// // SuperTrend + Pivot Point ////////////////////////// src = input(close, title="EMA Source") PPprd = input(defval = 2, title="Pivot Point Period", minval = 1, maxval = 50) AtrFactor=input(defval = 5, title = "ATR Factor", minval = 1, step = 0.1) AtrPd=input(defval = 20, title = "ATR Period", minval=1) float ph = na float pl = na ph := pivothigh(PPprd, PPprd) pl := pivotlow(PPprd, PPprd) float center = na center := center[1] float lastpp = ph ? ph : pl ? pl : na if lastpp if na(center) center := lastpp else center := (center * 2 + lastpp) / 3 Up = center - (AtrFactor * atr(AtrPd)) Dn = center + (AtrFactor * atr(AtrPd)) float TUp = na float TDown = na Trend = 0 TUp := close[1] > TUp[1] ? max(Up, TUp[1]) : Up TDown := close[1] < TDown[1] ? min(Dn, TDown[1]) : Dn Trend := close > TDown[1] ? 1: close < TUp[1]? -1: nz(Trend[1], 1) Trailingsl = Trend == 1 ? TUp : TDown // Lines linecolor = Trend == 1 and nz(Trend[1]) == 1 ? color.lime : Trend == -1 and nz(Trend[1]) == -1 ? color.red : na plot(Trailingsl, color = linecolor , linewidth = 2, title = "PP SuperTrend") bsignalSSPP = close > Trailingsl ssignalSSPP = close < Trailingsl /////// // ADX ////// lenADX = 14 th = 25 TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1]))) DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0 DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0 SmoothedTrueRange = 0.0 SmoothedTrueRange := nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/lenADX) + TrueRange SmoothedDirectionalMovementPlus = 0.0 SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/lenADX) + DirectionalMovementPlus SmoothedDirectionalMovementMinus = 0.0 SmoothedDirectionalMovementMinus := nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/lenADX) + DirectionalMovementMinus DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100 DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100 DX = abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100 ADX = sma(DX, lenADX) ////// // MA ///// lenMA = 21 srcMA = input(close, title="Source") offsetMA = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500) outMA = sma(srcMA, lenMA) // Buy - Sell Entries buy = bsignalSSPP and outMA < close and ADX > th sell = ssignalSSPP if (buy) // .order // Tuned version strategy.entry("Buy", strategy.long) if (sell) and (strategy.position_size > 0) strategy.order("Sell", false, when = sell)