अध्याय 1 और 2 में, हमने मात्रात्मक व्यापार की मूल बातें और एफएमजेड क्वांट टूल के उपयोगों को सीखा। इस अध्याय में, हम वास्तविक व्यापारिक रणनीतियों को लागू करेंगे। यदि कोई कार्यकर्ता कुछ अच्छा करना चाहता है, तो उसे पहले अपने उपकरण तेज करने होंगे। एक व्यापारिक रणनीति को लागू करने के लिए, आपको पहले एक प्रोग्रामिंग भाषा में महारत हासिल करनी होगी। यह खंड पहले मात्रात्मक व्यापार में मुख्यधारा की प्रोग्रामिंग भाषाओं के साथ-साथ प्रत्येक प्रोग्रामिंग भाषा की विशेषताओं को भी पेश करता है।
एक प्रोग्रामिंग भाषा सीखने से पहले, आपको सबसे पहले
जैसे माता-पिता ने हमें बोलना सिखाया और हमें सिखाया कि दूसरे लोग क्या कह रहे हैं। एक लंबी अवधि के निर्माण और आत्म-सिखने के बाद, हमने इसे जाने बिना बोलना सीखा है, और अन्य बच्चों के बोलने के अर्थ को समझ सकते हैं। कई भाषाएं हैं, जिनमें चीनी, अंग्रेजी, फ्रेंच आदि शामिल हैं, जैसेः
चीनीः हाय वर्ल्ड
हिन्दीः हेलो वर्ल्ड
फ्रेंचः Bonjour tout le monde
यदि आप अपने कंप्यूटर स्क्रीन पर
सी भाषाः डालता है (
जावा भाषा: System.out.println ((
पायथन भाषाः प्रिंट (
आप देख सकते हैं कि कंप्यूटर भाषाओं के अपने विशिष्ट नियम हैं, और कई भाषाएं हैं, और ये भाषा नियम प्रोग्रामिंग भाषाओं का वर्गीकरण हैं जिन्हें हमें आज आपके लिए समझाने की आवश्यकता है। प्रत्येक श्रेणी में, हमें केवल सबसे बुनियादी नियमों को याद रखने की आवश्यकता है। हम इन प्रोग्रामिंग भाषाओं का उपयोग कंप्यूटर के साथ संवाद करने के लिए कर सकते हैं और कंप्यूटर को हमारे निर्देशों के अनुसार संबंधित रणनीति चलाने दे सकते हैं।
संदर्भ और तुलना को सुविधाजनक बनाने के लिए, आपके अनुकूल मात्रात्मक व्यापार प्रोग्रामिंग भाषा चुनें। हम छह सबसे अधिक उपयोग की जाने वाली प्रोग्रामिंग भाषाओं को वर्गीकृत करेंगेः पायथन, मैटलैब / आर, सी ++, जावा / सी #, ईजीलैंग्वेज, और विजुअल प्रोग्रामिंग लैंग्वेज (जैसा कि नीचे दिखाया गया है) ।
हम उन्हें कार्यात्मक क्षमता, गति, विस्तार और सीखने की कठिनाई के आधार पर रेट करते हैं। उदाहरण के लिए, कार्यात्मक सीमा पर 1 से 5 का स्कोर शक्तिशाली है, और 1 अंक का मतलब कम कार्यक्षमता है। (जैसा कि ऊपर दिखाया गया है) दृश्य प्रोग्रामिंग और ईजीलैंग्वेज सीखना आसान और बहुत नया है; पायथन में शक्तिशाली विस्तार क्षमताएं हैं और अधिक जटिल ट्रेडिंग रणनीतियों को विकसित करने के लिए उपयुक्त है; सी ++ प्रोग्रामिंग सबसे तेज और उच्च आवृत्ति वाले व्यापारियों के लिए अधिक उपयुक्त है।
लेकिन प्रत्येक प्रोग्रामिंग भाषा के लिए, मूल्यांकन मुख्य रूप से मात्रात्मक व्यापार के क्षेत्र में आवेदन के लिए है। और व्यक्ति के व्यक्तिपरक घटक के साथ। आप भी उन्हें स्वयं का पता लगाने के लिए स्वागत कर रहे हैं, अगला, हम इन प्रोग्रामिंग भाषाओं को एक-एक करके पेश करना शुरू करेंगे।
दृश्य प्रोग्रामिंग लंबे समय के लिए चारों ओर किया गया है, इस तरह के "आप क्या देखते हैं कि आप क्या मिलता है" प्रोग्रामिंग विचार, नियंत्रण मॉड्यूल की एक किस्म के साथ सुसज्जित, सिर्फ खींचें और ड्रॉप करके, आप कोड तर्क का निर्माण कर सकते हैं, व्यापार रणनीति डिजाइन पूरा, प्रक्रिया बिल्डिंग ब्लॉक की तरह है।
जैसा कि ऊपर दिखाया गया है, वही प्रक्रिया केवल कुछ लाइनों का कोड है एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म पर दृश्य प्रोग्रामिंग। यह प्रोग्रामिंग की सीमा को बहुत कम करता है, खासकर उन व्यापारियों के लिए जो प्रोग्रामिंग को बिल्कुल नहीं समझते हैं, जो एक महान ऑपरेटिंग अनुभव है।
चूंकि इस दृश्य प्रोग्रामिंग की अंतर्निहित कार्यान्वयन रणनीति को सी ++ में परिवर्तित किया जाता है, इसलिए इसका कार्यक्रम की रनिंग गति पर बहुत कम प्रभाव पड़ता है। हालांकि, कार्यक्षमता और स्केलेबिलिटी कमजोर है, और एक व्यापारिक रणनीति विकसित करना असंभव है जो बहुत जटिल और बहुत परिष्कृत है।
तथाकथित EasyLanguage कुछ व्यावसायीकृत मात्रात्मक ट्रेडिंग सॉफ्टवेयर के लिए अद्वितीय प्रोग्रामिंग भाषा को संदर्भित करता है। हालांकि इन भाषाओं में कुछ ऑब्जेक्ट-उन्मुख विशेषताएं भी हैं, वे मुख्य रूप से एप्लिकेशन में स्क्रिप्ट की जाती हैं। व्याकरण के मामले में, यह हमारी प्राकृतिक भाषा के बहुत करीब भी है। मात्रात्मक ट्रेडिंग के शुरुआती लोगों के लिए, शुरुआती बिंदु के रूप में EasyLanguage का उपयोग करना एक अच्छा विकल्प है। उदाहरण के लिए, FMZ Quant प्लेटफॉर्म पर M भाषा।
इस प्रकार की स्क्रिप्टिंग भाषा में रणनीति बैकटेस्टिंग और अपने विशिष्ट सॉफ्टवेयर में वास्तविक बाजार में कोई समस्या नहीं है, लेकिन विस्तार के मामले में, यह अक्सर सीमित होती है। उदाहरण के लिए, रणनीति डेवलपर्स बाहरी एपीआई को कॉल नहीं कर सकते हैं। और चलने की गति पर, यह स्क्रिप्टिंग भाषा अपनी स्वयं की आभासी मशीन पर चलती है, और प्रदर्शन अनुकूलन जावा / सी # के रूप में अच्छा है।
जैसा कि नीचे दिए गए चित्र में दिखाया गया है, Stackoverflow पर, हाल के वर्षों में मुख्यधारा की प्रोग्रामिंग भाषाओं तक पहुंच की संख्या में बहुत बदलाव नहीं हुआ है, और केवल पायथन ही जबरदस्त वृद्धि पर है। पायथन का उपयोग वेब विकास, मशीन लर्निंग, डीप लर्निंग, डेटा विश्लेषण आदि के लिए किया जा सकता है। यह अपनी लचीलापन और खुलेपन के कारण सबसे बहुमुखी भाषा बन गई है। मात्रात्मक निवेश के क्षेत्र में भी यही सच है। वर्तमान में, वैश्विक मात्रात्मक प्लेटफॉर्म ज्यादातर पायथन पर आधारित हैं।
पायथन की बुनियादी डेटा संरचना सूची और शब्दकोश बहुत शक्तिशाली हैं और डेटा विश्लेषण की लगभग सभी आवश्यकताओं को पूरा कर सकते हैं। यदि आपको एक तेज़, अधिक व्यापक डेटा संरचना की आवश्यकता है, तो NumPy और SciPy की सिफारिश की जाती है। इन दो पुस्तकालयों को मूल रूप से पायथन वैज्ञानिक कंप्यूटिंग के लिए मानक पुस्तकालय कहा जाता है।
वित्तीय इंजीनियरिंग के लिए, अधिक लक्षित पुस्तकालय पांडा है, जिसमें दो डेटा संरचनाएं, श्रृंखला और डेटाफ्रेम हैं, जो समय श्रृंखलाओं को संसाधित करने के लिए आदर्श हैं।
गति के मामले में, पायथन खेल के बीच में है, सी ++ की तुलना में धीमा है, और आसान भाषा की तुलना में तेज़ है, मुख्य रूप से क्योंकि पायथन एक गतिशील भाषा है जो एक शुद्ध पायथन भाषा के रूप में सामान्य गति से चलती है। लेकिन आप सी ++ की गति के करीब आने के लिए कुछ कार्यों को स्थिर रूप से अनुकूलित करने के लिए Cython का उपयोग कर सकते हैं।
एक गोंद भाषा के रूप में, पायथन स्केलेबिलिटी के मामले में नंबर एक है। अन्य भाषाओं के साथ व्यापक रूप से इंटरफेस करने में सक्षम होने के अलावा, एक्सटेंशन एपीआई का डिज़ाइन उपयोग करने में बहुत आसान है। सीखने की कठिनाई के मामले में, पायथन में एक सरल वाक्यविन्यास, उच्च कोड पठनीयता और आसान प्रविष्टि है।
मैटलैब और आर भाषाएं हैं। ये दोनों भाषाएं मुख्य रूप से डेटा विश्लेषण के लिए उन्मुख हैं। भाषा रचनाकारों ने व्याकरण में वैज्ञानिक संचालन के लिए बहुत अधिक डिजाइन किया है, जो मात्रात्मक व्यापार संचालन के लिए प्राकृतिक समर्थन की विशेषता है। हालांकि, आवेदन रेंज सीमित है, और यह आमतौर पर डेटा विश्लेषण और रणनीति बैकटेस्टिंग के लिए उपयोग किया जाता है। व्यापार प्रणाली और रणनीति एल्गोरिथ्म विकास के लिए, इसका उपयोग में आसानी और स्थिरता कम है।
इसके अलावा, उनकी गति और स्केलेबिलिटी अपेक्षाकृत खराब है, क्योंकि मैटलैब और आर भाषा एक अद्वितीय भाषा वर्चुअल मशीन पर चलती है। प्रदर्शन के मामले में, उनकी वर्चुअल मशीनें जावा और सी # से बहुत खराब हैं। लेकिन क्योंकि उनका व्याकरण गणितीय अभिव्यक्ति सूत्र के करीब है, इसलिए यह सीखना अपेक्षाकृत आसान है।
C++ एक सामान्य प्रयोजन प्रोग्रामिंग भाषा है जो प्रक्रियात्मक प्रोग्रामिंग, डेटा अमूर्तकरण, ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग, जेनेरिक प्रोग्रामिंग और डिजाइन पैटर्न जैसे कई प्रोग्रामिंग पैटर्न का समर्थन करती है। आप C++ में उन सभी कार्यों को लागू कर सकते हैं जिन्हें आप प्राप्त करना चाहते हैं, लेकिन इस तरह की शक्तिशाली भाषा का सबसे बड़ा नुकसान यह है कि यह सीखना बहुत मुश्किल है, जैसे टेम्पलेट, पॉइंटर, मेमोरी लीक, और इसी तरह।
वर्तमान में, सी ++ अभी भी उच्च क्षमता, उच्च आवृत्ति व्यापार के लिए पसंदीदा प्रोग्रामिंग भाषा है। इसका कारण सरल है। क्योंकि सी ++ भाषा सुविधाओं को कंप्यूटर की अंतर्निहित परत तक पहुंचना आसान है, यह उच्च प्रदर्शन बैकटेस्टिंग और निष्पादन प्रणालियों को विकसित करने के लिए सबसे प्रभावी उपकरण है जो बड़ी मात्रा में डेटा को संसाधित करते हैं।
जावा / सी # वर्चुअल मशीनों पर चलने वाली स्थिर भाषाएं हैं। सी ++ की तुलना में, कोई सरणी सीमा से बाहर नहीं है, कोई कोरडंप नहीं है, फेंके गए अपवाद त्रुटि कोड का सटीक पता लगा सकते हैं, स्वचालित कचरा संग्रह तंत्र ला सकते हैं, मेमोरी रिसाव के बारे में चिंता करने की आवश्यकता नहीं है और इसी तरह। इसलिए व्याकरण सीखने की कठिनाई के मामले में, वे सी ++ की तुलना में भी आसान हैं। गति के मामले में, क्योंकि उनकी वर्चुअल मशीनें रनटाइम पर संकलित जेआईटी कार्यों के साथ आती हैं, गति केवल सी ++ के बाद दूसरी है।
लेकिन कार्यक्षमता के मामले में, यह C ++ की तरह अंतर्निहित व्यापार प्रणाली का अनुकूलन करना असंभव है। विस्तार प्रदर्शन के मामले में, यह C ++ की तुलना में कमजोर है, क्योंकि उनके विस्तार को C पुल को पार करने की आवश्यकता है, और दोनों भाषाएं स्वयं वर्चुअल मशीन पर चलती हैं, इसलिए फ़ंक्शन मॉड्यूल का विस्तार करते समय, आपको एक और परत की दीवार पार करने की आवश्यकता होती है।
हालांकि, अंत में, मात्रात्मक प्रोग्रामिंग भाषा महत्वपूर्ण नहीं है, महत्वपूर्ण बात विचार है। एफएमजेड क्वांट एम भाषा और दृश्य प्रोग्रामिंग भाषा मात्रात्मक व्यापार में प्रवेश करने के लिए एक कदम के रूप में पूरी तरह से कोई समस्या नहीं है। मूल बातों के बाद, सुधार लगातार विभिन्न बाजार की स्थितियों का पता लगाने और सी ++ जैसे अधिक अंतर्निहित भाषा का उपयोग करने का प्रयास करना है।
मात्रात्मक व्यापारिक उपकरण के रूप में पायथन भाषा के क्या फायदे हैं?
एम भाषा द्वारा कुछ आम तौर पर इस्तेमाल एपीआई लिखने की कोशिश करें?
अगला अनुभाग सूचना
मेरा मानना है कि उपरोक्त प्रोग्रामिंग भाषा के परिचय के साथ, आपको यह पता होना चाहिए कि इसे कैसे चुनना है, फिर अगले कुछ अध्यायों में, हम प्रोग्रामिंग भाषाओं के वर्गीकरण के आधार पर एक मात्रात्मक व्यापार रणनीति विकसित करेंगे।