समय श्रृंखला डेटा विश्लेषण और टिक डेटा बैकटेस्टिंग

लेखक:लिडिया, बनाया गयाः 2023-01-06 15:27:16, अद्यतन किया गयाः 2023-09-20 10:12:15

img

समय श्रृंखला डेटा विश्लेषण और टिक डेटा बैकटेस्टिंग

समय-श्रृंखला डेटा

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

img

जैसा कि आप देख सकते हैं, दिनांक एक्स-अक्ष पर है, और कीमत वाई-अक्ष पर प्रदर्शित की जाती है। इस मामले में, सतत अंतराल समय अवधि का अर्थ है कि एक्स-अक्ष पर दिन 14 दिनों से अलग हैंः 7 मार्च 2005 और अगले बिंदु, 31 मार्च 2005, 5 अप्रैल 2005, और 19 अप्रैल 2005 के बीच अंतर पर ध्यान दें।

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

टिक डेटा क्या है?

टिक डेटा एक्सचेंज में सबसे विस्तृत ट्रेडिंग डेटा संरचना है। यह ऊपर उल्लिखित समय श्रृंखला डेटा का एक विस्तारित रूप भी है, जिसमें शामिल हैंः उद्घाटन मूल्य, उच्चतम मूल्य, सबसे कम मूल्य, नवीनतम मूल्य, व्यापार मात्रा और कारोबार। यदि लेनदेन डेटा की तुलना एक नदी से की जाती है, तो टिक डेटा एक निश्चित क्रॉस सेक्शन पर नदी का डेटा है।

विदेशी एक्सचेंजों की प्रत्येक कार्रवाई को वास्तविक समय में बाजार में धकेल दिया जाएगा, जबकि घरेलू एक्सचेंज एक सेकंड में दो बार जांच करता है। यदि इस अवधि में कार्रवाई होती है, तो एक स्नैपशॉट उत्पन्न और धकेल दिया जाएगा। तुलना में, डेटा धक्का को केवल ऑनटाइम के रूप में माना जा सकता है, ऑनटिक नहीं।

इस ट्यूटोरियल में सभी कोड और समय श्रृंखला डेटा अधिग्रहण एफएमजेड क्वांट प्लेटफॉर्म पर पूरा किया जाएगा।

एफएमजेड क्वांट पर आंकड़े चिह्नित करें

यद्यपि घरेलू टिक डेटा वास्तविक टिक नहीं है, लेकिन यह वास्तविकता के अंतहीन करीब हो सकता है और कम से कम बैकटेस्टिंग के लिए इस डेटा का उपयोग करके वास्तविकता को पुनर्स्थापित कर सकता है। प्रत्येक टिक उस समय बाजार में उत्पाद के मुख्य मापदंडों को प्रदर्शित करता है, और वास्तविक बॉट में हमारा कोड सैद्धांतिक टिक के अनुसार गणना की जाती है दो बार एक सेकंड।

img

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

img

अब आप बुनियादी अवधारणाओं आप इस ट्यूटोरियल को पूरा करने के लिए समझने की जरूरत है सीखा है. इन अवधारणाओं जल्द ही वापस आ जाएगा, और आप इस ट्यूटोरियल में बाद में उनके बारे में और अधिक सीखना होगा.

कार्य वातावरण की स्थापना

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

  • एफएमजेड क्वांट प्लेटफॉर्म के डॉकर सिस्टम की तैनाती डॉकर को तैनात करने के दो तरीके हैंः

विधि ए: उपयोगकर्ता स्वयं सर्वर किराए पर या खरीद सकते हैं और उन्हें विभिन्न क्लाउड कंप्यूटिंग प्लेटफार्मों पर तैनात कर सकते हैं, जैसे कि AWS, अलीबाबा क्लाउड, डिजिटल महासागर और Google क्लाउड। लाभ यह है कि रणनीति सुरक्षा और सिस्टम सुरक्षा दोनों की गारंटी है। एफएमजेड क्वांट प्लेटफॉर्म के लिए, उपयोगकर्ताओं को इस विधि का उपयोग करने के लिए प्रोत्साहित किया जाता है। वितरित तैनाती सर्वर हमलों के छिपे हुए खतरे को समाप्त करती है (चाहे वह ग्राहक हो या स्वयं मंच) ।

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

img

शुरुआत करने वालों के लिए, इस लेख में विधि बी को अपनाया जाएगा।

विशिष्ट कार्य हैंः लॉग इन करेंFMZ.COM, डैशबोर्ड, डॉकर पर क्लिक करें, और डॉकर को किराए पर लेने के लिए एक-क्लिक करें।

सफलतापूर्वक तैनाती के बाद पासवर्ड दर्ज करें, जैसा कि नीचे दिखाया गया हैः

img

  • रोबोट प्रणाली की अवधारणा और डॉकर के बीच संबंध जैसा कि ऊपर उल्लेख किया गया है, डॉकर एक डॉकर सिस्टम की तरह है, और एक डॉकर सिस्टम मानकों के एक सेट की तरह है। हमने मानकों के इस सेट को तैनात किया है। अगला, हमें इस मानक के लिए एक instance उत्पन्न करने की आवश्यकता है, जो एक रोबोट है।

एक रोबोट बनाना बहुत सरल है. डॉकर को तैनात करने के बाद, बाईं ओर बॉट कॉलम पर क्लिक करें, टैग नाम में एक नाम भरें, और अभी तैनात डॉकर का चयन करें. पैरामीटर और K-लाइन अवधि नीचे विशिष्ट स्थिति के अनुसार सेट की जा सकती है, मुख्य रूप से ट्रेडिंग रणनीति के समन्वय में।

img

अब तक हमारे कार्य वातावरण का निर्माण हो चुका है। यह देखा जा सकता है कि यह बहुत सरल और प्रभावी है, और प्रत्येक कार्य अपने स्वयं के कर्तव्यों को पूरा करता है। अगला, हम एक मात्रात्मक रणनीति लिखना शुरू करेंगे।

पायथन में एक सरल ईएमए रणनीति लागू करें

हमने ऊपर समय श्रृंखला डेटा और टिक डेटा की अवधारणाओं का उल्लेख किया है। इसके बाद, हम दोनों अवधारणाओं को जोड़ने के लिए एक सरल ईएमए रणनीति का उपयोग करते हैं।

  • ईएमए रणनीति का मूल सिद्धांत

7-दिवसीय ईएमए जैसे धीमी अवधि ईएमए और 3-दिवसीय ईएमए जैसे तेज़ अवधि ईएमए के माध्यम से। वे एक ही के-लाइन चार्ट पर लागू होते हैं। जब तेज़ अवधि ईएमए धीमी अवधि ईएमए को पार करता है, तो हम इसे गोल्डन क्रॉस कहते हैं; जब धीमी अवधि ईएमए तेजी से अवधि ईएमए के माध्यम से नीचे जाती है, तो हम इसे मंदी क्रॉसओवर कहते हैं।

एक स्थिति खोलने का आधार गोल्डन क्रॉस के साथ लंबी स्थिति खोलना है, और एक मंदी क्रॉसओवर के साथ छोटी स्थिति खोलना है। स्थिति बंद करने का कारण समान है।

चलो खोलते हैंFMZ.COM, खाते, डैशबोर्ड, रणनीति पुस्तकालय में लॉग इन करें, और एक नई रणनीति बनाएं. ऊपरी बाएं कोने में रणनीति लेखन भाषा में पायथन का चयन करें. निम्नलिखित इस रणनीति का कोड है. प्रत्येक पंक्ति में विस्तृत टिप्पणियां हैं. कृपया समझने के लिए अपना समय लें. यह रणनीति एक वास्तविक बॉट रणनीति नहीं है. असली पैसे के साथ प्रयोग न करें. मुख्य उद्देश्य आपको रणनीति लेखन का सामान्य विचार और सीखने के लिए एक टेम्पलेट देना है.

import types # Import the Types module library, which is designed to handle the various data types that will be used in the code.

def main(): # The main function, where the strategy logic begins.
    STATE_IDLE = -1 # Mark position status variables
    state = STATE_IDLE # Mark the current position status
    initAccount = ext.GetAccount() # The spot digital currency trading class library (python version) is used here. Remember to check it when writing the strategy to obtain the initial account information.
    while True: # Enter the loop
        if state == STATE_IDLE : # Here begins the logic of opening positions.
            n = ext.Cross(FastPeriod,SlowPeriod) # The indicator crossover function is used here, for details please see: https://www.fmz.com/strategy/21104.
            if abs(n) >= EnterPeriod : # If n is greater than or equal to the market entry observation period, the market entry observation period here is to prevent positions from being opened indiscriminately as soon as the market opens.
                opAmount = _N(initAccount.Stocks * PositionRatio,3) # Opening position quantity, for the usage of _N, please check the official API documentation.
                Dict = ext.Buy(opAmount) if n > 0 else ext.Sell(opAmount) # Create a variable to store the open position status and execute the open position operation.
                if Dict :  # Check the dict variable and prepare for the following log output.
                    opAmount = Dict['amount']
                    state = PD_LONG if n > 0 else PD_SHORT # Both PD_LONG and PD_SHORT are global constants used to represent long and short positions, respectively.
                    Log("Details of opening positions",Dict,"Cross-period",n) # Log information
        else: # Here begins the logic of closing positions.
            n = ext.Cross(ExitFastPeriod,ExitSlowPeriod) # The indicator crossover function.
            if abs(n) >= ExitPeriod and ((state == PD_LONG and n < 0) or (state == PD_SHORT and n > 0)) : # If the market exit observation period has passed and the current account status is in the position status, then you can determine the Golden Cross or Bearish Crossover.
                nowAccount = ext.GetAccount() # Refresh and get account information again.
                Dict2 = ext.Sell(nowAccount.Stocks - initAccount.Stocks) if state == PD_LONG else ext.Buy(initAccount.Stocks - nowAccount.Stocks) # The logic of closing a position is to close the long position if it is a long position and close the short position if it is a short position.
                state = STATE_IDLE # Mark the position status after closing positions.
                nowAccount = ext.GetAccount() # Refresh and get account information again.
                LogProfit(nowAccount.Balance - initAccount.Balance,'money:',nowAccount.Balance,'currency:',nowAccount.Stocks,'The details of closing positions',Dict2,'Cross-over period:',n) # Log information
        Sleep(Interval * 1000) # Pause the loop for one second to prevent the account from being restricted due to too fast API access frequency.
  • ईएमए रणनीति का बैकटेस्टिंग रणनीति संपादन पृष्ठ पर, हमने रणनीति लिखना समाप्त कर दिया है। इसके बाद, हमें यह देखने के लिए रणनीति का बैकटेस्ट करने की आवश्यकता है कि यह ऐतिहासिक बाजार में कैसे प्रदर्शन करता है। किसी भी मात्रात्मक रणनीति विकास में बैकटेस्टिंग की महत्वपूर्ण भूमिका होती है, लेकिन इसका उपयोग केवल एक महत्वपूर्ण संदर्भ के रूप में किया जा सकता है। बैकटेस्टिंग लाभ गारंटी के बराबर नहीं है, क्योंकि बाजार लगातार बदल रहा है, और बैकटेस्टिंग केवल पीछे की ओर देखने का एक कार्य है, जो अभी भी प्रेरण की श्रेणी से संबंधित है, बाजार कटौती है।

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

img

निम्नलिखित अनुकूलन विकल्प सेट मापदंडों को स्वचालित रूप से अनुकूलित कर सकते हैं। रणनीति डेवलपर्स को इष्टतम विकल्प खोजने में मदद करने के लिए सिस्टम विभिन्न इष्टतम मापदंडों का प्रयास करेगा।

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


संबंधित

अधिक