अधिकांश रणनीतियों को बॉट्स में निष्पादित होने से पहले सत्यापन के लिए बैकटेस्ट की आवश्यकता होती है। एफएमजेड कुछ क्रिप्टोकरेंसी के स्पॉट, वायदा और शाश्वत अनुबंधों के साथ-साथ सभी प्रकार के कमोडिटी वायदा का समर्थन करता है। हालांकि, एफएमजेड क्वांट प्लेटफॉर्म का बैकटेस्ट तंत्र आम ऑनबार बैकटेस्ट से अलग है, जिसने कई शुरुआती लोगों के लिए भ्रम पैदा कर दिया है। यह लेख कुछ सामान्य बैकटेस्ट प्रश्नों का विवरण और उत्तर देगा।
जैसा कि ऊपर चित्र में दिखाया गया है, बैकटेस्ट प्रारंभ समय से अंत समय तक के समय को समय अक्ष के रूप में माना जा सकता है। बैकटेस्ट के दौरान, बैकटेस्ट समय बिंदु बैकटेस्ट शुरू करने के लिए अक्ष के साथ बाएं से दाएं चला जाता है। एक समय बिंदु पर, केवल इस समय बिंदु से पहले के इतिहास डेटा प्राप्त किए जा सकते हैं। इतिहास डेटा के आधार पर, रणनीति खरीद और बिक्री करती है, और अंत में लाभ और हानि का गठन करती है। जाहिर है, बैकटेस्ट के समय बिंदुओं का वितरण असतत है, और वितरण का घनत्व बैकटेस्ट की सटीकता का प्रतिनिधित्व करता है। बेशक, यह देखते हुए कि बैकटेस्ट समय बिंदुओं का घनत्व जितना अधिक होगा, उतना ही समय आवश्यक होगा, वास्तविक बैकटेस्ट प्रणाली को सटीकता और दक्षता के बीच विकल्प बनाने की आवश्यकता है।
ऑनबार बैकटेस्ट तंत्र के-लाइनों पर आधारित है, यानी प्रत्येक के-लाइन एक बैकटेस्ट समय बिंदु उत्पन्न करती है। समय बिंदु पर, आप जानकारी प्राप्त कर सकते हैं, जैसे कि वर्तमान के-लाइन उच्चतम, निम्नतम, खुले और बंद मूल्य, व्यापार मात्रा, आदि, साथ ही इस समय बिंदु से पहले इतिहास के-लाइन जानकारी।
इस तंत्र का नुकसान स्पष्ट हैः एक के-लाइन पर, केवल एक ही व्यापार उत्पन्न किया जा सकता है, और कीमत आमतौर पर के-लाइन बंद मूल्य पर आधारित होती है। एक के-लाइन केवल चार कीमतें प्राप्त कर सकती है, अर्थात् ओपन, क्लोज, उच्चतम और सबसे कम कीमतें, लेकिन जानकारी प्राप्त नहीं कर सकती है, जैसे कि एक के-लाइन पर मूल्य परिवर्तन, और क्या सबसे कम कीमत पहले या सबसे अधिक कीमत पहले होती है। उदाहरण के रूप में 1 घंटे की के-लाइन लें। बाजार की जानकारी बॉट में हर कुछ सेकंड में प्राप्त की जानी चाहिए, और ट्रेडिंग ऑर्डर भी बॉट में जारी किया जाएगा, बजाय के-लाइन के समाप्त होने की प्रतीक्षा करने के। ऑनबार बैकटेस्ट तंत्र का लाभ यह है कि यह समझना आसान है और बैकटेस्ट की गति बेहद तेज है।
उपरोक्त चित्र में एफएमजेड बैकटेस्ट सेटिंग्स इंटरफ़ेस दिखाया गया है। बैकटेस्ट मोड को दो प्रकारों में विभाजित किया गया है, अर्थात् सिमुलेशन स्तर और वास्तविक बाजार स्तर, जिन्हें नीचे अलग से पेश किया जाएगाः
टिक क्या है?
के-लाइन डेटा के विपरीत, टिक एक विशिष्ट समय बिंदु पर मूल्य है। के-लाइन डेटा के अनुसार, हम वास्तव में केवल जानते हैं कि ओपन प्राइस और क्लोज प्राइस कब हुआ था। यह स्पष्ट नहीं है कि कीमत के-लाइन अवधि में उच्चतम मूल्य तक कब पहुंचती है। वास्तव में, के-लाइन डेटा भी टिक के आधार पर उत्पन्न होता है। के-लाइन डेटा के अनुसार, के-लाइन अवधि में एक विशिष्ट टिक के परिवर्तनों का अनुकरण करना भी संभव है। हालांकि यह एक वास्तविक टिक नहीं है, यह हमारे बैकटेस्ट को अधिक सटीक बना सकता है। और सिमुलेशन के आधार पर के-लाइन अवधि बैकटेस्ट के लिए उपयोग की जाने वाली अवधि से बहुत कम हो सकती है, इसलिए सटीकता अधिक है।
सिमुलेशन स्तर बैकटेस्ट
सिमुलेशन स्तर बैकटेस्ट के लिए, आपको बैकटेस्ट के लिए उपयोग की जाने वाली के-लाइन अवधि और अंडरलेयर के-लाइन अवधि का चयन करने की आवश्यकता है। उदाहरण के लिए, यदि रणनीति प्रति घंटे लाइन बैकटेस्ट का उपयोग करती है, और अंडरलेयर के-लाइन को 5 मिनट पर सेट किया गया है, तो बैकटेस्ट समय बिंदुओं का अंतराल 5-मिनट के-लाइन द्वारा अनुकरण किए गए टिक पर आधारित होगा, जो नवीनतम 1 घंटे में के-लाइन बंद मूल्य के निरंतर परिवर्तनों में परिलक्षित होता है। के-लाइनों के अनुसार के-लाइनों में टिक उत्पन्न करने का तंत्र एमटी 4 के समान है। इस पोस्ट में विस्तृत निर्देश हैंःhttps://www.fmz.com/bbs-topic/662
हम इस तंत्र का प्रदर्शन करने के लिए एक सरल रणनीति का उपयोग करते हैं; रणनीति कोडः
function main() {
while(true){
var records = exchange.GetRecords() //GetRecords can fill the parameters, and obtain K-lines of different periods
var ticker = exchange.GetTicker()
Log('K-line close price: ', records[records.length-1].Close, 'ticker Buy1 Sell1 prices: ', ticker.Buy, ticker.Sell)
//js backtest does not use Sleep, and it will skip to the next tick; Python needs 1 hour of sleep time
}
}
बैकटेस्ट का परिणाम:
प्रत्येक K-लाइन के केवल खुले और बंद टिक तय होते हैं, और मध्य में अनुकरणीय 12 टिक जोड़े जाते हैं, ताकि एक K-लाइन 14 बैकटेस्ट समय बिंदुओं का गठन करेगी। यदि आप 5 मिनट की अंडरलेयर K-लाइन अवधि के साथ एक दिन के लिए बैकटेस्ट करते हैं, तो कुल 24×12×14 = 4032 समय बिंदु उत्पन्न होंगे, जबकि पारंपरिक onBar बैकटेस्ट में केवल 24 हैं, इसलिए सटीकता में काफी सुधार होता है। एक K-लाइन अवधि के भीतर खुले और बंद स्थिति संचालन भी पूरा किया जा सकता है। हालांकि मध्यवर्ती उत्पन्न टिक का अनुकरण किया जाता है, लेकिन यह बहुत प्रभावित नहीं होता है। बैकटेस्ट में, जब तक ऑर्डर की कीमत खरीद की कीमत से बड़ी है, और बिक्री ऑर्डर की कीमत खरीद की कीमत से छोटी है, तब तक बैकटेस्ट मेल खाएगा। बैकटेस्ट की यह विधि सभी की गति और सटीकता को ध्यान में रखती है और इसके लिए अनुशंसित है।
वास्तविक बाजार स्तर बैकटेस्ट
वास्तविक बाजार स्तर बैकटेस्ट वास्तविक टिक का उपयोग करता है, और प्रत्येक समय बिंदु के बीच का सबसे छोटा अंतराल केवल 1s है। इस प्रकार का बैकटेस्ट प्रति सेकंड परिवर्तन के लिए सटीक है, लेकिन बड़ी मात्रा में डेटा के कारण, बैकटेस्ट गति धीमी है और बैकटेस्ट समय बहुत लंबा नहीं हो सकता है। नीचे दी गई तस्वीर वास्तविक टिक दिखाती है। वास्तविक बाजार स्तर बैकटेस्ट का उपयोग रणनीतियों को सटीक रूप से सत्यापित करने के लिए किया जा सकता है।
यहां तक कि वास्तविक बाजार स्तर के बैकटेस्ट और वास्तविक बॉट ट्रेडिंग में अभी भी स्पष्ट डेटा की कमी है, जैसे कि ट्रेडिंग हिस्ट्री ट्रेडों को प्राप्त करने में असमर्थता, वास्तविक गहराई परिवर्तन, वास्तविक नेटवर्क देरी आदि प्राप्त करने में असमर्थता। फिर भी, एफएमजेड वर्तमान बैकटेस्ट प्रणाली अपेक्षाकृत पूर्ण है, और कई छोटे कार्य हैं, जैसे कि नेटवर्क त्रुटियों का अनुकरण करना, जिसका उपयोग रणनीतियों की त्रुटि सहिष्णुता का परीक्षण करने, नेटवर्क देरी का अनुकरण करने और बाजार आइकन खींचने के लिए किया जा सकता है।
बैकटेस्ट के लिए केवल कुछ ही ट्रेडिंग जोड़े और प्लेटफार्मों का समर्थन क्यों किया जाता है?
वर्तमान में, केवल कुछ सामान्य व्यापारिक जोड़े के डेटा हैं। वास्तव में, रणनीति और विविधता के बीच संबंध बहुत करीब नहीं है, इसलिए रणनीति का सत्यापन करना पर्याप्त है।
क्या यह वित्तपोषण दर चार्ज करने के लिए BitMEX का अनुकरण कर सकता है?
बेशक, आप लॉग खोलने के लिए BitMEX बैकटेस्ट चुन सकते हैं.
जहां बैकटेस्ट किया जाता है?
जावास्क्रिप्ट रणनीतियों का बैकटेस्ट ब्राउज़र में किया जाता है, जबकि पायथन बैकटेस्ट को संचालित करने के लिए FMZ सर्वर या अपने स्वयं के डॉकर का चयन कर सकता है।
क्या बैकटेस्ट लॉग डाउनलोड किए जा सकते हैं?
बेशक, आप कर सकते हैं. लॉग के दाहिने कोने में डाउनलोड बटन है.
क्या बैकटेस्ट स्थानीय रूप से किया जा सकता है?
FMZ पायथन बैकटेस्ट इंजन का स्रोत खोलता है. संदर्भःhttps://www.fmz.com/bbs-topic/1687