यह रणनीति अनुकूलनशील चलती औसत पर आधारित एक प्रवृत्ति-अनुसरण रणनीति है। यह ट्रेडिंग संकेत उत्पन्न करने के लिए विभिन्न अवधि के साथ दो डीईएमए चलती औसत का उपयोग करती है। रणनीति स्वचालित रूप से वर्तमान अवधि के आधार पर विश्लेषण के लिए समय सीमा को अनुकूलित करेगी, जिससे मल्टी-टाइमफ्रेम ट्रैकिंग की अनुमति मिलेगी।
यह रणनीति ट्रेडिंग सिग्नल बनाने के लिए एक तेज डीईएमए लाइन और एक धीमी डीईएमए लाइन का उपयोग करती है। तेज लाइन में tf की अवधि होती है और धीमी लाइन में tf*2 की अवधि होती है। एक खरीद संकेत तब उत्पन्न होता है जब तेज लाइन धीमी रेखा के ऊपर से गुजरती है। एक बिक्री संकेत तब उत्पन्न होता है जब तेज लाइन धीमी रेखा के नीचे से गुजरती है। इससे रणनीति को मध्यम से दीर्घकालिक रुझानों को ट्रैक करने की अनुमति मिलती है। इसके अलावा, रणनीति शोर ट्रेडों को कम करने के लिए एक हुल डबल मूविंग एवरेज फिल्टर का भी उपयोग करती है। सिग्नल केवल तब उत्पन्न होते हैं जब हुल फिल्टर दिशा पर सहमत होता है।
इस रणनीति का सबसे बड़ा लाभ यह है कि यह स्वचालित रूप से विभिन्न अवधियों के अनुकूल हो सकता है। यह वर्तमान अवधि के आधार पर दैनिक से साप्ताहिक तक विश्लेषण समय सीमा का चयन करेगा। यह रणनीति को विभिन्न प्रकार के बाजार वातावरण के लिए उपयुक्त बनाता है। इसके अलावा, दोहरी चलती औसत संरचना प्रभावी ढंग से रुझानों को ट्रैक कर सकती है, और दोहरी फ़िल्टर सिग्नल गुणवत्ता को बढ़ाता है। परिणामस्वरूप, यह रणनीति मध्यम से दीर्घकालिक रुझानों को ट्रैक करने के लिए बहुत उपयुक्त है।
इस रणनीति का मुख्य जोखिम ट्रेंड रिवर्स से आता है। जब बाजार एक बैल बाजार से भालू बाजार में संक्रमण करता है, तो तेज और धीमी रेखाएं तेजी से नीचे की ओर पार हो सकती हैं, जिसके परिणामस्वरूप भारी फ्लोटिंग नुकसान हो सकते हैं। इसके अलावा, लाइन फिल्टर कुछ लाभदायक अवसरों को भी याद कर सकता है। यदि फिल्टर मूल्य दिशा से असहमत है, तो वे अन्यथा लाभदायक संकेत छोड़ दिए जाएंगे। परिणामस्वरूप, यह रणनीति मुख्य रूप से स्थिर मध्यम से दीर्घकालिक ट्रेंडिंग बाजारों को लक्षित करती है।
रणनीति को फ़िल्टर मापदंडों को समायोजित करके या अन्य संकेतकों का उपयोग करके अनुकूलित किया जा सकता है। उदाहरण के लिए, एचएलएमए के बजाय एमएसीडी का परीक्षण किया जा सकता है, या एचएलएमए अवधि के मापदंडों को समायोजित किया जा सकता है। बेहतर फिट ट्रेडिंग नियमों को खोजने के लिए विभिन्न मापदंड संयोजनों का भी परीक्षण किया जा सकता है। इसके अलावा, अस्थिरता संकेतकों को स्थिति आकार को नियंत्रित करने के लिए भी शामिल किया जा सकता है। जब बाजार अस्थिरता बढ़ जाती है तो छोटी स्थिति ली जा सकती है।
निष्कर्ष में, यह एक बहुत ही व्यावहारिक अनुकूलनशील प्रवृत्ति के बाद की रणनीति है। यह स्वचालित रूप से विभिन्न अवधियों के लिए विश्लेषण समय सीमा को समायोजित कर सकता है और विभिन्न समय क्षितिज में व्यापार के लिए उपयुक्त है। दोहरी चलती औसत संरचना लगातार रुझानों को ट्रैक कर सकती है, और फ़िल्टर सिग्नल गुणवत्ता में भी सुधार करता है। कुल मिलाकर, यह स्थिर मध्यम से दीर्घकालिक रिटर्न की तलाश में निवेशकों के लिए उपयुक्त है।
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-24 23:59:59 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 // //--------------------------------------------- //* Author - PPSingnal //* http://ppsignal.com //--------------------------------------------- // // strategy (title="PPSignal V4 (Auto Adaptive Times)", shorttitle="PPSignal V4", overlay=true) delayOffset = input(defval = 0, title = "Delay Open/Close MA (Forces Non-Repainting)", minval = 0, step = 1) //---------------------------------------- INICIO PPI ---------------------------------------- // - PARÁMETROS DE ENTRADA // SE DEFINE LA RESOLUCIÓN useRes1 = true setRes1 = true tf = timeframe.period == "60" ? 4 : timeframe.period == "240" ? 4 : timeframe.period == "D" ? 4 : timeframe.period == "W" ?4 : 4 // PRIMER DEMA type = "DEMA" src = close len = tf off = 0 lsma = 0 // SEGUNDA DEMA type2 = "DEMA" src2 = open len2 = tf off2 = 0 lsma2 = 0 // - INPUTS END //---------------------------------------- INICIO FUNCIONES ---------------------------------------- // RETORNA UNA MEDIA MOVIL (TYPE=TIPO / SRC = TIPO DE PRECIO / LEN=LONGITUD / LSMA=0) variant(type, src, len, lsma) => v1 = sma(src, len) // Simple v2 = ema(src, len) // Exponential v3 = wma(src, len) // Weighted v4 = vwma(src, len) // Volume Weighted v5 = na(v5[1]) ? sma(src, len) : (v5[1] * (len - 1) + src) / len // Smoothed v6 = 2 * v2 - ema(v2, len) // Double Exponential v7 = 3 * (v2 - ema(v2, len)) + ema(ema(v2, len), len) // Triple Exponential v8 = wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len))) // Hull v9 = linreg(src, len, lsma) // Least Squares // return variant, defaults to SMA if input invalid. type=="EMA"?v2 : type=="WMA"?v3 : type=="VWMA"?v4 : type=="SMMA"?v5 : type=="DEMA"?v6 : type=="TEMA"?v7 : type=="HullMA"?v8 : type=="LSMA"?v9 : v1 // SuperSmoother filter // © 2013 John F. Ehlers a1 = exp(-1.414*3.14159 / len) b1 = 2*a1*cos(1.414*3.14159 / len) c2 = b1 c3 = (-a1)*a1 c1 = 1 - c2 - c3 v12 = 0.0 v12 := c1*(src + nz(src[1])) / 2 + c2*nz(v12[1]) + c3*nz(v12[2]) // RETORNA LA RESOLUCIÓN SETEADA Y SINO LA DEFAULT // 3H: 1min - 3min - 5min - 15min // DIARIO: 30 - 45 - 60 // SEMANAL: 120 - 180 - 240 - D reso(exp, use, res) => use ? request.security(syminfo.tickerid, timeframe.period=="1" ? "D" : timeframe.period=="3" ? "D" : timeframe.period=="5" ? "D" : timeframe.period=="15" ? "D" : timeframe.period=="30" ? "D" : timeframe.period=="45" ? "W" : timeframe.period=="60" ? "W" : timeframe.period=="120" ? "W" : timeframe.period=="180" ? "W" : timeframe.period=="240" ? "W" : timeframe.period=="D" ? "W" : "W", exp) : exp //---------------------------------------- FIN FUNCIONES ---------------------------------------- //---------------------------------------- INICIO VARIABLES ---------------------------------------- // DEMAS ma_short = reso(variant(type, src[off], len, lsma), useRes1, setRes1) ma_long = reso(variant(type2, src2[off2], len2, lsma2), useRes1, setRes1) //---------------------------------------- FIN VARIABLES ---------------------------------------- //---------------------------------------- FIN PPI ---------------------------------------- //---------------------------------------- PRIMER FILTRO ---------------------------------------- // Double HullMA scolor = false n=1 n2ma=2*wma(close,round(n/2)) nma=wma(close,n) diff=n2ma-nma sqn=round(sqrt(n)) n2ma1=2*wma(close[1],round(n/2)) nma1=wma(close[1],n) diff1=n2ma1-nma1 sqn1=round(sqrt(n)) n1=wma(diff,sqn) n2=wma(diff1,sqn) //---------------------------------------- FIN PRIMER FILTRO ---------------------------------------- //---------------------------------------- INICIO CONDICIONES ---------------------------------------- // CONDICION CON FILTRO cruce= (ma_short > ma_long) and n1>n2 ? true : ma_short < ma_long ? false : cruce[1] // Condition // FONDO DE COLOR bground = cruce ? white : red bgcolor(bground, transp=90) // BARRAS COLOREADAS barcol = cruce ? yellow : red barcolor(barcol, transp=0) closePlot = plot(ma_short, title = "Zone 1", color = gray, circles = 0, style = circles, transp = 100) openPlot = plot(ma_long, title = "Zone 2", color = green, circles = 0, style = circles, transp = 100) trendState = ma_short > ma_long ? true : ma_short < ma_long ? false : trendState[1] // channel fill closePlotU = plot(trendState ? ma_short : na, transp = 100, editable = false) openPlotU = plot(trendState ? ma_long : na, transp = 100, editable = false) closePlotD = plot(trendState ? na : ma_short, transp = 100, editable = false) openPlotD = plot(trendState ? na : ma_long, transp = 100, editable = false) fill(openPlotU, closePlotU, title = "Up Trend Fill", color = yellow, transp = 70) fill(openPlotD, closePlotD, title = "Down Trend Fill", color = red, transp = 70) //---------------------------------------- FIN CONDICIONES ---------------------------------------- //---------------------------------------- INICIO ESTRATEGIA ---------------------------------------- //CONDICION COMPRA longCond = (ma_short > ma_long) and n1>=n2 //CONDICION VENTA shortCond = (ma_short < ma_long) //ABRO COMPRA A strategy.entry("Bull Trend", strategy.long, when = longCond) //ABRO VENTA A strategy.entry("Bearish Trend", strategy.short, when = shortCond) //CIERRO VENTA A strategy.exit("Exit Short", from_entry = "Bull Trend", when = shortCond) //CIERRO COMPRA A strategy.exit("Exit Long", from_entry = "Bearish Trend", when = longCond) //---------------------------------------- FIN ESTRATEGIA ----------------------------------------