दोहरे एमए के आधार पर अनुकूलन बैकटेस्ट तिथि सीमा चयन रणनीति

लेखक:चाओझांग, दिनांकः 2024-01-05 12:12:10
टैगः

img

अवलोकन

इस रणनीति का मूल विचार एक ऐसा ढांचा लागू करना है जो उपयोगकर्ताओं की विभिन्न जरूरतों को पूरा करने के लिए बैकटेस्ट तिथि सीमा को लचीला ढंग से चुन सकता है, ताकि वे स्वचालित रूप से या मैन्युअल रूप से बैकटेस्ट के लिए प्रारंभ और समाप्ति समय निर्धारित कर सकें।

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

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

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

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

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

डबल एमए ट्रेडिंग रणनीति मॉड्यूल

  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


अधिक