अधिकांश रणनीतियों को व्यवहार में लाने से पहले सत्यापन के लिए बैकटेस्ट की आवश्यकता होती है। FMZ कुछ प्रकार के डिजिटल मुद्रा स्पॉट, वायदा और सतत अनुबंधों के साथ-साथ सभी प्रकार के कमोडिटी वायदा का समर्थन करता है। हालाँकि, इन्वेंटर क्वांटिटेटिव प्लेटफॉर्म का बैकटेस्टिंग तंत्र सामान्य ऑनबार बैकटेस्टिंग से अलग है, जिससे कई नौसिखियों के लिए भ्रम की स्थिति पैदा हो गई है। यह आलेख कुछ सामान्य बैकटेस्टिंग प्रश्नों को विस्तार से समझाएगा और उनका उत्तर देगा।
बैकटेस्टिंग प्रणाली कैसे काम करती है?
जैसा कि ऊपर दिए गए चित्र में दिखाया गया है, बैकटेस्ट के आरंभ समय से लेकर समाप्ति समय तक को समय अक्ष के रूप में माना जा सकता है। बैकटेस्टिंग करते समय, बैकटेस्ट समय बिंदु बैकटेस्टिंग शुरू करने के लिए अक्ष के साथ बाएं से दाएं चलता है। इस समय बिंदु पर, केवल यह बिंदु ही बैकटेस्टिंग को रोक सकता है। यह रणनीति पिछले ऐतिहासिक डेटा का उपयोग करके इस डेटा के आधार पर खरीदारी और बिक्री करती है, जिसके परिणामस्वरूप अंततः लाभ या हानि होती है। स्पष्टतः, बैकटेस्टिंग समय बिंदुओं का वितरण असतत है, और वितरण का घनत्व बैकटेस्टिंग की सटीकता को दर्शाता है।
बेशक, यह देखते हुए कि बैकटेस्टिंग समय बिंदु जितना सघन होगा, उतना ही अधिक समय लगेगा, वास्तविक बैकटेस्टिंग प्रणाली को सटीकता और दक्षता के बीच समझौता करना होगा।
पारंपरिक ऑनबार बैकटेस्टिंग तंत्र
ऑनबार बैकटेस्टिंग तंत्र K-लाइन पर आधारित है, अर्थात, प्रत्येक K-लाइन एक बैकटेस्टिंग समय बिंदु उत्पन्न करती है, जिस पर वर्तमान K-लाइन के उच्च उद्घाटन और निम्न समापन मूल्य, ट्रेडिंग वॉल्यूम और अन्य जानकारी प्राप्त की जा सकती है, जैसा कि नीचे दिखाया गया है। साथ ही इस समय बिंदु से पहले की जानकारी। ऐतिहासिक K-लाइन जानकारी।
इस तंत्र का नुकसान स्पष्ट है: एक K-लाइन पर केवल एक खरीद और बिक्री उत्पन्न की जा सकती है, और कीमत आमतौर पर K-लाइन के समापन मूल्य पर आधारित होती है। इसके अलावा, एक K-लाइन केवल चार कीमतें प्राप्त कर सकती है: उच्च उद्घाटन और निम्न समापन। जहाँ तक K-लाइन के भीतर मूल्य परिवर्तन का सवाल है, चाहे उच्चतम मूल्य पहले हो या निम्नतम मूल्य पहले हो, आदि, इसका कोई तरीका नहीं है ऐसी जानकारी प्राप्त करने के लिए. 1 घंटे की के-लाइन को उदाहरण के रूप में लेते हुए, वास्तविक ट्रेडिंग में, बाजार की जानकारी हर कुछ सेकंड में प्राप्त की जाएगी, और के-लाइन के समाप्त होने की प्रतीक्षा करने के बजाय ट्रेडिंग सत्र के दौरान ट्रेडिंग निर्देश जारी किए जाएंगे। ऑनबार बैकटेस्टिंग तंत्र का लाभ यह है कि इसे समझना आसान है और बैकटेस्टिंग की गति अत्यंत तेज़ है।
FMZ आविष्कारक मात्रात्मक मंच onTick backtesting तंत्र
ऊपर दी गई तस्वीर FMZ बैकटेस्टिंग सेटिंग इंटरफ़ेस है। बैकटेस्टिंग मोड को दो प्रकारों में विभाजित किया गया है: सिमुलेशन-स्तरीय बैकटेस्टिंग और वास्तविक समय बैकटेस्टिंग, जिनका परिचय नीचे दिया गया है:
टिक क्या है?
के-लाइन डेटा से भिन्न, टिक एक विशिष्ट समय बिंदु पर मूल्य है। के-लाइन डेटा के आधार पर, हम वास्तव में केवल उस समय को जानते हैं जब शुरुआती कीमत और समापन मूल्य हुआ। यह स्पष्ट नहीं है कि के-लाइन चक्र के भीतर कीमत उच्चतम स्तर पर कब पहुंची। वास्तव में, के-लाइन डेटा भी टिक्स के आधार पर उत्पन्न होता है। के-लाइन डेटा के आधार पर, हम के-लाइन अवधि के किसी विशिष्ट टिक में होने वाले परिवर्तनों का अनुकरण भी कर सकते हैं। हालाँकि यह वास्तविक टिक नहीं है, लेकिन यह हमारी बैकटेस्टिंग को अधिक सटीक बना सकता है। इसके अलावा, सिमुलेशन के लिए प्रयुक्त K-लाइन अवधि, बैकटेस्टिंग के लिए प्रयुक्त अवधि की तुलना में बहुत छोटी हो सकती है, इसलिए सटीकता अधिक होती है।
सिमुलेशन-स्तर बैकटेस्टिंग
सिमुलेशन-स्तरीय बैकटेस्टिंग के लिए, आपको K-लाइन अवधि और बैकटेस्टिंग के लिए प्रयुक्त अंतर्निहित K-लाइन अवधि का चयन करना होगा। उदाहरण के लिए, यदि रणनीति प्रति घंटे बैकटेस्टिंग का उपयोग करती है और अंतर्निहित K-लाइन 5 मिनट की है, तो बैकटेस्टिंग समय बिंदुओं के बीच का अंतराल 5 मिनट के K-लाइन सिमुलेशन द्वारा उत्पन्न टिक्स पर आधारित होगा, जो विशेष रूप से निरंतर में परिलक्षित होता है। नवीनतम 1-घंटे के के-लाइन के समापन मूल्य में परिवर्तन। K-लाइन के आधार पर K-लाइन के भीतर टिक्स उत्पन्न करने का तंत्र MT4 के समान है। इस पोस्ट में विस्तृत विवरण दिया गया है: https://www.fmz.com/bbs-topic/662

इस तंत्र को प्रदर्शित करने के लिए हम एक सरल रणनीति का उपयोग करते हैं। रणनीति कोड इस प्रकार है:
function main() {
while(true){
var records = exchange.GetRecords() //GetRecords可以填参数,获取不同周期K线。
var ticker = exchange.GetTicker()
Log('K线收盘价: ', records[records.length-1].Close, 'ticker买一卖一价: ', ticker.Buy, ticker.Sell)
//js回测不用Sleep,会自动跳到下一个tick。Python需要一个小的休眠时间
}
}
बैकटेस्टिंग परिणाम:

प्रत्येक K-लाइन के लिए, केवल आरंभिक और अंतिम टिक्स निश्चित होते हैं, तथा उनके बीच 12 अनुरूपित टिक्स जोड़े जाते हैं, जिससे एक K-लाइन 14 बैकटेस्टिंग समय बिन्दु बनाएगी। यदि बैकटेस्ट एक दिन के लिए है, तो अंतर्निहित K-लाइन चक्र 5 मिनट का है, जिसमें कुल 24×12×14 = 4032 समय बिंदु हैं, जबकि पारंपरिक ऑनबार बैकटेस्ट में केवल 24 हैं, जो सटीकता में काफी सुधार करता है। आरंभिक और समापन स्थितियां भी एक K-लाइन चक्र के भीतर पूरी की जा सकती हैं। यद्यपि बीच में उत्पन्न टिक्स नकली हैं, तथापि प्रभाव महत्वपूर्ण नहीं है। बैकटेस्ट में, जब तक बोली मूल्य, मांग मूल्य से अधिक है और मांग मूल्य, बोली मूल्य से कम है, तब तक लेनदेन का मिलान किया जाएगा। यह बैकटेस्टिंग विधि बैकटेस्टिंग गति और सटीकता दोनों को ध्यान में रखती है, और सभी के लिए अनुशंसित है।
वास्तविक समय बैकटेस्टिंग
रियल-टाइम बैकटेस्टिंग वास्तविक टिक्स का उपयोग करता है, जिसमें प्रत्येक समय बिंदु के बीच सबसे छोटा अंतराल केवल 1 सेकंड होता है। यह बैकटेस्टिंग सटीकता हर सेकंड के लिए सटीक है, लेकिन डेटा की बड़ी मात्रा के कारण, बैकटेस्टिंग की गति धीमी है और बैकटेस्टिंग समय का पता नहीं लगाया जा सकता है गारंटीकृत. बहुत लंबा. नीचे दी गई तस्वीर वास्तविक टिक को दर्शाती है। रणनीतियों को सटीक रूप से मान्य करने के लिए वास्तविक समय बैकटेस्टिंग का उपयोग किया जा सकता है।

बैकटेस्टिंग और वास्तविक ट्रेडिंग के बीच अंतर
यहां तक कि वास्तविक समय बैकटेस्टिंग और वास्तविक ट्रेडिंग में भी स्पष्ट डेटा की कमी है, जैसे कि लेनदेन इतिहास ट्रेडों को प्राप्त करने में असमर्थता, वास्तविक गहराई में परिवर्तन प्राप्त करने में असमर्थता, वास्तविक नेटवर्क देरी, आदि। फिर भी, FMZ की वर्तमान बैकटेस्टिंग प्रणाली अपेक्षाकृत पूर्ण है और इसमें कई छोटे कार्य हैं, जैसे नेटवर्क त्रुटियों का अनुकरण, जिसका उपयोग रणनीतियों की गलती सहिष्णुता का परीक्षण करने, नेटवर्क देरी का अनुकरण करने, बाजार चिह्नों को खींचने आदि के लिए किया जा सकता है।
अक्सर पूछे जाने वाले प्रश्नों
बैकटेस्टिंग के लिए केवल कुछ ही ट्रेडिंग जोड़े और एक्सचेंजों को समर्थन क्यों दिया जाता है?
वर्तमान में, डेटा के केवल कुछ सामान्य व्यापारिक जोड़े हैं। वास्तव में, रणनीति और उत्पाद के बीच संबंध बहुत बड़ा नहीं है, लेकिन यह रणनीति को सत्यापित करने के लिए पर्याप्त है।
क्या यह बिटमेक्स द्वारा लगाए गए फंडिंग दर का अनुकरण कर सकता है?
हां, आप बिटमेक्स बैकटेस्ट का चयन करके इवेंट लॉगिंग चालू कर सकते हैं।

बैकटेस्टिंग कहां किया जाता है?
जावास्क्रिप्ट रणनीतियों का बैकटेस्टिंग ब्राउज़र में किया जाता है, और पायथन FMZ के सर्वर या अपने स्वयं के होस्टर का चयन कर सकता है।
क्या बैकटेस्ट लॉग डाउनलोड किए जा सकते हैं?
हां, लॉग के ऊपरी दाएं कोने में एक डाउनलोड बटन है
क्या मैं स्थानीय स्तर पर बैकटेस्ट कर सकता हूँ?
एफएमजेड ने अपने पायथन बैकटेस्टिंग इंजन को ओपन-सोर्स कर दिया है। संदर्भ: https://www.fmz.com/bbs-topic/1687
1分钟级别的策略,最好是用实盘数据回测,可是现在实盘级别回测,只让回测两个小时,不太合理,最起码也得一天啊。回测,都是用的本地的电脑计算,为什么要限制这个时间呢?
- 1




