इस रणनीति का मूल विचार एक ऐसा ढांचा लागू करना है जो उपयोगकर्ताओं की विभिन्न जरूरतों को पूरा करने के लिए बैकटेस्ट तिथि सीमा को लचीला ढंग से चुन सकता है, ताकि वे स्वचालित रूप से या मैन्युअल रूप से बैकटेस्ट के लिए प्रारंभ और समाप्ति समय निर्धारित कर सकें।
रणनीति इनपुट मापदंडों के माध्यम से दिनांक सीमा चयन के लिए चार विकल्प प्रदान करती हैः सभी इतिहास डेटा, हाल के निर्दिष्ट दिनों, हाल के निर्दिष्ट हफ्तों का उपयोग करना या मैन्युअल रूप से दिनांक सीमा निर्दिष्ट करना। रणनीति चयनित दिनांक सीमा के आधार पर गतिशील रूप से बैकटेस्ट विंडो सेट करेगी, जबकि ट्रेडिंग तर्क को अपरिवर्तित रखती है, ताकि विभिन्न समय खिड़कियों के तहत प्रदर्शन अंतर की तुलना की जा सके।
इस रणनीति में दो मॉड्यूल शामिल हैंः बैकटेस्ट डेट रेंज चयन और डबल एमए ट्रेडिंग रणनीति।
एक लचीला और अनुकूलन योग्य फ्रेमवर्क के रूप में दिनांक सीमा चयन के लिए, लाभ उपयोगकर्ताओं की विभिन्न परीक्षण आवश्यकताओं को पूरा कर रहे हैं। सरल लेकिन प्रभावी डबल एमए ट्रेडिंग तर्क के साथ संयुक्त, यह जल्दी से सत्यापित और रणनीतियों की तुलना कर सकता है। फ़िल्टर या स्टॉप लॉस लॉजिक जोड़ने जैसे अनुवर्ती अनुकूलन लाइव ट्रेडिंग के लिए रणनीति को अधिक व्यावहारिक बना सकते हैं। सारांश में, रणनीति ढांचे में अच्छी स्केलेबिलिटी और संदर्भ मूल्य है।
/*backtest start: 2022-12-29 00:00:00 end: 2024-01-04 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title = "How To Auto Set Date Range", shorttitle = " ", overlay = true) // Revision: 1 // Author: @allanster // === INPUT MA === fastMA = input(defval = 14, title = "FastMA", type = input.integer, minval = 1, step = 1) slowMA = input(defval = 28, title = "SlowMA", type = input.integer, minval = 1, step = 1) // === INPUT BACKTEST RANGE === useRange = input(defval = "WEEKS", title = "Date Range", type = input.string, confirm = false, options = ["ALL", "DAYS", "WEEKS", "MANUAL"]) nDaysOrWeeks = input(defval = 52, title = "# Days or Weeks", type = input.integer, minval = 1) FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 15, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2019, title = "From Year", minval = 2014) ToMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2014) // === FUNCTION EXAMPLE === window() => true // === LOGIC === buy = crossover(sma(close, fastMA), sma(close, slowMA)) // buy when fastMA crosses over slowMA sell = crossunder(sma(close, fastMA), sma(close, slowMA)) // sell when fastMA crosses under slowMA // === EXECUTION === strategy.entry("L", strategy.long, when=window() and buy) // buy long when "within window of time" AND crossover strategy.close("L", when=window() and sell) // sell long when "within window of time" AND crossunder // === PLOTTING === plot(sma(close, fastMA), title = 'FastMA', color = color.aqua, linewidth = 2, style = plot.style_line) // plot FastMA plot(sma(close, slowMA), title = 'SlowMA', color = color.yellow, linewidth = 2, style = plot.style_line) // plot SlowMA