यह रणनीति ट्रेडिंग निर्णयों के लिए मूविंग एवरेज (एमए) और गति संकेतक की ढलान का उपयोग करती है। यह सेट सीमाओं के साथ एमए ढलान और गति ढलान की तुलना करता है, और जब दोनों ढलान सीमाओं से अधिक होते हैं तो ट्रेडिंग संकेत उत्पन्न करता है। इस रणनीति में एक कम अस्थिरता फ़िल्टर भी होता है जो बाजार की अस्थिरता कम होने पर संकेत उत्पन्न करने के लिए एक अलग एमए का उपयोग करता है।
इस रणनीति का मूल दो ढलान वक्रों की तुलना में निहित है। सबसे पहले, यह एमए और गति संकेतक की ढलान की गणना करता है। ढलान वक्र की परिवर्तन दर और दिशा को दर्शाता है। फिर दो सीमाओं का उपयोग किया जाता है, जब एमए ढलान और गति ढलान दोनों संबंधित सीमाओं से अधिक होते हैं, तो व्यापार संकेत उत्पन्न होते हैं।
उदाहरण के लिए, जब एमए ढलान और गति ढलान दोनों ऊपरी रेखा से अधिक होते हैं, तो एक खरीद संकेत उत्पन्न होता है; जब दोनों वक्र निचली रेखा से नीचे गिरते हैं, तो एक बिक्री संकेत उत्पन्न होता है। यह कुछ झूठे संकेतों को फ़िल्टर कर सकता है।
कम अस्थिरता फ़िल्टर बाजार अस्थिरता निर्धारित करने के लिए एक दीर्घकालिक एमए का उपयोग करता है। जब अस्थिरता कम होती है, तो विभिन्न बाजार स्थितियों के अनुकूल होने के लिए विभिन्न मापदंडों के साथ एक एमए का उपयोग व्यापार संकेत उत्पन्न करने के लिए किया जाता है।
इस रणनीति के निम्नलिखित फायदे हैंः
ट्रेडिंग सिग्नल स्थापित करने के लिए दोहरी फ़िल्टर कुछ शोर को फ़िल्टर कर सकता है और सिग्नल की गुणवत्ता में सुधार कर सकता है।
निम्न अस्थिरता फ़िल्टर रणनीति को लोच के साथ विभिन्न बाजार स्थितियों के अनुकूल करने की अनुमति देता है।
विभिन्न मापदंडों के लिए उच्च अनुकूलन क्षमता को विभिन्न उत्पादों के लिए अनुकूलित किया जा सकता है।
इसमें घुमावदार फिटिंग के प्रभाव को कम करने के लिए कोई रीपेंटिंग फ़ंक्शन नहीं है।
इस रणनीति में कुछ जोखिम भी हैं:
दोहरी फ़िल्टर कुछ वास्तविक संकेतों को फ़िल्टर कर सकता है और अवसरों को याद कर सकता है। यह मापदंडों को समायोजित करके अनुकूलित किया जा सकता है।
निम्न अस्थिरता फिल्टर के थ्रेशोल्ड निर्धारण को सावधानीपूर्वक परीक्षण की आवश्यकता है। अनुचित सेटिंग्स से संकेत विचलन हो सकता है।
एमए और गति संकेतक के लिए पैरामीटर सेटिंग्स को विशिष्ट उत्पादों के लिए अनुकूलित करने की आवश्यकता है, और सार्वभौमिक मापदंडों का निर्धारण करना मुश्किल है।
कोई repainting समारोह पूरी तरह से बैकटेस्ट वक्र फिट समस्या से बच नहीं सकता है, और वास्तविक व्यापार प्रदर्शन अभी भी सत्यापन की आवश्यकता है।
उच्च अनुकूलन क्षमता पैरामीटर स्थान की जटिलता और अनुकूलन की कठिनाई को बढ़ाती है।
इस रणनीति को निम्नलिखित दिशाओं में अनुकूलित किया जा सकता हैः
सबसे अच्छा मिलान करने वाले संकेतकों को खोजने के लिए एमए और गति संकेतक के अधिक संयोजनों का परीक्षण करें।
विलंब और शोर को संतुलित करने के लिए एमए और गति संकेतक के लंबाई मापदंडों को अनुकूलित करें।
अधिक स्थिर संकेतक संयोजन खोजने के लिए ढलान की गणना के लिए मापदंडों का अनुकूलन करें।
लो-वोल्टिटी के विभिन्न संकेतकों और मापदंडों का परीक्षण लोच में सुधार के लिए किया जाता है।
सर्वोत्तम लागू दायरे को खोजने के लिए विभिन्न उत्पादों और समय सीमाओं पर परीक्षण करें।
मैनुअल अनुकूलन कार्यभार को कम करने के लिए पैरामीटर अनुकूलन तंत्र का निर्माण करें।
यह एक बहुत ही लचीला और अनुकूलन योग्य दोहरी एमए रणनीति है। यह निर्णय लेने के लिए मूल्य और गति दोनों की जानकारी का संदर्भ देता है, जो प्रभावी रूप से झूठे संकेतों को फ़िल्टर कर सकता है। कम अस्थिरता फ़िल्टर भी रणनीति को बाजार परिवर्तनों के अनुकूल करने के लिए अधिक लोचदार बनाता है।
पैरामीटर अनुकूलन और संकेतक चयन में सुधार के साथ, यह रणनीति वास्तविक जीवन व्यापार के लिए एक व्यवहार्य विकल्प बन सकती है। यह एमए और गति संकेतक का उपयोग करके व्यापार निर्णयों के लिए एक संदर्भ टेम्पलेट प्रदान करता है।
/*backtest start: 2023-11-12 00:00:00 end: 2023-12-12 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Allenlk //@version=4 strategy("DRSI DMA Scalping Strategy", shorttitle="DRSIDMA", overlay=false, initial_capital=1000, pyramiding=2, default_qty_type=strategy.percent_of_equity, default_qty_value=100) //Inputs matype = input(7, minval=1, maxval=8, title="1=SMA, 2=EMA, 3=WMA, 4=HullMA, 5=VWMA, 6=RMA, 7=TEMA, 8=Tilson T3", group="Moving Average") masrc = input(close, title="MA Source", group="Moving Average") malen = input(5, title="Moving Average Length - LookBack Period", group="Moving Average") factorT3 = input(defval=7, title="Tilson T3 Factor - *.10 - so 7 = .7 etc.", minval=0, group="Moving Average") maderiv = input(3, title="MA Slope Lookback", minval=1, group="Moving Average") masmooth = input(5, title="MA Slope Smoothing", minval=1, group="Moving Average") momtype = input(3, minval=1, maxval=3, title="1=RSI, 2=CCI, 3=RSI/ROC", group="Momentum Moving Average") momsrc = input(close, title="Momentum Source", group="Momentum Moving Average") momlen = input(3, title="Momentum Length", minval=1, group="Momentum Moving Average") momderiv = input(8, title="Momentum Slope Lookback", minval=1, group="Momentum Moving Average") momsmooth = input(7, title="Momentum Slope Smoothing", minval=1, group="Momentum Moving Average") higherTf = input("1", title="Higher timeframe?", type = input.resolution, group="Time Resolution") higherTfmult = input(130, title="MA Slope multiplier for Alternate Resolutions (Make the waves of the blue line similar size as the orange line)", group="Time Resolution") buffup = input(0.02, title="Buy when both slopes cross this line", step=0.01, group="Buy and Sell Threshold") bufflow = input(-0.03, title="Sell when both slopes cross this line", step=0.01, group="Buy and Sell Threshold") lowVolMALength = input(28, title="Big MA Length", minval=1, group="Low Volatility Function") MAlength = input(10, title="Low Volatility Moving Average Length", minval=1, group="Low Volatility Function") MAThresh = input(0.05, title="Low Volatility Buy and Sell Threshold", step=0.01, group="Low Volatility Function") Volminimum = input(2.5, title="Minimum volatility to trade", minval=0, step=0.01, group="Low Volatility Function") //Low Volatility Function //When Volatility is low refer to the slope of a long moving average low_vol_MA = sma(close, lowVolMALength) low_vol_down = (low_vol_MA[3] - low_vol_MA[1]) > MAThresh low_vol_up = (low_vol_MA[3] - low_vol_MA[1]) < MAThresh * -1 percent_volatility = (1 - (low / high)) * 100 chng_MA = sma(percent_volatility, MAlength) bad_vol = chng_MA < Volminimum //No repaint function nrp_funct(_symbol, _res, _src) => security(_symbol, _res, _src[barstate.isrealtime ? 1 : 0]) //hull ma definition hullma = wma(2*wma(masrc, malen/2)-wma(masrc, malen), round(sqrt(malen))) //TEMA definition ema1 = ema(masrc, malen) ema2 = ema(ema1, malen) ema3 = ema(ema2, malen) tema = 3 * (ema1 - ema2) + ema3 //Tilson T3 factor = factorT3 *.10 gd(masrc, malen, factor) => ema(masrc, malen) * (1 + factor) - ema(ema(masrc, malen), malen) * factor t3(masrc, malen, factor) => gd(gd(gd(masrc, malen, factor), malen, factor), malen, factor) tilT3 = t3(masrc, malen, factor) //MA Type avg = matype == 1 ? sma(masrc,malen) : matype == 2 ? ema(masrc,malen) : matype == 3 ? wma(masrc,malen) : matype == 4 ? hullma : matype == 5 ? vwma(masrc, malen) : matype == 6 ? rma(masrc,malen) : matype == 7 ? 3 * (ema1 - ema2) + ema3 : tilT3 //MA Slope Percentage DeltaAvg = (avg / avg[maderiv]) - 1 SmoothedAvg = sma(DeltaAvg, masmooth) MAout = nrp_funct(syminfo.tickerid, higherTf, SmoothedAvg) * higherTfmult //Momentum indicators Momentum = momtype == 1 ? rsi(momsrc, momlen) : momtype == 2 ? cci(momsrc, momlen) : momtype == 3 ? rsi(roc(momsrc,momlen),momlen) : na //Momentum Slope Percentage Deltamom = (Momentum / Momentum[momderiv]) - 1 SmoothedMom = sma(Deltamom, momsmooth) Momout = nrp_funct(syminfo.tickerid, higherTf, SmoothedMom) //Plottings plot(buffup, color=color.green, title="Buy line") plot(bufflow, color=color.red, title="Sell line") plot(MAout, color=color.blue, linewidth=2, title="MA Slope") plot(Momout, color=color.orange, linewidth=2, title="Momentum Slope") longCondition = bad_vol ? low_vol_up : MAout > buffup and Momout > buffup if (longCondition) strategy.entry("Buy", strategy.long) shortCondition = bad_vol ? low_vol_down : MAout < bufflow and Momout < bufflow if (shortCondition) strategy.entry("Sell", strategy.short)