यह रणनीति कई चलती औसत (एमए) का उपयोग प्राथमिक ट्रेडिंग संकेतों के रूप में करती है और एक फिल्टर के रूप में औसत दिशात्मक सूचकांक (एडीएक्स) को शामिल करती है। रणनीति के पीछे मुख्य विचार तेजी से एमए, धीमी एमए और औसत एमए के बीच संबंधों की तुलना करके संभावित लंबे और छोटे अवसरों की पहचान करना है। साथ ही, एडीएक्स संकेतक का उपयोग पर्याप्त प्रवृत्ति शक्ति के साथ बाजार वातावरण को फ़िल्टर करने के लिए किया जाता है, जिससे ट्रेडिंग संकेतों की विश्वसनीयता बढ़ जाती है।
एडीएक्स फिल्टर के साथ एमए रिजेक्शन रणनीति संभावित ट्रेडिंग अवसरों की पहचान करने और निम्न-गुणवत्ता वाले ट्रेडिंग संकेतों को फ़िल्टर करने के लिए कई एमए और एडीएक्स संकेतक का उपयोग करती है। रणनीति तर्क स्पष्ट और समझने और लागू करने में आसान है। हालांकि, अभ्यास में रणनीति को लागू करते समय, बाजार के माहौल में बदलाव पर विचार करना और अनुकूलन के लिए अन्य तकनीकी संकेतकों और जोखिम प्रबंधन उपायों को जोड़ना आवश्यक है।
/*backtest start: 2024-04-01 00:00:00 end: 2024-04-30 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © gavinc745 //@version=5 strategy("MA Rejection Strategy with ADX Filter", overlay=true) // Input parameters fastMALength = input.int(10, title="Fast MA Length", minval=1) slowMALength = input.int(50, title="Slow MA Length", minval=1) averageMALength = input.int(20, title="Average MA Length", minval=1) adxLength = input.int(14, title="ADX Length", minval=1) adxThreshold = input.int(20, title="ADX Threshold", minval=1) // Calculate moving averages fastMA = ta.wma(close, fastMALength) slowMA = ta.wma(close, slowMALength) averageMA = ta.wma(close, averageMALength) // Calculate ADX manually dmPlus = high - high[1] dmMinus = low[1] - low trueRange = ta.tr dmPlusSmoothed = ta.wma(dmPlus > 0 and dmPlus > dmMinus ? dmPlus : 0, adxLength) dmMinusSmoothed = ta.wma(dmMinus > 0 and dmMinus > dmPlus ? dmMinus : 0, adxLength) trSmoothed = ta.wma(trueRange, adxLength) diPlus = dmPlusSmoothed / trSmoothed * 100 diMinus = dmMinusSmoothed / trSmoothed * 100 adx = ta.wma(math.abs(diPlus - diMinus) / (diPlus + diMinus) * 100, adxLength) // Identify potential levels potentialLongLevel = low < slowMA and close > slowMA potentialShortLevel = high > slowMA and close < slowMA // Confirm levels confirmedLongLevel = potentialLongLevel and close > fastMA confirmedShortLevel = potentialShortLevel and close < fastMA // Entry signals longEntry = confirmedLongLevel and ta.crossover(fastMA, averageMA) and adx > adxThreshold shortEntry = confirmedShortLevel and ta.crossunder(fastMA, averageMA) and adx > adxThreshold // Exit signals longExit = ta.crossunder(close, slowMA) shortExit = ta.crossover(close, slowMA) // Plot signals plotshape(longEntry, title="Long Entry", location=location.belowbar, style=shape.triangleup, size=size.small, color=color.green) plotshape(shortEntry, title="Short Entry", location=location.abovebar, style=shape.triangledown, size=size.small, color=color.red) // Plot moving averages and ADX plot(fastMA, title="Fast MA", color=color.blue) plot(slowMA, title="Slow MA", color=color.red) plot(averageMA, title="Average MA", color=color.orange) // plot(adx, title="ADX", color=color.purple) // hline(adxThreshold, title="ADX Threshold", color=color.gray, linestyle=hline.style_dashed) // Execute trades if longEntry strategy.entry("Long", strategy.long) else if longExit strategy.close("Long") if shortEntry strategy.entry("Short", strategy.short) else if shortExit strategy.close("Short")