विदेशी मुद्रा - backtesting - अजगर
बीटी - पायथन के लिए लचीले बैटस्टेस्टिंग बीटी बीटी क्या है, पायथन के लिए एक लचीला बैटिंग टेस्टिंग फ्रेमवर्क है जो मात्रात्मक ट्रेडिंग रणनीतियों का परीक्षण करता था। बैकटेस्टिंग एक निर्धारित डेटा सेट पर एक रणनीति का परीक्षण करने की प्रक्रिया है। यह ढांचे आपको आसानी से रणनीतियों को बनाने की अनुमति देता है जो मिश्रण और विभिन्न अल्गॉस से मेल खाता है। जटिल व्यापार रणनीतियों के तेजी से विकास की सुविधा के लिए रणनीति तर्क के आसानी से परीक्षण योग्य, पुन: प्रयोज्य और लचीली ब्लॉकों के निर्माण को बढ़ावा देना है। लक्ष्य: चाकू को फिर से खोजने से बचाने के लिए और उन्हें नौकरी के महत्वपूर्ण हिस्से पर ध्यान केंद्रित करने - रणनीति विकास बीटी को पायथन में कोडित किया गया है और डेटा विश्लेषण के लिए एक जीवंत और समृद्ध पारिस्थितिक तंत्र शामिल है। मशीन सीखने, सिग्नल प्रोसेसिंग और आंकड़ों के लिए कई पुस्तकालय मौजूद हैं और इन्हें पहिया की फिर से तलाशने से बचने के लिए इस्तेमाल किया जा सकता है - ऐसी अन्य चीजें जो अक्सर अन्य भाषाओं के इस्तेमाल करते हैं, जब डॉन 8217t में उच्च गुणवत्ता वाले, ओपन सोर्स परियोजनाओं का एक ही धन होता है। बीटी एफएफएन के ऊपर बनाया गया है - पायथन के लिए एक वित्तीय फ़ंक्शन लायब्रेरी इसे देखें एक त्वरित उदाहरण यहां बीटी की एक त्वरित स्वाद है: एक सरल रणनीति Backtest Let8217s एक सरल रणनीति बनाने के लिए हम एक मासिक पुनबाधित, लंबी-लंबी रणनीति तैयार करेंगे, जहां हम संपत्ति के हमारे ब्रह्मांड में प्रत्येक परिसंपत्ति पर बराबर वज़न देते हैं। सबसे पहले, हम कुछ डेटा डाउनलोड करेंगे। डिफ़ॉल्ट रूप से, bt. get (उपनाम के लिए ffn. get) याहू फाइनेंस से समायोजित बंद डाउनलोड करता है हम इस डेमो के प्रयोजनों के लिए 1 जनवरी, 2010 से शुरू होने वाले कुछ डेटा डाउनलोड करेंगे। हमारे पास हमारे डेटा होने के बाद, हम अपनी रणनीति तैयार करेंगे रणनीति वस्तु में विभिन्न अल्गोस के संयोजन के द्वारा रणनीति तर्क शामिल है अंत में, हम एक बैकटेस्ट बनाएंगे जो डेटा सेट के साथ एक रणनीति का तार्किक संयोजन है। एक बार ये किया जाता है, हम बैकटेस्ट चला सकते हैं और परिणामों का विश्लेषण कर सकते हैं। अब हम अपने बैकटेस्ट के परिणामों का विश्लेषण कर सकते हैं परिणाम ऑब्जेक्ट एफएफएन के आसपास एक पतली आवरण है। ग्रुपस्टैट्स जो कुछ सहायक विधियों को जोड़ता है। पायथन के साथ ईंट-प्रेरित बैटिंगिंग - भाग I हमने क्वांटस्टार्ट पर पिछले कुछ महीनों में पैथॉन और पांडा का उपयोग करने वाले विभिन्न व्यापारिक रणनीतियों का बैकस्टेशन किया। पंडों की सदिश प्रकृति से यह सुनिश्चित होता है कि बड़े डेटासेट्स पर कुछ परिचालन बहुत तेज़ हैं हालांकि, जिस तिथि पर हमने अध्ययन किया है, वेक्टरयुक्त बैटरस्टर के रूप में व्यापार की निष्कासन को नकल करने के तरीके में कुछ कमियां हैं। इस श्रृंखला के लेखों में हम एक ऐतिहासिक चालन सिमुलेशन के लिए एक अधिक यथार्थवादी दृष्टिकोण पर चर्चा करने जा रहे हैं, जो कि एक पायदान के माध्यम से एक ईवेंट संचालित बैकटेस्टिंग वातावरण का निर्माण कर रहा है। इवेंट-चालित सॉफ़्टवेयर इससे पहले कि हम इस तरह के बैकएस्टर के विकास के बारे में सोचते हैं, हमें घटना संचालित प्रणालियों की अवधारणा को समझना होगा। वीडियो गेम ईवेंट-संचालित सॉफ़्टवेयर के लिए एक प्राकृतिक उपयोग के मामले प्रदान करते हैं और एक्सप्लोर करने के लिए एक सरल उदाहरण प्रदान करते हैं। एक वीडियो गेम में कई घटक होते हैं जो उच्च फ़्रेमरेट्स पर वास्तविक समय सेटिंग में एक-दूसरे के साथ सहभागिता करते हैं। यह अनंत लूप के भीतर गणना के संपूर्ण सेट को चलाने के द्वारा नियंत्रित किया जाता है जिसे इवेंट-लूप या गेम-लूप के रूप में जाना जाता है। गेम-लूप के प्रत्येक टिकट पर एक फ़ंक्शन को नवीनतम ईवेंट प्राप्त करने के लिए कहा जाता है। जो खेल के भीतर कुछ संबंधित पूर्व कार्रवाई से उत्पन्न होगा। घटना की प्रकृति के आधार पर, जिसमें कुंजी-प्रेस या माउस क्लिक शामिल हो सकती है, कुछ बाद की कार्रवाई की जाती है, जो या तो लूप समाप्त कर देगा या कुछ अतिरिक्त इवेंट्स उत्पन्न करेगा। प्रक्रिया तब जारी रहेगी यहां कुछ उदाहरण छद्म कोड है: कोड लगातार नए कार्यक्रमों की जांच कर रहा है और फिर इन घटनाओं के आधार पर कार्रवाई कर रहा है। विशेष रूप से यह वास्तविक समय प्रतिक्रिया से निपटने के भ्रम की अनुमति देता है क्योंकि कोड निरंतर अवरुद्ध हो रहा है और ईवेंट की जांच की जाती है। जैसे ही स्पष्ट हो जाए, उच्च आवृत्ति व्यापार सिमुलेशन को पूरा करने के लिए यह सही है। इवेंट-प्रेरित बैटरएस्टर इवेंट-चालित सिस्टम एक वेक्टर युक्त दृष्टिकोण पर कई फायदे क्यों प्रदान करते हैं: कोड पुन: उपयोग - एक घटना-संचालित बैकस्टर, डिज़ाइन द्वारा, दोनों का पिछला बैकटीस्टिंग और लाइव ट्रेडिंग के लिए इस्तेमाल किया जा सकता है, जो न्यूनतम स्विच-आउट घटकों के साथ है। यह वेक्टर वाले बैकस्टेर्स के बारे में सच नहीं है, जहां सांख्यिकीय विश्लेषण करने के लिए सभी डेटा एक बार उपलब्ध होने चाहिए। लुकआहेड पूर्वाग्रह - एक घटना-संचालित बैटरस्टर के साथ-साथ कोई नजरिया पूर्वाग्रह नहीं है क्योंकि बाज़ार डेटा रसीद को उस घटना के रूप में माना जाता है जिस पर कार्रवाई की जानी चाहिए। इस प्रकार, बाजार के आंकड़ों के साथ एक घटना-संचालित बैटस्टर को फ़ीड करने के लिए संभव है, एक ऑर्डर प्रबंधन और पोर्टफोलियो सिस्टम कैसे व्यवहार करेगा। यथार्थवाद - घटना-आधारित बैटरस्टेर्स आदेशों को निष्पादित करने और लेन-देन की लागत के अनुसार महत्वपूर्ण अनुकूलन की अनुमति देते हैं। एक कस्टम एक्सचेंज हेन्डलर का निर्माण किया जा सकता है क्योंकि यह बुनियादी बाजार और सीमा के आदेश, साथ ही बाजार पर खुले (एमओओ) और मार्केट-ऑन-क्लोज़ (एमओसी) को संभालने के लिए सीधा है। यद्यपि इवेंट-चालित सिस्टम कई फायदे के साथ आते हैं, वे सरल vectorised सिस्टम पर दो प्रमुख नुकसान से पीड़ित हैं। सबसे पहले वे लागू करने और परीक्षण करने के लिए काफी अधिक जटिल हैं। बगों को पेश करने की अधिक संभावना के कारण अधिक चलती हिस्से हैं इस उचित सॉफ्टवेयर परीक्षण पद्धति को कम करने के लिए जैसे कि परीक्षण-आधारित विकास को नियोजित किया जा सकता है। दूसरे वे एक वेक्टरयुक्त प्रणाली की तुलना में निष्पादित करने के लिए धीमी हैं। गणितीय गणनाओं को पूरा करते समय इष्टतम वेक्टर वाले कार्यों का उपयोग करने में असमर्थ हैं। हम बाद में लेखों में इन सीमाओं को दूर करने के तरीकों पर चर्चा करेंगे। इवेंट-प्रेरित बैटरएस्टर अवलोकन एक बैकटेस्टिंग सिस्टम के लिए ईवेंट-संचालित दृष्टिकोण को लागू करने के लिए हमारे घटकों (या ऑब्जेक्ट्स) को परिभाषित करना आवश्यक है जो विशिष्ट कार्यों को संभालता है: ईवेंट - ईवेंट ईवेंट-चालित सिस्टम की मौलिक कक्षा इकाई है। इसमें एक प्रकार (जैसे मार्केट, सिग्नल, ऑर्डर या फ़िल) होता है जो निर्धारित करता है कि इसे ईवेंट-लूप के भीतर कैसे नियंत्रित किया जाएगा। ईवेंट कतार - ईवेंट कतार एक इन-मेमोरी पायथन क्यू ऑब्जेक्ट है जो सभी इवेंट सब-क्लास ऑब्जेक्ट को संग्रहीत करता है जो शेष सॉफ्टवेयर द्वारा उत्पन्न होते हैं। डाटाहाण्डलर - डाटाहाण्डलर एक सार बेस क्लास (एबीसी) है जो कि ऐतिहासिक या लाइव दोनों बाजार डेटा को संभालने के लिए इंटरफ़ेस प्रस्तुत करता है। यह महत्वपूर्ण लचीलापन प्रदान करता है क्योंकि रणनीति और पोर्टफोलियो मॉड्यूल इस प्रकार दोनों तरीकों के बीच पुन: उपयोग किए जा सकते हैं। डेटाहाण्डलर प्रणाली के हर दिल की धड़कन पर एक नया MarketEvent उत्पन्न करता है (नीचे देखें)। रणनीति - रणनीति एबीसी भी है जो बाज़ार डेटा लेने और इसी सिग्नल एवलेंट्स पैदा करने के लिए एक इंटरफ़ेस प्रस्तुत करता है, जो अंततः पोर्टफोलियो ऑब्जेक्ट द्वारा उपयोग की जाती है। एक सिग्नल एवेंट में एक टिकर प्रतीक, एक दिशा (लंबी या लघु) और एक टाइमस्टैम्प शामिल है। पोर्टफोलियो - यह एक एबीसी है जो रणनीति के लिए वर्तमान और बाद की स्थिति से जुड़ी ऑर्डर प्रबंधन का प्रबंधन करता है। यह पोर्टफोलियो में जोखिम प्रबंधन भी करता है, जिसमें सेक्टर एक्सपोज़र और पोजिशन साइज़िंग भी शामिल है। अधिक परिष्कृत कार्यान्वयन में इसे जोखिम प्रबंधन क्लास में सौंप दिया जा सकता है। पोर्टफोलियो कतार से सिग्नल एवेन्ट्स लेता है और कतार में जोड़ा गया OrderEvents उत्पन्न करता है। निष्पादनहैंडलर - निष्पादनहाण्डलर ब्रोकरेज के लिए एक कनेक्शन को सिम्युलेटर बनाता है। हेन्डलर की नौकरी कतार से क्रमइवेन्ट ले और उनको निष्पादित करना है, या तो एक सिम्युलेटेड दृष्टिकोण के माध्यम से या यकृत ब्रोकरेज से वास्तविक कनेक्शन के लिए है। एक बार आदेश निष्पादित किए जाते हैं तो हैंडलर FillEvents बनाता है, जो बताता है कि वास्तव में क्या किया गया है, जिसमें फीस, कमीशन और स्लीपेज शामिल हैं (यदि मॉडल किया गया है)। लूप - इन सभी घटकों को एक इवेंट-लूप में लपेटा जाता है जो सभी इवेंट प्रकारों को ठीक से संभालता है, उन्हें उचित घटक के लिए रूटिंग करता है। यह एक ट्रेडिंग इंजिन का एक बुनियादी मॉडल है। विस्तार के लिए महत्वपूर्ण गुंजाइश है, खासकर पोर्टफोलियो के उपयोग के संबंध में। इसके अलावा लेन-देन लागत मॉडल को अलग-अलग भी अपनी कक्षा के पदानुक्रम में समझा जा सकता है। इस स्तर पर यह इस श्रृंखला के लेखों में बिना किसी जटिल जटिलता का परिचय देता है इसलिए हम वर्तमान में इसके बारे में और चर्चा नहीं करेंगे। बाद के ट्यूटोरियल में हम संभवतः अतिरिक्त यथार्थवाद को शामिल करने के लिए प्रणाली का विस्तार करेंगे। यहां पायथन कोड का स्निपेट है जो दर्शाता है कि बैकएस्टर व्यवहार कैसे करता है। कोड में आने वाले दो लूप हैं बाहरी लूप का उपयोग बैकटास्टर को दिल की धड़कन देने के लिए किया जाता है। लाइव ट्रेडिंग के लिए यह आवृत्ति है जिस पर नए मार्केट डेटा का सर्वेक्षण किया जाता है। बैकटेस्टिंग रणनीतियों के लिए यह कठोर रूप से जरूरी नहीं है क्योंकि बैकस्टर ड्रिप-फीड फॉर्म में प्रदान किए गए बाजार डेटा का उपयोग करता है (सलाखों को देखें। अपडेट बार्स () लाइन)। आंतरिक पाश वास्तव में इवेंट घटनाओं से कतार ऑब्जेक्ट को संभालता है विशिष्ट घटनाओं को संबंधित घटक को सौंप दिया जाता है और बाद में नई घटनाओं को कतार में जोड़ दिया जाता है। जब ईवेंट कतार रिक्त है, तो दिल की धड़कन लूप जारी है: यह एक मूल रूपरेखा है कि एक इवेंट-संचालित बैटेस्टर कैसे तैयार किया गया है। अगले लेख में हम इवेंट श्रेणी के पदानुक्रम पर चर्चा करेंगे। ऐतिहासिक डेटा के आधार पर, एफएक्स बाजार के लिए बुनियादी व्यापार रणनीतियों का बैकअप लेने के लिए एक आवेदन। यह कोड पायथन 2.7 के लिए लिखा है, और यह पायथन के साथ संगत नहीं है 3. पूर्वापेक्षाएँ: Tkinter प्रोग्राम चलाने के लिए, सभी फाइलें डाउनलोड करें, एक ही निर्देशिका संरचना को बनाए रखें, और पायथन इंटरप्रेटर से inputhandling. py फ़ाइल को चलाने के लिए। पैरामीटर सेटिंग्स इस प्रकार हैं: प्रारंभ दिनांक: तारीखें जो ऐतिहासिक डेटा को बाध्य करती हैं, जिनका परीक्षण किया जा रहा है प्रारंभिक जमा: टाइमफ़्रेम के साथ शुरू करने के लिए ब्रोकरेज खाते में धन की राशि (यूएसडी): ऐतिहासिक प्रत्येक बार की चौड़ाई जो डेटा का परीक्षण किया जा रहा है वह प्रत्येक रणनीति के लिए उपयोग की जाने वाली समय सीमा है: केवल EURUSD, USDJPY, GBPUSD, और यूएसडीसीएचएफ के लिए शामिल डेटा के साथ समर्थन व्यापार की स्थिति: केवल लंबी स्थिति, शॉर्ट पोजिशन, या दोनों व्यापार को शामिल करने के लिए बैकटेस्ट को प्रतिबंधित करें मानदंड: ऐतिहासिक ट्रेडों को अनुकरण करने के लिए इस्तेमाल की जाने वाली मुख्य रणनीति उत्तपन (मार्जिन) लीवरेज (मार्जिन): अधिकतम लाभ उठाने के अनुपात अनुमोदित पसंदीदा लूत आकार: स्थिति खोले जाने पर कारोबार करने के लिए निश्चित आकार का आकार। यदि मुक्त मार्जिन बहुत कम आकार को सीमित करता है, तो यह परीक्षण के दौरान समायोजित किया जाएगा। स्प्रेड मॉडलिंग तकनीक: औसत स्प्रेड - मान लें कि फैलता है पूरे ऐतिहासिक डेटा में स्थिर रहें व्यापार प्रबंधन तकनीक: टीपीएसएल - निश्चित कीमत का एक निश्चित लाभ लेता है और प्रवेश स्तर से पिप्स में नुकसान का स्तर बंद करता है मूल्य SL - स्टॉप लॉस को कीमत का प्रतिशत होने के लिए सेट करें हर बार अपडेट करें एक बार ये पैरामीटर दर्ज हो जाएंगे, तो यह प्रोग्राम यह निर्धारित करने के लिए कि अंतिम खाता शेष क्या होगा, बार विश्लेषण द्वारा पट्टी का उपयोग करके एक मूल backtest चलाएगा। यह कार्यक्रम अधिक व्यापार रणनीतियों को जोड़कर बढ़ाया जा सकता है। उन्हें मूविंग एवरेज और स्टोचस्टिक रणनीतियों के समान इंटरफ़ेस को लागू करना चाहिए। आप इस समय उस क्रिया को नहीं कर सकते आपने दूसरे टैब या विंडो के साथ साइन इन किया है अपना सत्र ताज़ा करने के लिए पुनः लोड करें आपने किसी अन्य टैब या विंडो में साइन आउट किया है अपना सत्र ताज़ा करने के लिए पुनः लोड करें
Comments
Post a Comment