गतिशील चलती औसत दोहरी रणनीति

लेखक:चाओझांग, दिनांक: 2023-12-13 16:37:05
टैगः

img

अवलोकन

यह रणनीति ट्रेडिंग निर्णयों के लिए मूविंग एवरेज (एमए) और गति संकेतक की ढलान का उपयोग करती है। यह सेट सीमाओं के साथ एमए ढलान और गति ढलान की तुलना करता है, और जब दोनों ढलान सीमाओं से अधिक होते हैं तो ट्रेडिंग संकेत उत्पन्न करता है। इस रणनीति में एक कम अस्थिरता फ़िल्टर भी होता है जो बाजार की अस्थिरता कम होने पर संकेत उत्पन्न करने के लिए एक अलग एमए का उपयोग करता है।

रणनीति तर्क

इस रणनीति का मूल दो ढलान वक्रों की तुलना में निहित है। सबसे पहले, यह एमए और गति संकेतक की ढलान की गणना करता है। ढलान वक्र की परिवर्तन दर और दिशा को दर्शाता है। फिर दो सीमाओं का उपयोग किया जाता है, जब एमए ढलान और गति ढलान दोनों संबंधित सीमाओं से अधिक होते हैं, तो व्यापार संकेत उत्पन्न होते हैं।

उदाहरण के लिए, जब एमए ढलान और गति ढलान दोनों ऊपरी रेखा से अधिक होते हैं, तो एक खरीद संकेत उत्पन्न होता है; जब दोनों वक्र निचली रेखा से नीचे गिरते हैं, तो एक बिक्री संकेत उत्पन्न होता है। यह कुछ झूठे संकेतों को फ़िल्टर कर सकता है।

कम अस्थिरता फ़िल्टर बाजार अस्थिरता निर्धारित करने के लिए एक दीर्घकालिक एमए का उपयोग करता है। जब अस्थिरता कम होती है, तो विभिन्न बाजार स्थितियों के अनुकूल होने के लिए विभिन्न मापदंडों के साथ एक एमए का उपयोग व्यापार संकेत उत्पन्न करने के लिए किया जाता है।

लाभ विश्लेषण

इस रणनीति के निम्नलिखित फायदे हैंः

  1. ट्रेडिंग सिग्नल स्थापित करने के लिए दोहरी फ़िल्टर कुछ शोर को फ़िल्टर कर सकता है और सिग्नल की गुणवत्ता में सुधार कर सकता है।

  2. निम्न अस्थिरता फ़िल्टर रणनीति को लोच के साथ विभिन्न बाजार स्थितियों के अनुकूल करने की अनुमति देता है।

  3. विभिन्न मापदंडों के लिए उच्च अनुकूलन क्षमता को विभिन्न उत्पादों के लिए अनुकूलित किया जा सकता है।

  4. इसमें घुमावदार फिटिंग के प्रभाव को कम करने के लिए कोई रीपेंटिंग फ़ंक्शन नहीं है।

जोखिम विश्लेषण

इस रणनीति में कुछ जोखिम भी हैं:

  1. दोहरी फ़िल्टर कुछ वास्तविक संकेतों को फ़िल्टर कर सकता है और अवसरों को याद कर सकता है। यह मापदंडों को समायोजित करके अनुकूलित किया जा सकता है।

  2. निम्न अस्थिरता फिल्टर के थ्रेशोल्ड निर्धारण को सावधानीपूर्वक परीक्षण की आवश्यकता है। अनुचित सेटिंग्स से संकेत विचलन हो सकता है।

  3. एमए और गति संकेतक के लिए पैरामीटर सेटिंग्स को विशिष्ट उत्पादों के लिए अनुकूलित करने की आवश्यकता है, और सार्वभौमिक मापदंडों का निर्धारण करना मुश्किल है।

  4. कोई repainting समारोह पूरी तरह से बैकटेस्ट वक्र फिट समस्या से बच नहीं सकता है, और वास्तविक व्यापार प्रदर्शन अभी भी सत्यापन की आवश्यकता है।

  5. उच्च अनुकूलन क्षमता पैरामीटर स्थान की जटिलता और अनुकूलन की कठिनाई को बढ़ाती है।

अनुकूलन दिशाएँ

इस रणनीति को निम्नलिखित दिशाओं में अनुकूलित किया जा सकता हैः

  1. सबसे अच्छा मिलान करने वाले संकेतकों को खोजने के लिए एमए और गति संकेतक के अधिक संयोजनों का परीक्षण करें।

  2. विलंब और शोर को संतुलित करने के लिए एमए और गति संकेतक के लंबाई मापदंडों को अनुकूलित करें।

  3. अधिक स्थिर संकेतक संयोजन खोजने के लिए ढलान की गणना के लिए मापदंडों का अनुकूलन करें।

  4. लो-वोल्टिटी के विभिन्न संकेतकों और मापदंडों का परीक्षण लोच में सुधार के लिए किया जाता है।

  5. सर्वोत्तम लागू दायरे को खोजने के लिए विभिन्न उत्पादों और समय सीमाओं पर परीक्षण करें।

  6. मैनुअल अनुकूलन कार्यभार को कम करने के लिए पैरामीटर अनुकूलन तंत्र का निर्माण करें।

निष्कर्ष

यह एक बहुत ही लचीला और अनुकूलन योग्य दोहरी एमए रणनीति है। यह निर्णय लेने के लिए मूल्य और गति दोनों की जानकारी का संदर्भ देता है, जो प्रभावी रूप से झूठे संकेतों को फ़िल्टर कर सकता है। कम अस्थिरता फ़िल्टर भी रणनीति को बाजार परिवर्तनों के अनुकूल करने के लिए अधिक लोचदार बनाता है।

पैरामीटर अनुकूलन और संकेतक चयन में सुधार के साथ, यह रणनीति वास्तविक जीवन व्यापार के लिए एक व्यवहार्य विकल्प बन सकती है। यह एमए और गति संकेतक का उपयोग करके व्यापार निर्णयों के लिए एक संदर्भ टेम्पलेट प्रदान करता है।


/*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)

अधिक