डबल मूविंग एवरेज क्रॉसओवर रणनीति एक ट्रेंड-फॉलोइंग रणनीति है जो ट्रेडिंग सिग्नल के रूप में अलग-अलग अवधि के दो मूविंग एवरेज के क्रॉसओवर का उपयोग करती है। यह लंबी या छोटी स्थिति में प्रवेश करती है जब तेज एमए धीमी एमए के ऊपर या नीचे पार करता है और क्रॉसओवर के बाद ट्रेंड की दिशा निर्धारित करता है। यह अत्यधिक उतार-चढ़ाव से अनावश्यक ट्रेडिंग आवृत्ति को कम करते हुए मध्यम अवधि के रुझानों को पकड़ सकता है।
यह रणनीति दो चलती औसत का उपयोग करती हैः अल्पकालिक मूल्य आंदोलनों को पकड़ने के लिए एक छोटी अवधि (जैसे 15 अवधि) के साथ एक तेज एमए, और प्रमुख प्रवृत्ति दिशा की पहचान करने के लिए एक लंबी अवधि (जैसे 21 अवधि) के साथ एक धीमी एमए। दो एमए के बीच क्रॉसओवर से ट्रेडिंग सिग्नल उत्पन्न होते हैंः धीमी एमए के ऊपर तेजी से एमए क्रॉसिंग खरीद संकेत देता है, जबकि नीचे तेजी से एमए क्रॉसिंग बिक्री संकेत देता है।
एमए अवधि संयोजनों को समायोजित करके, रणनीति रुझानों को पकड़ने के लिए समय सीमा को समायोजित कर सकती है। छोटे एमए कॉम्बो अल्पकालिक दोलन को लक्षित करते हैं जबकि लंबे एमए कॉम्बो शोर को फ़िल्टर करते हैं और केवल दीर्घकालिक रुझानों पर ध्यान केंद्रित करते हैं।
रणनीति में लाभ लेने, स्टॉप लॉस और ट्रेलिंग स्टॉप लॉस सहित जोखिम प्रबंधन मॉड्यूल भी शामिल हैं। ये व्यक्तिगत ट्रेडों के अधिकतम लाभ / हानि को सीमित करने में मदद करते हैं और समग्र जोखिम को शामिल करते हैं।
डबल एमए रणनीति के निम्नलिखित लाभ हैंः
कुछ जोखिमों पर भी विचार किया जाना चाहिए:
इन कमजोरियों को फ़िल्टरिंग सिग्नल, ट्रेलिंग स्टॉप लॉस आदि जैसे अनुकूलन के माध्यम से कम किया जा सकता है।
इस रणनीति को निम्नलिखित पहलुओं में बढ़ाया जा सकता हैः
इन वृद्धि से जीत दर में महत्वपूर्ण वृद्धि, जोखिम-समायोजित रिटर्न की उम्मीद है।
कुल मिलाकर, दोहरी चलती औसत क्रॉसओवर रणनीति सादगी, लचीलापन और नियंत्रित जोखिम प्रदान करती है। इसके कार्यान्वयन और अनुकूलन की आसानी इसे एक आदर्श प्रारंभिक मात्रा रणनीति बनाती है। आवर्ती परीक्षण और ट्यूनिंग के साथ, इसमें समय के साथ एक मजबूत प्रणाली में विकसित होने के लिए क्रेडेंशियल्स हैं।
/*backtest start: 2022-12-10 00:00:00 end: 2023-06-16 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title = "Silent Trader Strategy", shorttitle = "Silent Trader", overlay = true, pyramiding = 0, default_qty_type = strategy.cash, default_qty_value = 1000, commission_value = 0.0675, initial_capital = 1000, currency = currency.USD, calc_on_order_fills = true, calc_on_every_tick = true) maFastSource = input(defval = ohlc4, title = "Fast MA Source") maFastLength = input(defval = 15, title = "Fast MA Period", minval = 1) maSlowSource = input(defval = ohlc4, title = "Slow MA Source") maSlowLength = input(defval = 21, title = "Slow MA Period", minval = 1) tradeInvert = input(defval = false, title = "Invert Trade Direction?") inpTakeProfit = input(defval = 100, title = "Take Profit percentage(0.1%)", minval = 0) inpStopLoss = input(defval = 100, title = "Stop Loss", minval = 0) inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0) inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0) useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na useTimeLimit = input(defval = true, title = "Use Start Time Limiter?") startYear = input(defval = 2018, title = "Start From Year", minval = 0, step = 1) startMonth = input(defval = 05, title = "Start From Month", minval = 0,step = 1) startDay = input(defval = 01, title = "Start From Day", minval = 0,step = 1) startHour = input(defval = 00, title = "Start From Hour", minval = 0,step = 1) startMinute = input(defval = 00, title = "Start From Minute", minval = 0,step = 1) startTimeOk() => inputTime = timestamp(syminfo.timezone, startYear, startMonth, startDay, startHour, startMinute) timeOk = time > inputTime ? true : false r = (useTimeLimit and timeOk) or not useTimeLimit maFast = ema(maFastSource, maFastLength) maSlow = sma(maSlowSource, maSlowLength) fast = plot(maFast, title = "Fast MA", color = #26A69A, linewidth = 1, style = line, transp = 50) slow = plot(maSlow, title = "Slow MA", color = #EF5350, linewidth = 1, style = line, transp = 50) aboveBelow = maFast >= maSlow ? true : false tradeDirection = tradeInvert ? aboveBelow ? false : true : aboveBelow ? true : false if( startTimeOk() ) enterLong = not tradeDirection[1] and tradeDirection exitLong = tradeDirection[1] and not tradeDirection strategy.entry( id = "Long", long = true, when = enterLong ) //strategy.close( id = "Long", when = exitLong ) enterShort = tradeDirection[1] and not tradeDirection exitShort = not tradeDirection[1] and tradeDirection strategy.entry( id = "Short", long = false, when = enterShort ) //strategy.close( id = "Short", when = exitShort ) strategy.exit("Exit Long", from_entry = "Long", profit = close * useTakeProfit / 1000 / syminfo.mintick, loss = close * useStopLoss / 1000 / syminfo.mintick, trail_points = close * useTrailStop / 1000 / syminfo.mintick, trail_offset = close * useTrailOffset / 1000 / syminfo.mintick) strategy.exit("Exit Short", from_entry = "Short", profit = close * useTakeProfit / 1000 / syminfo.mintick, loss = close * useStopLoss / 1000 / syminfo.mintick, trail_points = close * useTrailStop / 1000 / syminfo.mintick, trail_offset = close * useTrailOffset / 1000 / syminfo.mintick)