यह रणनीति सरल चलती औसत (एसएमए) के स्वर्ण क्रॉस और मृत क्रॉस सिद्धांतों के आधार पर डिज़ाइन की गई है। यह रणनीति दो एसएमए का उपयोग करती है, अर्थात् तेज एसएमए और धीमी एसएमए। जब तेज एसएमए नीचे से धीमी एसएमए के ऊपर से गुजरती है, तो एक खरीद संकेत उत्पन्न होता है। जब तेज एसएमए ऊपर से धीमी एसएमए के नीचे से गुजरती है, तो एक बिक्री संकेत उत्पन्न होता है।
यह रणनीति मुख्य रूप से दो एसएमए संकेतक रेखाओं पर निर्भर करती है। तेज एसएमए की अवधि कम होती है और कीमत में बदलाव को तेजी से पकड़ सकती है। धीमी एसएमए की अवधि अधिक होती है और कुछ शोर को फ़िल्टर कर सकती है। जब तेज एसएमए नीचे से धीमी एसएमए के ऊपर से गुजरती है, तो यह इंगित करती है कि अल्पकालिक बढ़ती गति तेज है और एक खरीद संकेत उत्पन्न करती है। जब तेज एसएमए ऊपर से धीमी एसएमए के नीचे से गुजरती है, तो यह इंगित करती है कि अल्पकालिक गिरती गति तेज है और एक बिक्री संकेत उत्पन्न करती है।
विभिन्न एसएमए अवधि मापदंडों को सेट करके, रणनीति मापदंडों को विभिन्न बाजार वातावरणों के अनुकूल करने के लिए कुछ हद तक समायोजित किया जा सकता है। साथ ही, रणनीति ऐतिहासिक डेटा पर रणनीति मापदंडों के परीक्षण के लिए बैकटेस्टिंग समय सीमा निर्धारित करने की भी अनुमति देती है।
उपरोक्त जोखिमों से निपटने के लिए निम्नलिखित उपाय किए जा सकते हैंः
यह एक विशिष्ट प्रवृत्ति के बाद की रणनीति है। डबल मूविंग एवरेज क्रॉसओवर के सरल सिद्धांत को लागू करके, जब मापदंडों को उचित रूप से सेट किया जाता है, तो यह अच्छे ट्रैकिंग परिणाम प्राप्त कर सकता है। हालांकि, एसएमए के अपने आप में एक निश्चित लेगिंग प्रभाव होता है और प्रवृत्ति की गति निर्धारित नहीं कर सकता है। इसलिए, वास्तविक अनुप्रयोग में, अन्य सहायक उपकरणों को एक संकेतक संयोजन बनाने के लिए पेश करने की आवश्यकता होती है, और स्वचालित मापदंड अनुकूलन और जोखिम नियंत्रण साधनों के साथ पूरक, ताकि रणनीति लगातार लाभदायक हो सके।
/*backtest start: 2023-12-17 00:00:00 end: 2023-12-18 19:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //strategy(title="MA Cross Entry & Exit w/Date Range", overlay=true, initial_capital=10000, currency='USD') strategy(title="SMA Cross Entry & Exit Strategy", overlay=true) // Credit goes to this developer for the "Date Range Code" // https://www.tradingview.com/script/62hUcP6O-How-To-Set-Backtest-Date-Range/ // === GENERAL INPUTS === // short ma maFastSource = input(defval = open, title = "Fast MA Source") maFastLength = input(defval = 36, title = "Fast MA Period", minval = 1) // long ma maSlowSource = input(defval = open , title = "Slow MA Source") maSlowLength = input(defval = 46, title = "Slow MA Period", minval = 1) // === SERIES SETUP === // a couple of ma's.. maFast = sma(maFastSource, maFastLength) maSlow = sma(maSlowSource, maSlowLength) // === PLOTTING === fast = plot(maFast, title = "Fast MA", color = red, linewidth = 2, style = line, transp = 30) slow = plot(maSlow, title = "Slow MA", color = green, linewidth = 2, style = line, transp = 30) // === INPUT BACKTEST RANGE === FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2018, title = "From Year", minval = 2017) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2017) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false // create function "within window of time" // === LOGIC === //enterLong = crossover(maFast, maSlow) //exitLong = crossover(maSlow, maFast) enterLong = crossover(maSlow, maFast) exitLong = crossover(maFast, maSlow) // Entry // strategy.entry(id="Long Entry", long=true, when=window() and enterLong) strategy.entry(id="Short Entry", long=false, when=window() and exitLong) // === FILL ==== fill(fast, slow, color = maFast > maSlow ? green : red)