पायथन एल्गोरिथम ट्रेडिंग लाइब्रेरी PyAlgoTrade एक पायथन एल्गोरिथम ट्रेडिंग लाइब्रेरी है जो पेपर-ट्रेडिंग और लाइव-ट्रेडिंग के लिए बैकस्टेस्टिंग और समर्थन पर ध्यान केंद्रित करता है। कहें कि आपके पास एक व्यापारिक रणनीति के लिए एक विचार है और आप इसे ऐतिहासिक डेटा के साथ मूल्यांकन करना चाहते हैं और देखें कि यह कैसे व्यवहार करता है। PyAlgoTrade आपको न्यूनतम प्रयास के साथ ऐसा करने की अनुमति देता है। मुख्य विशेषताएं पूरी तरह से प्रलेखित। घटना संचालित । बाजार, सीमा, रोकें और बंद करें आदेश का समर्थन करता है याहू वित्त, Google वित्त और NinjaTrader सीएसवी फाइलों का समर्थन करता है सीएसवी प्रारूप में समय-श्रृंखला डेटा के किसी भी प्रकार का समर्थन करता है, उदाहरण के लिए क्वाडल बिटस्टैम्प के माध्यम से बिटकॉइन ट्रेडिंग समर्थन। तकनीकी संकेतक और फिल्टर जैसे एसएमए, डब्लूएमए, एएमए, आरएसआई, बोलिन्जर बैंड, हर्स्ट एक्सपोनेंट और अन्य। शॉर्ट अनुपात और ड्रॉडाउन विश्लेषण जैसे प्रदर्शन मीट्रिक रीयलटाइम में ट्विटर ईवेंट को संभालना इवेंट प्रोफाइलर टीए-लीब एकीकरण क्षैतिज रूप से स्केल करने के लिए बहुत आसान है, अर्थात, एक रणनीति का समर्थन करने के लिए एक या अधिक कंप्यूटरों का उपयोग करना। PyAlgoTrade मुक्त, खुला स्रोत है, और यह अपाचे लाइसेंस, संस्करण 2.0 के तहत लाइसेंस प्राप्त किया गया है। पायथन के साथ ईंट-प्रेरित बैटिंग करना - भाग I हमने क्वांटस्टार्ट पर पिछले कुछ महीनों में पैथॉन और पांडा का उपयोग करने वाले विभिन्न व्यापारिक रणनीतियों का समर्थन किया। पंडों की सदिश प्रकृति से यह सुनिश्चित होता है कि बड़े डेटासेट्स पर कुछ परिचालन बहुत तेज़ हैं हालांकि, जिस तिथि पर हमने अध्ययन किया है, वेक्टरयुक्त बैटरस्टर के रूप में व्यापार की निष्कासन को नकल करने के तरीके में कुछ कमियां हैं। इस श्रृंखला के लेखों में हम एक ऐतिहासिक चालन सिमुलेशन के लिए एक अधिक यथार्थवादी दृष्टिकोण के बारे में चर्चा करने जा रहे हैं, जो कि एक पायदान के माध्यम से एक ईवेंट संचालित बैकटेस्टिंग वातावरण का निर्माण कर रहा है। इवेंट-चालित सॉफ़्टवेयर इससे पहले कि हम इस तरह के बैकएस्टर के विकास के बारे में सोचते हैं, हमें घटना संचालित प्रणालियों की अवधारणा को समझना होगा। वीडियो गेम ईवेंट-संचालित सॉफ़्टवेयर के लिए एक प्राकृतिक उपयोग के मामले प्रदान करते हैं और एक्सप्लोर करने के लिए एक सरल उदाहरण प्रदान करते हैं। एक वीडियो गेम में कई घटक होते हैं जो उच्च फ़्रेमरेट्स पर वास्तविक समय सेटिंग में एक-दूसरे के साथ सहभागिता करते हैं। यह अनंत लूप के भीतर गणना के संपूर्ण सेट को चलाने के द्वारा नियंत्रित किया जाता है जिसे ईवेंट-लूप या गेम-लूप के रूप में जाना जाता है। गेम-लूप के प्रत्येक टिकट पर एक फ़ंक्शन को नवीनतम ईवेंट प्राप्त करने के लिए कहा जाता है। जो खेल के भीतर कुछ संबंधित पूर्व कार्रवाई से उत्पन्न होगा। घटना की प्रकृति के आधार पर, जिसमें एक कुंजी-प्रेस या माउस क्लिक शामिल हो सकता है, कुछ बाद की कार्रवाई की जाती है, जो या तो लूप समाप्त कर देगा या कुछ अतिरिक्त इवेंट्स उत्पन्न करेगा। प्रक्रिया तब जारी रहेगी यहां कुछ उदाहरण छद्म कोड है: कोड लगातार नए कार्यक्रमों की जांच कर रहा है और फिर इन घटनाओं के आधार पर कार्रवाई कर रहा है। विशेष रूप से यह वास्तविक समय प्रतिक्रिया से निपटने के भ्रम की अनुमति देता है क्योंकि कोड निरंतर अवरुद्ध हो रहा है और ईवेंट की जांच की जाती है। जैसे ही स्पष्ट हो जाए, उच्च आवृत्ति व्यापार सिमुलेशन को पूरा करने के लिए यह सही है। इवेंट-प्रेरित बैटरएस्टर इवेंट-चालित सिस्टम एक वेक्टर युक्त दृष्टिकोण पर कई फायदे क्यों प्रदान करते हैं: कोड पुन: उपयोग - एक घटना-संचालित बैकस्टर, डिज़ाइन द्वारा, दोनों का पिछला बैकटीस्टिंग और लाइव ट्रेडिंग के लिए इस्तेमाल किया जा सकता है, जो न्यूनतम स्विच-आउट घटकों के साथ है। यह वेक्टर वाले बैकस्टेर्स के बारे में सच नहीं है, जहां सांख्यिकीय विश्लेषण करने के लिए सभी डेटा एक बार उपलब्ध होने चाहिए। लुकआहेड पूर्वाग्रह - एक घटना-संचालित बैटरस्टर के साथ-साथ कोई नजरिया पूर्वाग्रह नहीं है क्योंकि बाज़ार डेटा रसीद को उस घटना के रूप में माना जाता है जिस पर कार्रवाई की जानी चाहिए। इस प्रकार, बाजार के आंकड़ों के साथ एक घटना-संचालित बैटस्टर को फ़ीड करने के लिए संभव है, जिसमें एक ऑर्डर मैनेजमेंट और पोर्टफोलियो सिस्टम कैसे व्यवहार करेगा। यथार्थवाद - घटना-आधारित बैटरस्टेर्स आदेशों को निष्पादित करने और लेन-देन की लागत के अनुसार महत्वपूर्ण अनुकूलन की अनुमति देते हैं। एक कस्टम एक्सचेंज हेन्डलर का निर्माण किया जा सकता है क्योंकि यह बुनियादी बाजार और सीमा के आदेश, साथ ही बाजार पर खुले (एमओओ) और मार्केट-ऑन-क्लोज़ (एमओसी) को संभालने के लिए सीधा है। यद्यपि इवेंट-चालित सिस्टम कई फायदे के साथ आते हैं, वे सरल vectorised सिस्टम पर दो प्रमुख नुकसान से पीड़ित हैं। सबसे पहले वे लागू करने और परीक्षण करने के लिए काफी अधिक जटिल हैं। बगों को पेश करने की अधिक संभावना के कारण अधिक चलती हिस्से हैं इस उचित सॉफ्टवेयर परीक्षण पद्धति को कम करने के लिए जैसे कि परीक्षण-आधारित विकास को नियोजित किया जा सकता है। दूसरे वे वेक्टर वाली प्रणाली की तुलना में निष्पादित करने के लिए धीमी गति से होते हैं। गणितीय गणनाओं को पूरा करते समय इष्टतम वेक्टर वाले कार्यों का उपयोग करने में असमर्थ हैं। हम बाद में लेखों में इन सीमाओं को दूर करने के तरीकों पर चर्चा करेंगे। इवेंट-प्रेरित बैटरएस्टर अवलोकन एक बैकटेस्टिंग सिस्टम के लिए ईवेंट-संचालित दृष्टिकोण को लागू करने के लिए हमारे घटकों (या ऑब्जेक्ट्स) को परिभाषित करना आवश्यक है जो विशिष्ट कार्यों को संभालता है: ईवेंट - ईवेंट ईवेंट-चालित सिस्टम की मौलिक कक्षा इकाई है। इसमें एक प्रकार (जैसे मार्केट, सिग्नल, ऑर्डर या फ़िल) होता है जो निर्धारित करता है कि इसे ईवेंट-लूप के भीतर कैसे नियंत्रित किया जाएगा। ईवेंट कतार - ईवेंट कतार एक इन-मेमोरी पायथन क्यू ऑब्जेक्ट है जो सभी इवेंट सब-क्लास ऑब्जेक्ट को संग्रहीत करता है जो शेष सॉफ्टवेयर द्वारा उत्पन्न होते हैं। डाटाहाण्डलर - डाटाहाण्डलर एक सार बेस क्लास (एबीसी) है जो कि ऐतिहासिक या लाइव दोनों बाजार डेटा को संभालने के लिए इंटरफ़ेस प्रस्तुत करता है। यह महत्वपूर्ण लचीलापन प्रदान करता है क्योंकि रणनीति और पोर्टफोलियो मॉड्यूल इस प्रकार दोनों तरीकों के बीच पुन: उपयोग किए जा सकते हैं। डेटाहाण्डलर प्रणाली के हर दिल की धड़कन पर एक नया MarketEvent उत्पन्न करता है (नीचे देखें)। रणनीति - रणनीति एबीसी भी है जो बाज़ार डेटा लेने और इसी सिग्नल एवलेंट्स पैदा करने के लिए एक इंटरफ़ेस प्रस्तुत करता है, जो अंततः पोर्टफोलियो ऑब्जेक्ट द्वारा उपयोग की जाती है। एक सिग्नल एवेंट में एक टिकर प्रतीक, एक दिशा (लंबी या लघु) और एक टाइमस्टैम्प शामिल है। पोर्टफोलियो - यह एक एबीसी है जो रणनीति के लिए वर्तमान और बाद की स्थिति से जुड़ी ऑर्डर प्रबंधन का प्रबंधन करता है। यह पोर्टफोलियो में जोखिम प्रबंधन भी करता है, जिसमें सेक्टर एक्सपोज़र और पोजिशन साइज़िंग भी शामिल है। अधिक परिष्कृत कार्यान्वयन में इसे जोखिम प्रबंधन क्लास में सौंप दिया जा सकता है। पोर्टफोलियो कतार से सिग्नल एवेन्ट्स लेता है और कतार में जोड़ा गया OrderEvents उत्पन्न करता है। निष्पादनहैंडलर - निष्पादनहाण्डलर ब्रोकरेज के लिए एक कनेक्शन को सिम्युलेटर बनाता है। हेन्डलर की नौकरी कतार से क्रमइवेन्ट ले और उनको निष्पादित करना है, या तो एक सिम्युलेटेड दृष्टिकोण के माध्यम से या यकृत ब्रोकरेज से वास्तविक कनेक्शन के लिए है। एक बार आदेश निष्पादित किए जाते हैं तो हैंडलर FillEvents बनाता है, जो बताता है कि वास्तव में क्या किया गया है, जिसमें फीस, कमीशन और स्लीपेज शामिल हैं (यदि मॉडल किया गया है)। लूप - इन सभी घटकों को एक इवेंट-लूप में लपेटा जाता है जो सभी इवेंट प्रकारों को ठीक से संभालता है, उन्हें उचित घटक के लिए रूटिंग करता है। यह एक ट्रेडिंग इंजिन का एक बुनियादी मॉडल है। विस्तार के लिए महत्वपूर्ण गुंजाइश है, खासकर पोर्टफोलियो के उपयोग के संबंध में। इसके अलावा लेन-देन लागत मॉडल को अलग-अलग भी अपनी कक्षा के पदानुक्रम में समझा जा सकता है। इस स्तर पर यह इस श्रृंखला के लेखों के भीतर अनावश्यक जटिलताओं का परिचय देता है इसलिए हम वर्तमान में इसके बारे में और चर्चा नहीं करेंगे। बाद के ट्यूटोरियल में हम संभवतः अतिरिक्त यथार्थवाद को शामिल करने के लिए प्रणाली का विस्तार करेंगे। यहां पायथन कोड का स्निपेट है जो दर्शाता है कि बैकएस्टर व्यवहार कैसे करता है। कोड में आने वाले दो लूप हैं बाहरी लूप का उपयोग बैकटास्टर को दिल की धड़कन देने के लिए किया जाता है। लाइव ट्रेडिंग के लिए यह आवृत्ति है जिस पर नए मार्केट डेटा का सर्वेक्षण किया जाता है। बैकटेस्टिंग रणनीतियों के लिए यह कठोर रूप से जरूरी नहीं है क्योंकि बैकस्टर ड्रिप-फीड फॉर्म में प्रदान किए गए बाजार डेटा का उपयोग करता है (सलाखों को देखें। अपडेट बार्स () लाइन)। आंतरिक पाश वास्तव में इवेंट घटनाओं से कतार ऑब्जेक्ट को संभालता है विशिष्ट घटनाओं को संबंधित घटक को सौंप दिया जाता है और बाद में नई घटनाओं को कतार में जोड़ दिया जाता है। जब ईवेंट कतार रिक्त है, तो दिल की धड़कन लूप जारी है: यह एक मूल रूपरेखा है कि एक इवेंट-संचालित बैकटेस्टर कैसे डिज़ाइन किया गया है। अगले लेख में हम इवेंट क्लास पदानुक्रम पर चर्चा करेंगे। सिर्फ मात्रात्मक ट्रेडिंग के साथ आरंभ करना
Comments
Post a Comment