0
ध्यान केंद्रित करना
74
समर्थक

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

में बनाया: 2019-08-08 10:05:45, को अपडेट: 2024-12-19 00:24:00
comments   0
hits   4821

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

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

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

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

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

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

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

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

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

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

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

आविष्कारक ने टिक डेटा का परिमाणीकरण किया

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

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

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

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

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

इस भाग के बारे में अधिक जानकारी के लिए कृपया देखें: https://www.fmz.com/bbs-topic/1651

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

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

  • इन्वेंटर क्वांटिटेटिव प्लेटफॉर्म की कस्टोडियन प्रणाली की तैनाती

होस्ट को तैनात करने के दो तरीके हैं:

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

इस भाग के लिए पाठक यहां देख सकते हैं: https://www.fmz.com/bbs-topic/2848

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

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

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

विशिष्ट कार्य इस प्रकार हैं: FMZ.COM पर लॉग इन करें, नियंत्रण केंद्र, होस्ट पर क्लिक करें, और होस्ट पृष्ठ पर होस्ट के एक-क्लिक किराये पर क्लिक करें।

पासवर्ड दर्ज करें। सफल परिनियोजन के बाद, निम्न चित्र दिखाया गया है:

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

  • रोबोट प्रणाली की अवधारणा और मेजबान के साथ उसका संबंध

जैसा कि ऊपर बताया गया है, होस्ट एक डॉकर सिस्टम की तरह है, और एक डॉकर सिस्टम मानकों के एक सेट की तरह है। मानकों के इस सेट को तैनात करने के बाद, हमें इस मानक के लिए एक “इंस्टेंस” बनाने की आवश्यकता है, और यह “इंस्टेंस” एक है रोबोट.

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

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

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

पायथन के साथ एक सरल चलती औसत रणनीति को लागू करना

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

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

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

पोजीशन खोलने का आधार यह है कि जब गोल्डन क्रॉस दिखाई दे तो लॉन्ग ऑर्डर खोलें और जब गोल्डन क्रॉस दिखाई दे तो शॉर्ट ऑर्डर खोलें। यही सिद्धांत पोजीशन बंद करने पर भी लागू होता है।

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

import types # 导入Types模块库,这是为了应对代码中将要用到的各种数据类型

def main(): # 主函数,策略逻辑从这里开始
    STATE_IDLE = -1 # 标记持仓状态变量
    state = STATE_IDLE # 标记当前持仓状态
    initAccount = ext.GetAccount() #这里用到了现货数字货币交易类库(python版),编写策略时记得勾选上,作用是获得账户初始信息
    while True: # 进入循环
        if state == STATE_IDLE : # 这里开始开仓逻辑
            n = ext.Cross(FastPeriod,SlowPeriod) # 这里用到了指标交叉函数,详情请查看https://www.fmz.com/strategy/21104
            if abs(n) >= EnterPeriod : # 如果n大于等于入市观察期,这里的入市观察期是为了防止一开盘就胡乱开仓。
                opAmount = _N(initAccount.Stocks * PositionRatio,3) # 开仓量,关于_N的用法,请查看官方API文档
                Dict = ext.Buy(opAmount) if n > 0 else ext.Sell(opAmount) # 建立一个变量,用于存储开仓状态,并执行开仓操作
                if Dict :  # 查看dict变量的情况,为下面的日志输出做准备
                    opAmount = Dict['amount']
                    state = PD_LONG if n > 0 else PD_SHORT # PD_LONG和PD_SHORT均为全局常量,分别用来表示多头和空头仓位。
                    Log("开仓详情",Dict,"交叉周期",n) # 日志信息
        else: # 这里开始平仓逻辑
            n = ext.Cross(ExitFastPeriod,ExitSlowPeriod) # 指标交叉函数,
            if abs(n) >= ExitPeriod and ((state == PD_LONG and n < 0) or (state == PD_SHORT and n > 0)) : # 如果经过了离市观察期且当前账户状态为持仓状态,进而判断金叉或者死叉
                nowAccount = ext.GetAccount() # 再次刷新和获取账户信息
                Dict2 = ext.Sell(nowAccount.Stocks - initAccount.Stocks) if state == PD_LONG else ext.Buy(initAccount.Stocks - nowAccount.Stocks) # 平仓逻辑,是多头就平多头,是空头就平空头。
                state = STATE_IDLE # 标记平仓后持仓状态。
                nowAccount = ext.GetAccount() # 再次刷新和获取账户信息
                LogProfit(nowAccount.Balance - initAccount.Balance,'钱:',nowAccount.Balance,'币:',nowAccount.Stocks,'平仓详情:',Dict2,'交叉周期:',n) # 日志信息
        Sleep(Interval * 1000) # 循环暂停一秒,防止API访问频率过快导致账户被限制。

  • मूविंग एवरेज रणनीति का बैकटेस्टिंग

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

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

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

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

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