ट्रेडिंग रणनीति का बैकटेस्ट करते समय सबसे महत्वपूर्ण बात क्या है? गति? प्रदर्शन संकेतक?
उत्तर सटीकता है! बैकटेस्ट का उद्देश्य रणनीति के तर्क और व्यवहार्यता को सत्यापित करना है। यह बैकटेस्ट का अर्थ भी है, अन्य माध्यमिक हैं। एक बैकटेस्ट परिणाम जो वास्तव में रणनीति के ऐतिहासिक डेटा को दर्शाता है, उसका एक संदर्भ मूल्य है। वे प्रतीत होता है कि सही बैकटेस्ट वक्र एक अच्छी कहानी बता सकते हैं, लेकिन वास्तविक बाजार वातावरण में नहीं किया जा सकता है।
सटीक बैकटेस्टिंग कैसे प्राप्त करें यह एक समस्या है जो कई मात्रात्मक व्यापारियों की परवाह करती है। पहली बात जो हमें पता लगाने की जरूरत है वह यह है कि व्यापार में क्या डेटा है, क्योंकि डेटा की गुणवत्ता ने काफी हद तक बैकटेस्ट की गुणवत्ता निर्धारित की है।
इन डेटा प्रकारों के लिए, अधिकांश लोग K-लाइन चार्ट पर शुरुआती मूल्य, उच्चतम मूल्य, सबसे कम मूल्य, समापन मूल्य और व्यापारिक मात्रा के बारे में सोच सकते हैं। बेहतर भेद के लिए, हम इन डेटा को सामूहिक रूप से बार डेटा के रूप में संदर्भित करते हैं, जिसे आप इसे K लाइन के रूप में समझ सकते हैं। लेकिन क्या आपने कभी सोचा है कि डेटा कहां से आया है, और इन डेटा का स्रोत कहां है?
वास्तव में, एक्सचेंज से वापस भेजने वाले डेटा में ये बार डेटा नहीं होते हैं, केवल टिक डेटा होते हैं। तो टिक डेटा क्या है? आप एक्सचेंज में डेटा को एक नदी के रूप में चित्रित कर सकते हैं। इस नदी में प्रत्येक आदेश के लिए विस्तृत डेटा होता है। टिक डेटा डेटा स्ट्रीम में एक स्लाइस है। आवृत्ति 2 स्लाइस प्रति सेकंड है। यह कुछ बाजार की स्थिति का पुनरुत्पादन है।
तब, बार डेटा टिक डेटा पर आधारित होता है और समय अवधि के अनुसार विभाजित होता है। 1-मिनट के बार डेटा में 1 मिनट के भीतर टिक डेटा शामिल होते हैं, 5-मिनट के बार डेटा में 5 मिनट के भीतर टिक डेटा शामिल होते हैं, और इसी तरह। इसने विभिन्न मिनट चार्ट, घंटे के चार्ट, दैनिक चार्ट आदि का गठन किया। एक-मिनट के लाइन में केवल एक बार डेटा होता है, लेकिन इसमें 120 टिक डेटा हो सकते हैं। इसलिए, बैकटेस्ट ऐतिहासिक डेटा को विभाजित किया जा सकता हैः बार डेटा और टिक डेटा, और टिक डेटा में डेटा की मात्रा एक ही चक्र में बार डेटा की मात्रा से बहुत अधिक है।
बाजार पर अधिकांश मात्रात्मक ट्रेडिंग सॉफ्टवेयर सभी बार डेटा के बैकटेस्टिंग का समर्थन कर रहे हैं। क्योंकि डेटा की मात्रा छोटी है, बैकटेस्टिंग इंजन का कार्यभार बहुत सरल है। इसलिए, यह बैकटेस्टिंग आमतौर पर बहुत तेज़ होती है, और दस वर्षों के डेटा को कुछ सेकंड के भीतर बैकटेस्ट किया जा सकता है। एक ही समय में दर्जनों वायदा किस्मों के बैकटेस्ट होने पर भी एक मिनट से अधिक नहीं होगा। लेकिन बार डेटा बैकटेस्टिंग में बहुत सारी समस्याएं हैंः
अधिकांश व्यापारियों को पता है कि दैनिक सीमा मूल्य पर खरीदना या बेचना मुश्किल है, लेकिन यह बैकटेस्ट वातावरण में कारोबार किया जा सकता है। कुछ नए व्यापारी मात्रात्मक व्यापार में शामिल होते हैं, यदि वे रणनीति में इस स्थिति को फ़िल्टर नहीं करते हैं, तो बैकटेस्ट के परिणाम वास्तविक बाजार परिणामों के साथ असंगत होंगे।
जब कीमत अचानक निम्नतम सीमा से उच्चतम सीमा मूल्य पर कूद जाती है या मूल्य अंतर दिखाई देता है, तो इसे बड़े चक्र के-लाइन चार्ट पर एक बड़ी सकारात्मक K रेखा के रूप में दिखाया जाता है, लेकिन पूरे समय के दौरान कोई लेनदेन नहीं किया जाता है। यदि आप वास्तविक समय मूल्य व्यापार रणनीति डिजाइन कर रहे हैं, तो बैकटेस्ट में बार डेटा का व्यापार किया जा सकता है।
उदाहरण के लिएः वर्तमान K-लाइन कीमत 5000 के आसपास घूम रही है, और यह अचानक बाजार बंद होने के करीब 5100 तक बढ़ जाती है, और बीच में लगभग कोई लंबित आदेश और लेनदेन नहीं हैं। यदि आपकी रणनीति 5050 की इस कीमत पर स्थिति खोलना है, तो यह बार डेटा बैकटेस्ट में कारोबार किया जा सकता है, और यह घटना बहुत आम है।
मेरा मानना है कि कई मात्रात्मक व्यापारियों को इस तरह के गड्ढे का सामना करना पड़ा है, और उन 45 डिग्री कोण बैकटेस्ट वक्रों में से अधिकांश इस से हैं। सभी की समझ को सुविधाजनक बनाने के लिए, मुझे एक और उदाहरण देने देंः हम जानते हैं कि एक K रेखा में 4 मूल्य हैं। यदि यह 1 मिनट सकारात्मक k रेखा है, तो इस K रेखा का गठन होना चाहिएः उद्घाटन मूल्य >>> सबसे कम मूल्य >>>> उच्चतम मूल्य >>> समापन मूल्य।
हालांकि, बड़े चक्र k रेखा इतनी सरल नहीं होगी. यह एक नई उच्च तक पहुंच सकती है, फिर एक नई कम, और फिर बंद; यह भी एक नई कम तक पहुंच सकती है, फिर एक नई उच्च, और फिर बंद; या यहां तक कि मोड़ और मोड़ के एक दौर के बाद, यह एक नई कम तक पहुंच सकती है, और फिर नई उच्च, और फिर नई कम, और फिर बंद; लेकिन यह सिर्फ एक K रेखा के रूप में दिखाई देती है जिसमें ऊपरी और निचली छाया होती है, इसके बीच में कई संभावनाएं हैं कि यह कैसे बनती है।
यदि एक K रेखा इस तरह दिखाई दे रही हैः उद्घाटन मूल्य 4950, सबसे कम मूल्य 4900, उच्चतम मूल्य 5100, समापन मूल्य 5050, एक सामान्य सकारात्मक K रेखा। आपकी रणनीति हैः यदि नवीनतम मूल्य पिछली उच्चतम मूल्य 5000 से अधिक है, तो लंबा खरीदें, और खोलने की स्थिति के बाद 1% का स्टॉप लॉस सेट करें, अर्थात, जब मूल्य 4950 से नीचे गिरता है, तो यह स्टॉप लॉस करेगा।
ठीक है, चलो बैकटेस्ट शुरू करते हैंः
Opening price 4950
The price exceeds the previous high 5000
Opening long position
Earned 1% when the market closed
लेकिन वास्तविक स्थिति इस तरह हो सकती हैः
Opening price 4950
The price exceeds the previous high 5000
Opening long position
Soon the price begins to fall
Continue to fall to 4949
Stop loss signal triggers stop loss 1%
Price rises to 5100
Market close at 5050
जैसा कि आप देख सकते हैं, उपरोक्त उदाहरण में, एक ही रणनीति, एक ही डेटा, दो बहुत अलग परिणाम थे। कारण अभी भी डेटा में अंतर के कारण है। बार स्तर के बैकटेस्ट में, यदि आप दैनिक के-लाइन बैकटेस्ट का उपयोग करते हैं, तो आप नहीं जानते कि ये के-लाइन बैकटेस्ट कैसे बनते हैं। यदि आप प्रति घंटे के-लाइन बैकटेस्ट का उपयोग करते हैं, तो आप नहीं जानते कि ये प्रति घंटे के-लाइन बैकटेस्ट कैसे बनते हैं। संक्षेप में, बार डेटा टेस्ट कमजोर हैं!
यदि आप बैकटेस्टिंग और विश्लेषण के लिए टिक डेटा का उपयोग कर सकते हैं, तो इसमें कोई संदेह नहीं है कि इसके महान फायदे हैं। हालांकि, बाजार पर टिक डेटा बैकटेस्टिंग और विश्लेषण के लिए कोई मात्रात्मक ट्रेडिंग प्लेटफॉर्म नहीं है। उदाहरण के लिए, एमटी 4 इंटरपोलेशन सिमुलेशन डेटा का उपयोग करता है। यह केवल डेटा में परिवर्तन का अनुकरण करता है, वास्तविक टिक डेटा नहीं।
बेशक, ऐसे सॉफ़्टवेयर हैं जो टिक-स्तरीय बैकटेस्टिंग करने में सक्षम होने का दावा करते हैं। लेकिन इन सॉफ़्टवेयर ने बैकटेस्टिंग इंजन को डिजाइन करते समय एक घातक गलती की, अर्थात्ः
ध्यान रखें कि वास्तविक व्यापारिक वातावरण में, हमारे द्वारा रखे गए ऑर्डर एक्सचेंज के टिक डेटा स्ट्रीम में मेल खाते हैं। एक्सचेंज के मिलान नियम हैंः मूल्य प्राथमिकता, समय प्राथमिकता। यदि इस समय ऑर्डर गहराई बहुत मोटी नहीं है, तो हमारे द्वारा भेजे गए 5000 मूल्य खरीद ऑर्डर का निष्क्रिय रूप से व्यापार होने की संभावना है।
इसलिए, FMZ क्वांट प्लेटफॉर्म (fmz.com) टिक-लेवल बैकटेस्टिंग इंजन अस्तित्व में आया, यह बैकटेस्टिंग इंजन न केवल टिक डेटा की मूल्य प्राथमिकता के आधार पर ऑर्डर से मेल खाता है। उसी मूल्य प्राथमिकता के अनुसार, यह निर्धारित करने के लिए लंबित ऑर्डर की संख्या की गणना की जाती है कि क्या वर्तमान लंबित ऑर्डर निष्क्रिय लेनदेन की स्थिति तक पहुंच गया है, ताकि एक वास्तविक सिमुलेशन वातावरण प्राप्त हो सके। आइए एक उदाहरण के रूप में निम्नलिखित लेते हैंः
पहला टिक है: बेचनाः 101 मात्राः 80 खरीदेंः 100 मात्राः 30
दूसरा टिक है: बेचनाः 101 मात्राः 60 खरीदेंः 100 मात्राः 50
तीसरा टिक है: बेचनाः 101 मात्राः 80 खरीदेंः 100 मात्राः 30
चौथा टिक हैः बेचनाः 101 मात्राः 80 खरीदेंः 100 मात्राः 10
पहले टिक के लिए, खरीद मूल्य 100 है, लंबित आदेशों की मात्रा 30 लॉट है; इस समय, खरीद संकेत आता है, 100 मूल्य पर 20 लॉट खरीदें; दूसरा टिक उत्पन्न होता है, खरीद मूल्य 100 है, और लंबित आदेश मात्रा 50 है; 20 लॉट लंबित आदेश हैं; तीसरा टिक उत्पन्न होता है, खरीद मूल्य 100 है, और लंबित आदेशों की मात्रा 30 लॉट है। यह साबित करता है कि 20 लॉट निष्पादित या रद्द कर दिए गए हैं, और हम सौदे को बंद कर रहे हैं; चौथा टिक उत्पन्न हुआ, खरीद मूल्य 100 था, और लंबित आदेशों की मात्रा 10 लॉट थी। यह एक बड़ा विक्रेता था, और हमारे सभी खरीद आदेश एक बार में निष्पादित किए गए थे।
उपरोक्त उदाहरण के माध्यम से, हम पा सकते हैं कि टिक डेटा में, इस धारणा के तहत कि कीमत नहीं बदली है, यह गणना करना संभव है कि क्या लंबित ऑर्डर की राशि के परिवर्तन के माध्यम से लंबित ऑर्डर का निष्क्रिय लेनदेन है। एक ही कीमत, समय-प्रथम दृष्टिकोण का उपयोग करना। इस प्रकार का बैकटेस्टिंग इंजन लगभग वास्तविक व्यापारिक वातावरण को बायोनिक करता है, लेनदेन और झूठे लेनदेन के
एफएमजेड क्वांट प्लेटफॉर्म पर, बार और टिक स्तर बैकटेस्टिंग एक ही समय में मौजूद हैं। प्रत्येक मात्रात्मक व्यापारी अपनी खुद की ट्रेडिंग रणनीतियों के अनुसार विभिन्न बैकटेस्टिंग इंजन का उपयोग कर सकता है, और कोई फर्क नहीं पड़ता कि आप किस प्रकार के बैकटेस्टिंग का उपयोग करते हैं। इंजन को रणनीति कोड को संशोधित करने की आवश्यकता नहीं है, और प्रत्येक प्रकार के बैकटेस्टिंग को निर्बाध रूप से स्विच किया जा सकता है।
कम आवृत्ति रणनीति बैकटेस्टिंग के लिए एक जटिल मिलान इंजन की आवश्यकता नहीं है, क्योंकि ऐसी रणनीतियों के लिए लेनदेन की संख्या छोटी है, फिसलने की लागत का रणनीति पर बहुत प्रभाव नहीं पड़ता है। सामान्य तौर पर, बैकटेस्टिंग के दौरान केवल कुछ स्लिप पॉइंट जोड़ने की आवश्यकता होती है, बार-स्तर बैकटेस्टिंग का उपयोग करना पर्याप्त होगा। वास्तव में ध्यान देने की आवश्यकता ओवरफिटिंग की समस्या है।
कुछ इंट्राडे ट्रेडिंग या रणनीतियों में दिन के दौरान खुलने वाली स्थिति शामिल होती है, यदि आवश्यक हो, तो बैकटेस्टिंग कॉन्फ़िगरेशन पैरामीटर पृष्ठ पर डेटा दानेदारी को भी समायोजित किया जा सकता है, जैसे कि 1-घंटे के चक्र पर बैकटेस्टिंग, जिसे 15 मिनट के डेटा में समायोजित किया जा सकता है। यह बैकटेस्टिंग की सटीकता में सुधार के लिए आवश्यक होने पर टिक स्तर डेटा का भी उपयोग कर सकता है।
उच्च आवृत्ति व्यापार क्योंकि लेनदेन की संख्या पर्याप्त रूप से अधिक है, एक एकल किस्म एक दिन में दर्जनों या सैकड़ों बार भी व्यापार कर सकती है, इसलिए जब तक मिलान इंजन उचित है, तब तक
उच्च आवृत्ति ट्रेडिंग बैकटेस्ट में, लेनदेन की आवृत्ति जितनी अधिक होगी, पकड़ की स्थिति की समय अवधि उतनी कम होगी; एक एकल लेनदेन का औसत लाभ उतनी कम होगी। इस समय, यदि बैकटेस्ट इंजन का डिजाइन अनुचित है, या मिलान आदेश विधि वास्तविक ट्रेडिंग वातावरण के साथ तुलना नहीं करते हैं, तो एक घटना होगी
हम आपको दिखाते हैं कि कैसे एक टिक-स्तरीय बैकटेस्ट एक उच्च आवृत्ति बाजार बनाने की रणनीति के साथ काम करता है जो सी ++ में लिखा गया है (जो पायथन और जावास्क्रिप्ट का भी समर्थन करता है) । आप रणनीति को पूरा कर सकते हैं और नीचे दिए गए लिंक पर क्लिक करके ऑनलाइन बैकटेस्टिंग कर सकते हैं। निम्नलिखित चित्र लॉग जानकारी से लिया गया है। ध्यान दें कि हमने 2019-07-12 14:59 पर 2231 की कीमत पर 1 लॉट खरीदा है, और इसे 2232 पर बेचते हैं।
पहला टिक है: बेचनाः 2232 मात्राः 409 खरीदेंः 2231 वॉल्यूमः 73
दूसरा टिक है: बेचनाः 2232 मात्राः 351 खरीदेंः 2231 वॉल्यूमः 84
तीसरा टिक है: बेचनाः 2232 मात्राः 369 खरीदेंः 2231 वॉल्यूमः 67
यह प्रदर्शन रणनीति मूल्य टिकिंग लाभ बनाते समय स्थिति को बंद करना है। स्थिति खोलने के बाद, हम लंबी स्थिति को बंद करने के लिए 2232 पर बंद स्थिति आदेश भेजते हैं, और छोटी स्थिति को बंद करने के लिए 2231। पारंपरिक बार स्तर बैकटेस्ट के अनुसार, इस लंबित आदेश की कीमत को बंद नहीं किया जा सकता है। हालांकि, प्लेटफ़ॉर्म के टिक-लेवल बैकटेस्टिंग इंजन लगातार बाजार पर आदेशों की मात्रा में बदलाव की गणना करता है। जब तीसरा टिक डेटा उत्पन्न होता है, तो एक्सचेंज के एक्सचेंज ऑर्डर मार्चिंग तंत्र के अनुसार, यदि कीमत समान है, तो समय-पहले नियम के अनुसार, हमारी बंद लंबी स्थिति ऑपरेशन का व्यापार किया जाएगा।
इस लिंक पर क्लिक करें (https://www.fmz.com/strategy/162372) पैरामीटर को कॉन्फ़िगर किए बिना पूरी रणनीति की प्रतिलिपि बनाने के लिए
नोटः वर्तमान में, हम केवल चीनी घरेलू कमोडिटी वायदा और क्रिप्टोक्यूरेंसी ओकेएक्स एक्सचेंज के टिक स्तर डेटा की पूरी श्रृंखला का समर्थन करते हैं। हम भविष्य में अधिक एक्सचेंजों का समर्थन करेंगे।
उपरोक्त एफएमजेड क्वांट प्लेटफॉर्म विश्लेषण और सभी-स्तरीय बैकटेस्टिंग की वास्तविक लड़ाई है। इतना ही नहीं, लेकिन पेशेवर व्यापारियों और संस्थागत उपयोगकर्ताओं का समर्थन करने के अलावा, यह उन नौसिखियों के लिए भी बहुत अनुकूल है जिन्होंने अभी तक शुरुआत नहीं की है। दृश्य भाषा को कोड लिखने के बिना लागू किया जा सकता है। इसके अलावा, मेरी भाषा 10 वाक्यों में तय की जा सकती है।
रणनीति के बारे में सोचना, सांख्यिकी करना, और विश्लेषण करना... व्यापार बहुत कठिन रहा है। चाहे आप कम आवृत्ति वाले सीटीए, इंट्राडे ट्रेडिंग, उच्च आवृत्ति वाले ट्रेडिंग हों, एफएमजेड क्वांट मात्रात्मक ट्रेडिंग प्लेटफॉर्म को पूरी तरह से निर्बाध रूप से समर्थित किया जा सकता है। हम टिक स्तर पर सटीक ऐतिहासिक बैकटेस्टिंग के आधार पर खिलौना कार्य नहीं करते हैं, हम आपको एक इष्टतम निवेश पोर्टफोलियो बनाने में मदद करने के लिए कई किस्मों, कई रणनीतियों और कई चक्रों के किसी भी संयोजन का परीक्षण कर सकते हैं।