डबल एमए सुपरपोजिशन पर आधारित अनुकूली बैकटेस्टिंग समय सीमा चयन रणनीति


निर्माण तिथि: 2024-01-05 12:12:10 अंत में संशोधित करें: 2024-01-05 12:12:10
कॉपी: 0 क्लिक्स: 589
1
ध्यान केंद्रित करना
1621
समर्थक

डबल एमए सुपरपोजिशन पर आधारित अनुकूली बैकटेस्टिंग समय सीमा चयन रणनीति

अवलोकन

इस रणनीति का मुख्य विचार एक फ्रेमवर्क को लागू करना है जो समय सीमा को चुनने के लिए लचीला है, जिससे उपयोगकर्ता को विभिन्न आवश्यकताओं के अनुसार स्वचालित या मैन्युअल रूप से समय निर्धारित करने की अनुमति मिलती है।

चार प्रकार की दिनांक सीमा चयन विकल्प प्रदान करता है, जो रणनीतियों को इनपुट पैरामीटर के माध्यम से प्रदान करता हैः पूर्ण इतिहास डेटा का उपयोग करना, हाल ही में निर्दिष्ट दिन, हाल ही में निर्दिष्ट सप्ताह या मैन्युअल रूप से निर्दिष्ट दिनांक सीमा। रणनीति गतिशील रूप से चयनित दिनांक सीमा के आधार पर प्रतिक्रिया विंडो सेट करती है, जबकि व्यापारिक तर्क अपरिवर्तित रहता है, ताकि विभिन्न समय विंडो के तहत रणनीति के प्रदर्शन में अंतर की तुलना की जा सके।

रणनीति सिद्धांत

इस रणनीति में रिटर्न्स डेट रेंज सिलेक्शन मॉड्यूल और डबल एमए ट्रेडिंग रणनीति मॉड्यूल शामिल हैं।

दिनांक सीमा चयन मॉड्यूल

  1. चार दिनांक श्रेणी विकल्प उपलब्ध हैंः सभी ऐतिहासिक डेटा (ALL), हाल ही में निर्दिष्ट दिन (DAYS), हाल ही में निर्दिष्ट सप्ताह (WEEKS) और मैन्युअल रूप से निर्दिष्ट दिनांक श्रेणी (MANUAL) ।
  2. चयनित सीमा के आधार पर, गतिशील सेटिंग्स को समय फलक में परिवर्तित करके स्टार्ट और स्टॉप समय को पुनः मापें।
  3. समय की शर्तों का उपयोग करेंwindow() फ़ंक्शन फ़िल्टर K लाइन, केवल चयनित दिनांक सीमा के भीतर वापस जांचें

द्वि MA ट्रेडिंग रणनीति मॉड्यूल

  1. फास्ट एमए के दौरान फास्ट एमए, डिफ़ॉल्ट 14 है; धीमी एमए के दौरान धीमी एमए, डिफ़ॉल्ट 28 है।
  2. जब तेज एमए पर धीमी एमए के माध्यम से, अधिक करें; जब तेज एमए के तहत धीमी एमए के माध्यम से, बराबरी करें।
  3. एमए की वक्रता को जल्दी से तैयार करें।

रणनीति का विश्लेषण

  1. विभिन्न परीक्षण आवश्यकताओं को पूरा करने के लिए विभिन्न समय सीमाओं के लिए कोई सीमा नहीं है।
  2. एक ही समय सीमा के भीतर विभिन्न चक्रों के मापदंडों के प्रभाव का परीक्षण किया जा सकता है, जिसके परिणाम तुलनीय होते हैं।
  3. व्यापारिक तर्क को संशोधित करना सरल है और इसे अन्य रणनीतियों के लिए एक ढांचे के रूप में इस्तेमाल किया जा सकता है।
  4. डबल एमए रणनीतियाँ सरल हैं, उन्हें समझना आसान है, और उन्हें शुरू करना भी आसान है।

जोखिम और समाधान विश्लेषण

  1. डबल एमए रणनीतियाँ अधिक असभ्य होती हैं और अक्सर खरीदारी और बिक्री की समस्या होती है।
  2. मैन्युअल रूप से दिनांक सीमा सेट करने के लिए सावधानी बरतने की आवश्यकता है ताकि गलत दिनांक का उपयोग न किया जा सके।
  3. पूरे इतिहास के लिए बहुत अधिक समय लेने से परीक्षण की अवधि बढ़ जाती है। स्लाइड अंक जोड़ने या बार-बार लेनदेन के लिए कमी शुल्क पर विचार करें।

रणनीति अनुकूलन दिशा

  1. स्टॉप लॉजिक निर्णय को बढ़ाएं और नुकसान के जोखिम को कम करें।
  2. स्टॉक पूल फ़िल्टर में शामिल करें, स्टॉक को चुनें जो सूचकांक के साथ अच्छी तरह से जुड़ा हुआ है, और स्थिरता में सुधार करें।
  3. ट्रेडिंग सिग्नल के फिल्टर को बढ़ाएं, अस्थिर सिग्नल को एक निश्चित अवधि के भीतर फ़िल्टर करें, अनावश्यक ट्रेडिंग को कम करें।
  4. विभिन्न वर्गीकृत सूचकांकों से संबंधित शेयरों के प्रदर्शन का परीक्षण करें और सर्वोत्तम किस्मों का पता लगाएं।

संक्षेप

रणनीति एक सामान्य फीडबैक डेट रेंज फ्रेमवर्क के रूप में है, इसका लाभ यह है कि यह लचीला और अनुकूलन योग्य है, जो उपयोगकर्ताओं की विभिन्न परीक्षण आवश्यकताओं को पूरा कर सकता है। सरल और प्रभावी डबल एमए ट्रेडिंग लॉजिक के साथ, रणनीति को जल्दी से सत्यापित और तुलना की जा सकती है। बाद में फ़िल्टर, स्टॉपलॉस लॉजिक आदि को जोड़कर अनुकूलित किया जा सकता है, जिससे रणनीति को वास्तविक दुनिया में लागू करने के लिए एक कदम आगे बढ़ाया जा सकता है। कुल मिलाकर, रणनीति फ्रेमवर्क में अच्छी विस्तारशीलता और संदर्भ मूल्य है।

रणनीति स्रोत कोड
/*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