यह रणनीति दोहरी चलती औसत का उपयोग करती है, विशेष रूप से 8-अवधि और 21-अवधि वाले। यह लंबे संकेत उत्पन्न करता है जब छोटा एमए लंबे से अधिक पार करता है, और छोटे संकेत जब छोटा एमए लंबे से नीचे पार करता है।
इस रणनीति में कुछ गैर-ट्रेंडिंग अवधि को फ़िल्टर करने के लिए चलती औसत रेखा की ढलान को भी शामिल किया गया है और केवल तभी संकेत उत्पन्न होते हैं जब एक प्रवृत्ति अधिक स्पष्ट होती है।
इस रणनीति का मूल अल्पकालिक और दीर्घकालिक चलती औसत के क्रॉसओवर में निहित है। छोटा एमए तेजी से प्रवृत्ति परिवर्तनों को पकड़ सकता है, जबकि लंबे एमए में बेहतर शोर फ़िल्टरिंग प्रभाव होता है। जब छोटा एमए लंबे एमए को पार करता है, तो एक लंबा संकेत देने के लिए एक अपट्रेंड की स्थापना का सुझाव दिया जाता है; जब छोटा एमए लंबे एमए से नीचे पार करता है, तो एक छोटा संकेत देने के लिए एक डाउनट्रेंड की स्थापना का सुझाव दिया जाता है।
रणनीति एक ढलान सीमा भी निर्धारित करती है। केवल जब ढलान सकारात्मक सीमा मूल्य से अधिक हो तो एक लंबा संकेत उत्पन्न होगा। केवल जब ढलान नकारात्मक सीमा मूल्य से कम हो तो एक छोटा संकेत उत्पन्न होगा। इससे उन क्षेत्रों को फ़िल्टर करने में मदद मिलती है जहां कोई स्पष्ट प्रवृत्ति मौजूद नहीं है, जिसके परिणामस्वरूप उच्च गुणवत्ता वाले ट्रेडिंग सिग्नल होते हैं।
विशेष रूप से, ट्रेडिंग सिग्नल उत्पन्न करने का तर्क हैः
इस रणनीति के लाभों में निम्नलिखित शामिल हैंः
इस रणनीति के साथ कुछ जोखिम भी मौजूद हैंः
इन जोखिमों के आधार पर अनुकूलन के कुछ तरीकेः
रणनीति को अनुकूलित करने के लिए कुछ दिशाएंः
संक्षेप में, यह दोहरी एमए रणनीति सरल और व्यावहारिक है। दो अवधि मापदंडों के माध्यम से विभिन्न प्रवृत्ति विशेषताओं को कैप्चर करके और उन्हें व्यापार संकेत उत्पन्न करने के लिए जोड़कर। इस बीच, ढलान सीमा को शामिल करने से संकेत की गुणवत्ता में सुधार होता है। यह रणनीति विस्तार के लिए एक बुनियादी के रूप में कार्य कर सकती है, जिसमें पर्याप्त अनुकूलन स्थान और क्षमता है।
/*backtest start: 2024-01-09 00:00:00 end: 2024-01-16 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //written by sixpathssenin //@version=4 strategy(title="Dual Moving Average",initial_capital=10000,overlay=true) ma1= sma(close,8) ma2= sma(close,21) angleCriteria = input(title="Angle", type=input.integer, defval=7, minval=1, maxval=13) i_lookback = input(2, "Angle Period", input.integer, minval = 1) i_atrPeriod = input(10, "ATR Period", input.integer, minval = 1) i_angleLevel = input(6, "Angle Level", input.integer, minval = 1) i_maSource = input(close, "MA Source", input.source) f_angle(_src, _lookback, _atrPeriod) => rad2degree = 180 / 3.141592653589793238462643 //pi ang = rad2degree * atan((_src[0] - _src[_lookback]) / atr(_atrPeriod)/_lookback) ang _angle = f_angle(ma2, i_lookback, i_atrPeriod) plot(ma1,color=#FF0000) plot(ma2,color=#00FF00) crosso=crossover(ma1,ma2) crossu=crossunder(ma1,ma2) _lookback = 15 f_somethingHappened(_cond, _lookback) => bool _crossed = false for i = 1 to _lookback if _cond[i] _crossed := true _crossed longcrossed = f_somethingHappened(crosso,_lookback) shortcrossed = f_somethingHappened(crossu,_lookback) long = longcrossed and _angle > angleCriteria short= shortcrossed and _angle < -(angleCriteria) if(long) strategy.entry("Long",strategy.long) if(short) strategy.entry("short",strategy.short)