पिछले लेखों में, हमने सीखा है कि तथाकथित प्रोग्रामेटिक और मात्रात्मक ट्रेडिंग एक स्क्रिप्ट प्रोग्राम है जो एक्सचेंज से प्राप्त डेटा के आधार पर कुछ संचालन करने, और व्यापार करने के लिए एक्सचेंज खाते को संचालित करने के लिए गणनाओं, निर्णयों और ट्रिगर की एक श्रृंखला के माध्यम से प्राप्त होता है। डेटा प्राप्त करने और ऑपरेटिंग खातों की ये क्रियाएं सभी एक्सचेंज एपीआई इंटरफ़ेस के माध्यम से की जाती हैं। सरल शब्दों में, स्क्रिप्ट प्रोग्राम एक्सचेंज के साथ बातचीत करता है। चूंकि यह एक बातचीत है, इसलिए सामान्य बातचीत और असामान्य बातचीत होनी चाहिए। जब एक असामान्य बातचीत होती है, तो इंटरफ़ेस अपवाद संदेश लौटाता है।
बेशक, बाजार पर प्रोग्रामेटिक और मात्रात्मक ट्रेडिंग सिस्टम में, या हमारे द्वारा विकसित कार्यक्रमों में सभी प्रकार के त्रुटि संकेत और त्रुटि संदेश हैं। ये त्रुटि संदेश एक्सचेंज एपीआई इंटरफ़ेस द्वारा रिपोर्ट किए गए त्रुटि संदेशों तक सीमित नहीं हैं। प्रोग्राम रनटाइम अपवाद त्रुटियां, कॉन्फ़िगरेशन त्रुटियां, प्रोग्राम व्याकरण त्रुटियां और इसी तरह भी हैं।
एफएमजेड मात्रात्मक व्यापार मंच पर त्रुटि संदेश भी मोटे तौर पर कई श्रेणियों में आते हैंः
रणनीति व्याकरण त्रुटि इस प्रकार की त्रुटि सबसे आम है, क्योंकि शुरुआती प्रोग्रामिंग से अपरिचित है, और सीखने और परीक्षण चरण के दौरान कोड लेखन में व्याकरण संबंधी त्रुटियां होती हैं। उदाहरण के लिएः
कोड में कोष्ठक जैसे वर्ण गायब हैं। ऐसी त्रुटियां आमतौर पर रणनीति संपादन पृष्ठ पर देखी जा सकती हैं, और रणनीति को चलाया नहीं जा सकता है (एक त्रुटि सीधे रनटाइम पर रिपोर्ट की जाएगी, जैसा कि नीचे दिए गए चित्र में दिखाया गया है) ।
इसलिए रणनीति लिखने के बाद, यह देखने के लिए प्लेटफॉर्म रणनीति संपादन पृष्ठ पर एक सामान्य नज़र डालें कि क्या लाल XX है, यदि हां, तो एक स्पष्ट त्रुटि होनी चाहिए।
रणनीति कार्यक्रम BUG के कारण रनटाइम प्रोग्राम अपवाद प्रोग्राम में एक बग है. जब प्रोग्राम चल रहा है, तो एक अपवाद ट्रिगर करने से प्रोग्राम असामान्य रूप से बंद हो जाएगा और ऐसे त्रुटि संदेश प्रदर्शित होंगे.
ऐसी त्रुटियों के कारण प्रोग्राम असामान्य हो जाएगा और प्रोग्राम चलना बंद हो जाएगा।
अनुचित विन्यास और सेटिंग्स के कारण त्रुटियां
एफएमजेड प्लेटफॉर्म पर, ट्रेडिंग जोड़ी को एक समान रूप से परिभाषित किया गया हैX_Y
, जहां X ट्रेडिंग मुद्रा का नाम है, और Y मुद्रा का नाम है (मुद्रा आधारित वायदा अनुबंध ट्रेडिंग जोड़ी की मुद्रा आमतौर पर अमरीकी डालर में व्यक्त की जाती है, जैसा कि पिछले लेखों में वर्णित है), जैसेःBTC_USDT
, अगर मैं व्यापार जोड़ी यादृच्छिक रूप से लिखते हैं, यह के रूप में लिखेंBTC-USDT
.
FMZ प्लेटफार्म बैकटेस्टिंग प्रणाली पर एक त्रुटि की सूचना दी गई हैः
इसके अतिरिक्त, एक गलती जो शुरुआती अक्सर सामना करते हैंः
इस प्रकार की त्रुटि FMZ प्लेटफॉर्म खाते पर पासवर्ड के संशोधन के कारण होती है, जिसके परिणामस्वरूपAPI KEY
विनिमय ऑब्जेक्ट में कॉन्फ़िगर किया गया है (उपयोगकर्ता की एपीआई कुंजी ब्राउज़र पर एन्क्रिप्ट किए जाने के बाद एफएमजेड प्लेटफॉर्म पर कॉन्फ़िगर की गई है), और रणनीति शुरू नहीं हो सकती है, इस प्रकार एक त्रुटि की सूचना दी जाती है।
इंटरफ़ेस कॉल में त्रुटि की सूचना दी गई है
इंटरफेस कॉल त्रुटियों अक्सर एक रणनीति चलाने के दौरान सामना कर रहे हैं. पिछले लेखों में, हम सीखा है कि FMZ मंच पर इंटरफेस में विभाजित कर रहे हैंइंटरफेस जो नेटवर्क अनुरोध उत्पन्न करते हैंऔरऐसे इंटरफेस जो नेटवर्क अनुरोध उत्पन्न नहीं करते हैं. इंटरफ़ेस त्रुटि रणनीति कार्यक्रम को रोकने का कारण नहीं होगी, आमतौर पर इंटरफ़ेस कॉल अपवादों के कारण और गलत डेटा लौटाया जाता है, रणनीति त्रुटि सहिष्णुता नहीं बनाती है, और गलत डेटा के कारण प्रोग्राम अपवाद त्रुटि कार्यक्रम को रोकने का कारण बनती है (पिछले लेखों में उल्लिखित त्रुटि सहिष्णुता की अवधारणा) ।
यहाँ कई इंटरफ़ेस त्रुटि संदेश हैं जो नेटवर्क अनुरोध उत्पन्न करते हैंः
नेटवर्क टाइमआउट
शुरुआती लोगों के सामने आने वाले अक्सर आने वाले त्रुटि संदेशों में से एक घरेलू नेटवर्क उपकरण (अपने स्वयं के कंप्यूटर या घरेलू सर्वर) का उपयोग करना है। चूंकि अधिकांश एक्सचेंजों को अवरुद्ध कर दिया गया है, घरेलू नेटवर्क में अधिकांश एक्सचेंजों तक पहुंच असंभव है, और एक्सेस इंटरफ़ेस एक टाइमआउट (पिछले लेखों में उल्लिखित) की रिपोर्ट करेगा।
http 429 त्रुटि
क्लासिक त्रुटि संदेशों में से एक यह है कि एक्सचेंज इंटरफेस को बहुत बार बुलाया जाता है, एक्सचेंज की आवृत्ति सीमा (पिछले लेखों में उल्लिखित) से अधिक है।
कुछ शुरुआती लोग कह सकते हैं कि मैं आवेदन करना चाहूंगाAPI KEY
अधिक एक्सचेंजों के लिए या मैं अधिक एक्सचेंज खातों के लिए आवेदन करते हैं। हमें यह जानना होगा कि एक्सचेंजों द्वारा इंटरफ़ेस एक्सेस सीमाओं की आवृत्ति आमतौर पर आईपी पते पर आधारित होती है। सरल शब्दों में, जब तक किसी आईपी पते पर भेजे गए सभी अनुरोधों को इस आईपी पते पर गिना जाता है, तब तक एक्सचेंज सर्वर पहुंच से इनकार करेगा यदि अनुरोध सीमा से अधिक है।
एक्सचेंज इंटरफेस के कारोबार पर त्रुटि रिपोर्टिंग
ऊपर उल्लिखित टाइमआउट और 429 नेटवर्क त्रुटियां हैं। यदि एक्सचेंज इंटरफ़ेस के व्यवसाय पर कोई समस्या है, तो एक त्रुटि भी रिपोर्ट की जाएगी। उदाहरण के लिए, यदि मैं स्पॉट बाजार मूल्य प्राप्त करना चाहता हूं, लेकिन मैंने एक गैर-मौजूदा ट्रेडिंग जोड़ी स्थापित की है। मैंने इसे एफएमजेड प्लेटफॉर्म के डिबगिंग टूल में परीक्षण किया, डिबगिंग टूल एक बहुत ही सुविधाजनक परीक्षण उपकरण है, जो फ़ंक्शन कॉल और डेटा अधिग्रहण के वास्तविक बॉट परीक्षण के लिए बहुत उपयुक्त है।
डिबगिंग टूल निष्पादन परिणाम, डिबगिंग टूल निष्पादन और वास्तविक बॉट निष्पादन के बीच कोई अंतर नहीं है.
Huobi error GetTicker: Invalid ticker: {"Info":{"err-code":"invalid-parameter","err-msg":"invalid symbol","status":"error","ts":1620872079355},"High":0,"Low":0,"Sell":0,"Buy":0,"Last":0,"Volume":0,"OpenInterest":0,"Time":0}
यहाँ त्रुटि संदेश का अर्थ है कि ट्रेडिंग जोड़ी अमान्य है (जैसा कि यहाँ देखा गया है)"err-msg":"invalid symbol"
) ।
उदाहरण के लिए, ऐसी कई व्यावसायिक-संबंधित त्रुटियां हैं, जैसे लीवरेज सेट करना जब कुछ एक्सचेंजों में दशमलव भागों के साथ लीवरेज मानों का समर्थन नहीं होता है, इस समय, यदि लीवरेज मान में दशमलव भाग होता है, तो यह इंटरफ़ेस कॉल में भी त्रुटि का कारण बनेगा।
एक इंटरफ़ेस कॉल सूची जो नेटवर्क अनुरोध उत्पन्न नहीं करता है
सेट फ्यूचर्स कॉन्ट्रैक्ट कोड कुछ इंटरफेस केवल सिस्टम में कुछ वैश्विक चर सेट करते हैं और नेटवर्क अनुरोध उत्पन्न नहीं करते हैं, उदाहरण के लिएः
हालाँकि, यदि पैरामीटर गलत तरीके से पारित किया गया है या चिपकाया गया है, तो एक त्रुटि की सूचना दी जाएगी।
लेकिन त्रुटि के प्रकार के बावजूद, प्रदर्शित त्रुटि संदेश समस्या खोजने के लिए महत्वपूर्ण जानकारी है, और समस्या आमतौर पर त्रुटि संदेश से देखी जा सकती है। आप त्रुटि संदेशों का अनुवाद करने और महत्वपूर्ण जानकारी निकालने के लिए अनुवाद उपकरण का उपयोग कर सकते हैं। उदाहरण के लिए,"err-msg":"invalid symbol"
in the above example, the translation is:
बैकटेस्टिंग प्रणाली एक मात्रात्मक उपकरण का भी ध्यान केंद्रित करती है। बैकटेस्टिंग प्रणाली रणनीति प्रोटोटाइप का परीक्षण सुविधाजनक रूप से कर सकती है, प्रारंभिक परीक्षण रणनीति में संभावित बग और तार्किक समस्याएं। बैकटेस्टिंग प्रणाली को तर्कसंगत रूप से देखने की आवश्यकता है। बैकटेस्टिंग प्रणाली कुछ हद तक रणनीति की कुछ समस्याओं को प्रतिबिंबित कर सकती है।
निम्नलिखित एफएमजेड प्लेटफॉर्म पर बैकटेस्टिंग प्रणाली का संक्षिप्त विवरण है जो एफएमजेड द्वारा समर्थित विभिन्न रणनीति भाषाओं के स्तर से है।
जावास्क्रिप्ट
ब्राउज़र में बैकटेस्टिंग नेटिव हार्डवेयर संसाधनों का उपयोग करता है.
पायथन
डॉकर पर बैकटेस्टिंग करते समय, आप चुन सकते हैं कि कौन सा डॉकर असाइन करना है (या तो स्वयं द्वारा तैनात डॉकर, या एफएमजेड प्लेटफॉर्म पर सार्वजनिक डॉकर) । एफएमजेड प्लेटफॉर्म पर सार्वजनिक संरक्षकों के बड़े भार को देखते हुए, बैकटेस्टिंग के लिए स्थानीय डॉकर का उपयोग करने की सिफारिश की जाती है (यह भी तेज़ होगा, जब सार्वजनिक डॉकर बैकटेस्टिंग कर रहा है, यदि कार्य भार से अधिक हैं, तो कुछ बैकटेस्टिंग कार्य रद्द कर दिए जाएंगे, जिसके परिणामस्वरूप बैकटेस्टिंग रुकावट होगी) ।
सी++
स्क्रिप्टिंग भाषाओं के विपरीत, सी ++ रणनीतियों को संकलित करने और फिर निष्पादित करने की आवश्यकता होती है। सी ++ भाषा रणनीति को पहले एफएमजेड प्लेटफॉर्म (सर्वर) पर संकलित किया जाएगा (यदि कोड के साथ कोई समस्या है, तो संकलन पारित नहीं हो सकता है, और एक त्रुटि संदेश सीधे पॉप अप होगा) । संकलन पारित होने के बाद, इसे एफएमजेड प्लेटफॉर्म (सर्वर) पर बैकटेस्ट किया जाएगा।
MyLanguage
अंतर्निहित कार्यान्वयन जावास्क्रिप्ट है, और बैकटेस्टिंग ब्राउज़र पर भी किया जाता है।
विज़ुअलाइजेशन
अंतर्निहित कार्यान्वयन जावास्क्रिप्ट है, और बैकटेस्टिंग ब्राउज़र पर भी किया जाता है।
एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म पर बैकटेस्टिंग प्रणाली को दो बैकटेस्टिंग मोड में विभाजित किया गया है (यह रणनीति भाषा के बावजूद है, यह बैकटेस्टिंग सेटिंग है, और सभी भाषाओं में रणनीति बैकटेस्टिंग समान है) ।
A bar in the K-line opens high and closes low, which constitutes a price framework, within which the prices are all in this price frame, so as long as the generated price opens high and closes low in this K-line frame within the range, the simulated price is reasonable.
यह इस तरह के एक अनुकरण की तरह हैःhttps://www.fmz.comबेशक, जब वास्तविक बैकटेस्टिंग प्रणाली इस सिमुलेशन को लागू करती है, तो स्थिति चित्र में दिखाए गए की तुलना में थोड़ा अधिक जटिल होती है। इस सिद्धांत को जानते हुए, सिमुलेशन-स्तर के बैकटेस्टिंग के नुकसानों को ध्यान में रखना महत्वपूर्ण है, हालांकि सिमुलेशन-स्तर बैकटेस्टिंग बहुत तेज़ है (क्योंकि सिमुलेशन द्वारा उत्पन्न कीमतें वास्तविक सेकंड-दर-सेकंड कीमतें नहीं हैं जो एक-एक करके जारी की जाती हैं) ।सिम्युलेटेड टिक मूवमेंट ट्रेंड, रणनीति बहुत अच्छा प्रदर्शन करेगी (लेकिन वास्तव में, कीमत इस प्रवृत्ति नहीं हो सकती है, हालांकि कीमत इस के-लाइन बार के ढांचे के भीतर है) । K-लाइन यहाँ अनुकरण टिक डेटा उत्पन्न करने के लिए इस्तेमाल किया नीचे K-लाइन कहा जाता है, और इस K-लाइन की अवधि कहा जाता हैनिचली K-लाइन अवधि, जो रणनीति सेट करने के पृष्ठ पर दिखाए अनुसार सेट किया गया हैः
1 मिनट की सेटिंग का अर्थ है कि सिमुलेटेड टिक उत्पन्न करने के लिए 1 मिनट की अवधि के साथ के-लाइन डेटा का उपयोग डेटा स्रोत के रूप में किया जाता है।
एक और बिंदु यह है कि उच्च आवृत्ति रणनीतियों के लिए, यह स्पष्ट रूप से अनुकरण स्तर के बैकटेस्टिंग का उपयोग करने के लिए उपयुक्त नहीं है। हालांकि, प्रवृत्ति रणनीतियों के लिए, अनुकरण स्तर के बैकटेस्टिंग का उपयोग अभी भी कुछ हद तक रणनीति के प्रदर्शन को प्रतिबिंबित कर सकता है।
एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म बैकटेस्टिंग सिस्टम का डेटा स्रोत कहां है? बैकटेस्टिंग सिस्टम डिफ़ॉल्ट रूप से एफएमजेड प्लेटफॉर्म के डेटा सेंटर के डेटा का उपयोग करता है। एफएमजेड प्लेटफॉर्म का डेटा सेंटर प्रत्येक एक्सचेंज की प्रत्येक मुद्रा के सेट बाजार डेटा को स्वचालित रूप से एकत्र करता है और इसे प्लेटफ़ॉर्म पर बैकटेस्टिंग सिस्टम को प्रदान करता है।
FMZ एपीआई प्रलेखन में कस्टम डेटा स्रोतों के बारे में कुछ नोट्स भी हैंःhttps://www.fmz.com/api#custom-data-source
आप बिना प्रोग्रामेटिक और मात्रात्मक व्यापार नहीं कर सकतेसीखना, परीक्षण, औरविचार करना. समस्याओं के बारे में सोचना व्यर्थ नहीं है, यह अप्रभावी है। समस्याओं को हल करने और समस्याओं के बारे में सोचने का सबसे प्रभावी तरीका हैजानकारी ढूँढना, तोकोशिश करो, सोच और विश्लेषण, यदि समस्या हल नहीं होती है, तो कृपया उपरोक्त क्रियाओं को दोहराएं।
लेकिन जब कोई नौसिखिया समस्याओं का सामना करता है, तो वह महसूस करेगा:
उपस~ यह प्रोग्राम करने के लिए बहुत मुश्किल है, मात्रा, और रणनीतियों लिखने बहुत समय तक इसे देखने के बाद भी, मैं अभी भी चकित हूँ! मैं शुरू करने से पहले हार मानना चाहता हूँ! ...
एफएमजेड प्लेटफॉर्म पर शुरुआत करना वास्तव में बहुत सरल है। सबसे पहले, आपको जानकारी खोजने में अच्छा होना चाहिए। एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म रणनीति वर्ग, समुदाय और पुस्तकालय में बहुत सारी जानकारी उपलब्ध है।
दूसरा है हाथ पर क्षमता, जो आसानी से परीक्षण किया जा सकता है का उपयोग करके बैकटेस्टिंग प्रणाली और डिबगिंग उपकरण. इसका मतलब यह नहीं है कि परीक्षण करने के लिए एक पूरी रणनीति. वास्तव में, आप भी सीख सकते हैं की मूल बातें जावास्क्रिप्ट कार्यक्रमों पर एफएमजेड क्वांट बैकटेस्टिंग प्रणाली अगर आप कर रहे हैं पूरी तरह से बुनियादी.
यह एक ट्यूटोरियल वेबसाइट है जहाँ मैं अक्सर जे एस सीखता हूँ:https://www.runoob.com/js/js-loop-for.html, यह जे एस तक सीमित नहीं है, सभी प्रकार के आईटी ज्ञान को यहां पूछा और सीखा जा सकता है। उदाहरण के लिए, मुझे नहीं पता कि JS के नियमित अभिव्यक्ति का उपयोग कैसे करें, मुझे क्या करना चाहिए? बेशक, पहले जानकारी खोजें, और फिर यह करने की कोशिश ~
मैंने इसका एक उदाहरण देखा:मैं इसे परीक्षण करना चाहता हूँ, और मैं परीक्षण और सीखने के लिए FMZ प्लेटफॉर्म के बैकटेस्टिंग सिस्टम का उपयोग कर सकता हूँ।
बैकटेस्टिंग प्रणाली पर एक यादृच्छिक विनिमय सेट करें
निम्नलिखित कोड का परीक्षण करें:
function IsEmail(str) {
var reg=/^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/;
return reg.test(str);
}
function main() {
var strEmailAddress1 = "13512345678"
Log(strEmailAddress1, " Is it an email address? ", " Answer: ", IsEmail(strEmailAddress1))
var strEmailAddress2 = "123456789@qq.com"
Log(strEmailAddress2, " Is it an email address? ", " Answer: ", IsEmail(strEmailAddress2))
}
देखो ~ क्या सीखने के उपकरण! उदाहरण के लिए, मैं सीखना चाहते हैं कि कैसे जावास्क्रिप्ट भाषा के लूप तर्क लिखने के लिए, और यह बाहर की कोशिशः
एक सरणी चर के तत्वों के माध्यम से लूप करें क्रम में जिसमें वे सरणी में दिखाई देते हैंः
function main() {
var arr = [{coinName: "BTC", price: 10000}, {coinName: "LTC", price: 100}, {coinName: "ETH", price: 2000}, {coinName: "ETC", price: 500}]
for (var i = 0 ; i < arr.length ; i++) {
Log(arr[i])
}
}
क्या आप एक पल में सीखने के लिए प्रेरित महसूस करते हैं? वास्तव में, एफएमजेड पर, आप जावास्क्रिप्ट ट्यूटोरियल देखते हुए बैकटेस्टिंग सिस्टम पर जावास्क्रिप्ट की मूल बातें सीख सकते हैं। जावास्क्रिप्ट व्याकरण लगभग महारत हासिल है, और अगले चरण में प्रवेश करते हुए, आपको डेटा परीक्षण प्राप्त करने के लिए एक्सचेंज इंटरफ़ेस का उपयोग करने की आवश्यकता है। आप भी उपयोग कर सकते हैंडिबगिंग उपकरणवास्तविक इंटरफेस परीक्षण करने के लिए एफएमजेड प्लेटफॉर्म का।
फिर यह अधिक सोचने, एक मामले से निष्कर्ष निकालने, परीक्षण सत्यापन, तुलनात्मक विश्लेषण, आदि के लिए है। यह सीखने के लिए शुरू करने के लिए बहुत जल्दी बनाता है।