पिछले लेखों में, हमने सीखा है कि तथाकथित प्रोग्राम और मात्रात्मक ट्रेडिंग प्लेटफार्मों से प्राप्त डेटा के आधार पर एक स्क्रिप्ट प्रोग्राम है, गणनाओं, निर्णयों और ट्रिगर की एक श्रृंखला के बाद कुछ संचालन करने के लिए, और व्यापार करने के लिए प्लेटफॉर्म खातों को संचालित करने के लिए। डेटा प्राप्त करने और ऑपरेटिंग खातों को संचालित करने की ये क्रियाएं सभी प्लेटफॉर्म एपीआई इंटरफेस के माध्यम से की जाती हैं। सरल शब्दों में, स्क्रिप्ट प्रोग्राम प्लेटफार्मों के साथ बातचीत करते हैं। चूंकि यह बातचीत है, इसलिए सामान्य बातचीत और असामान्य बातचीत होनी चाहिए। जब एक असामान्य बातचीत होती है, तो एक इंटरफ़ेस अपवाद जानकारी लौटाता है।
बेशक, बाजार में प्रोग्राम किए गए और मात्रात्मक ट्रेडिंग सिस्टम या स्व-विकसित कार्यक्रमों में विभिन्न त्रुटि संकेत और संदेश होंगे। ये त्रुटि संदेश प्लेटफ़ॉर्म एपीआई द्वारा रिपोर्ट किए गए त्रुटि संदेशों तक सीमित नहीं हैं। अन्य त्रुटियां भी हैं, जैसे किः संचालन के दौरान प्रोग्राम अपवाद त्रुटि, कॉन्फ़िगरेशन त्रुटि, प्रोग्राम सिंटैक्स त्रुटि और इसी तरह।
एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म पर, त्रुटि संदेशों को मोटे तौर पर कई श्रेणियों में विभाजित किया जा सकता हैः
रणनीति वाक्यविन्यास त्रुटि इस प्रकार की त्रुटि सबसे आम त्रुटि है, जो आमतौर पर इस स्थिति के कारण होती है कि शुरुआती प्रोग्रामिंग से अपरिचित होते हैं, और अध्ययन के दौरान उनके कोड लेखन में वाक्यविन्यास त्रुटियां होती हैं। उदाहरण के लिएः
कोड को कोष्ठक जैसे वर्णों के बिना लिखा गया था। इस प्रकार की त्रुटि के लिए, त्रुटि संकेत आमतौर पर रणनीति संपादन पृष्ठ पर देखा जा सकता है, और परिस्थिति के तहत, रणनीति चलाने में असमर्थ है (एक बार रणनीति चलाने के बाद, एक त्रुटि रिपोर्ट की जाएगी, जैसा कि छवि में दिखाया गया है) ।
इसलिए, आप कोड लिखने के बाद रणनीति संपादन पृष्ठ पर एक नज़र डालने की आदत बना सकते हैं, यह देखने के लिए कि क्या कोई छोटा लाल क्रॉस है; यदि कोई है, तो इसका मतलब है कि निश्चित रूप से एक स्पष्ट त्रुटि है।
रणनीति कार्यक्रम BUG के कारण ऑपरेशन के दौरान कार्यक्रम असाधारण यदि किसी प्रोग्राम में उसके संचालन के दौरान बग होते हैं, तो अपवाद के ट्रिगर से प्रोग्राम असामान्य रूप से बंद हो जाएगा, और इस प्रकार के त्रुटि संदेश प्रदर्शित होंगे।
इस तरह की त्रुटियों के सभी कार्यक्रम अपवाद का कारण बन सकता है, और कार्यक्रम चलाने से रोकने के लिए.
गलत विन्यास और सेटिंग्स के कारण त्रुटि
एफएमजेड प्लेटफॉर्म पर, सभी ट्रेडिंग जोड़े को इस रूप में परिभाषित किया गया हैX_Y
, जिसमें BTC_USDT
; मान लीजिए कि मैं इसे गलत लिखता हूँ, मैं इसे में लिखते हैंBTC-USDT
.
एफएमजेड प्लेटफॉर्म पर बैकटेस्ट प्रणाली में त्रुटि रिपोर्टिंगः
बॉट में त्रुटि रिपोर्टिंगः
या, सबसे आम गलती है कि शुरुआती अक्सर सामना करते हैंः
इस प्रकार की त्रुटि का कारणAPI KEY
FMZ खाते के पासवर्ड के संशोधन के बाद विन्यस्त एक्सचेंज ऑब्जेक्ट में (उपयोगकर्ताओं की एपीआई कुंजी सभी ब्राउज़र अंत द्वारा एन्क्रिप्टेड हैं और FMZ प्लेटफॉर्म पर विन्यस्त हैं) । इससे एक रणनीति शुरू नहीं हो पाएगी, जिससे एक त्रुटि रिपोर्ट की जाएगी।
कॉल इंटरफ़ेस के कारण त्रुटि
इंटरफेस कॉल त्रुटियों अक्सर रणनीतियों चलाने के दौरान सामना कर रहे हैं. पिछले लेखों में हमने अध्ययन किया है और सीखा है कि FMZ मंच पर इंटरफेस में विभाजित कर रहे हैंइंटरफेस जो नेटवर्क अनुरोध करते हैंऔरइंटरफेस जो नेटवर्क अनुरोध नहीं करते हैं. इंटरफ़ेस त्रुटि सीधे रणनीति कार्यक्रम को रोकने का कारण नहीं बनती है। आमतौर पर, इंटरफ़ेस कॉल अपवाद के कारण, गलत डेटा लौटाया जाता है, और रणनीति गलती सहिष्णुता नहीं करती है। फिर, गलत डेटा के कारण प्रोग्राम अपवाद त्रुटि कार्यक्रम को रोकती है (त्रुटि सहिष्णुता की अवधारणा पहले से ही पिछले लेखों में पेश की गई है) ।
यहाँ मैं नेटवर्क अनुरोध करने वाले इंटरफेस के कई त्रुटि संदेशों की सूची देता हूँ:
नेटवर्क टाइमआउट
एक त्रुटि संदेश जो शुरुआती अक्सर सामना करते हैं, घरेलू नेटवर्क डिवाइस (पीसी या घरेलू सर्वर) के उपयोग के कारण होता है। चूंकि अधिकांश प्लेटफ़ॉर्म अवरुद्ध हैं, इसलिए कई प्लेटफ़ॉर्म मूल रूप से घरेलू नेटवर्क (चीन में) द्वारा अनुपलब्ध हैं, और एक्सेस इंटरफ़ेस एक टाइमआउट रिपोर्ट करेगा (पिछले लेखों में उल्लेख किया गया है) ।
http 429 त्रुटि
यह क्लासिक त्रुटि संदेशों में से एक है; इसका कारण यह है कि प्लेटफ़ॉर्म इंटरफेस को बहुत बार बुलाया जाता है, प्लेटफ़ॉर्म की आवृत्ति सीमा से अधिक। (पिछले लेखों में उल्लेख किया गया है) । कुछ नए छात्र कह सकते हैं कि यदि वे कई और प्लेटफार्मों या कई और प्लेटफ़ॉर्म खातों की एपीआई कुंजी के लिए आवेदन करते हैं तो त्रुटि नहीं उठेगी। हमें यह जानना होगा कि प्लेटफार्मों द्वारा इंटरफ़ेस तक पहुंचने की आवृत्ति सीमा आमतौर पर आईपी पते पर आधारित होती है। सरल शब्दों में, जब तक एक आईपी पते से भेजे गए सभी अनुरोध पते पर गिने जाते हैं, तब तक प्लेटफ़ॉर्म सर्वर आईपी की पहुंच से इनकार कर देगा, यदि अनुरोध संख्या सीमा से अधिक है।
प्लेटफ़ॉर्म इंटरफ़ेस सेवा में त्रुटि
ऊपर उल्लिखित टाइमआउट और 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"
आप शायद जानते हैं कि त्रुटि व्यापारिक जोड़ी की गलत सेटिंग के कारण होती है, क्योंकि
बैकटेस्ट सिस्टम एक मात्रात्मक उपकरण का मुख्य बिंदु भी है। बैकटेस्ट सिस्टम आसानी से एक रणनीति के प्रोटोटाइप का परीक्षण कर सकता है, और शुरू में रणनीति में संभावित बग और तार्किक समस्याओं की जांच कर सकता है, लेकिन बैकटेस्ट सिस्टम को तर्कसंगत रूप से देखने की आवश्यकता है। बैकटेस्ट सिस्टम एक निश्चित हद तक रणनीति की कुछ समस्याओं को प्रतिबिंबित कर सकता है।
निम्नलिखित एफएमजेड प्लेटफॉर्म पर बैकटेस्ट सिस्टम का संक्षिप्त विवरण है।
जावास्क्रिप्ट
बैकटेस्ट ब्राउज़र पर किया जाता है, और यह स्थानीय हार्डवेयर संसाधनों का उपयोग करता है.
पायथन
एक डॉकर पर बैकटेस्ट में, आप चुन सकते हैं कि कौन सा डॉकर असाइन करना है (या तो स्वयं द्वारा तैनात डॉकर, या एफएमजेड प्लेटफॉर्म के सार्वजनिक डॉकर) । एफएमजेड प्लेटफॉर्म पर सार्वजनिक डॉकर के बड़े लोड के मद्देनजर, स्थानीय डॉकर बैकटेस्ट का उपयोग करने की सिफारिश की जाती है (यह भी तेज़ होगा। सार्वजनिक डॉकर के बैकटेस्ट में, जब यह अतिभारित होता है, तो कुछ बैकटेस्ट कार्य रद्द हो जाएंगे, बैकटेस्ट के परिणाम के साथ बाधित) ।
सी++
स्क्रिप्टिंग भाषाओं के विपरीत, सी ++ रणनीतियों को संकलित करने और फिर निष्पादित करने की आवश्यकता होती है। सी ++ भाषा रणनीति को पहले एफएमजेड प्लेटफॉर्म (सर्वर) पर संकलित किया जाएगा (यदि कोड लेखन के साथ कोई समस्या है, तो संकलन पारित नहीं हो सकता है, और एक त्रुटि संदेश सीधे संकेत देगा) । संकलन पारित होने के बाद, इसे एफएमजेड प्लेटफॉर्म (सर्वर) पर बैकटेस्ट किया जाएगा।
मिल्लैंगुएज
अंडरलेयर जावास्क्रिप्ट द्वारा लागू किया जाता है, और बैकटेस्ट ब्राउज़र पर भी किया जाता है।
विज़ुअलाइजेशन
अंडरलेयर जावास्क्रिप्ट द्वारा लागू किया जाता है, और बैकटेस्ट भी ब्राउज़र पर किया जाता है
एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म की बैकटेस्ट प्रणाली में दो बैकटेस्ट मोड हैं (चाहे कोई रणनीति किस भाषा में लिखी गई हो, बैकटेस्ट मोड बैकटेस्ट सिस्टम की सेटिंग है, और सेटिंग विकल्प एफएमजेड पर समर्थित सभी भाषाओं के लिए समान हैं) ।
बैकटेस्ट प्रणाली के निर्देश के लिए, आप एफएमजेड प्लेटफॉर्म पर रणनीति लेखन ट्यूटोरियल के संबंधित भाग का संदर्भ ले सकते हैंः
There are the highest, the lowest, open and close prices in one bar, which forms a price structure. Within the time range represented by the K-line, the prices are all in the price structure. Therefore, as long as the generated price is within the K-line structure of the four prices, the simulated price is reasonable.
जैसा कि निम्नलिखित चित्र में दिखाया गया सिमुलेशन हैः
निश्चित रूप से, यह थोड़ा अधिक जटिल है की तुलना में क्या चित्र में दिखाया गया है करने के लिए का एहसास करने के लिए सिमुलेशन में बैकटेस्ट प्रणाली, जो आगे चर्चा नहीं की जाएगी यहाँ. आप केवल समझने की जरूरत है तंत्र के सिमुलेशन स्तर के बैकटेस्ट. सिद्धांत जानने के बाद, आपको सिमुलेशन स्तर के बैकटेस्ट के नुकसान पर ध्यान देने की आवश्यकता है। हालांकि सिमुलेशन स्तर का बैकटेस्ट बहुत तेज़ है (क्योंकि सिमुलेशन द्वारा उत्पन्न कीमतें वास्तविक सेकंड-दर-सेकंड कीमतें नहीं हैं जो क्रमिक रूप से जारी की जाती हैं) ।सिम्युलेटेड टिक चेंजिंग ट्रेंड, रणनीति उत्कृष्ट प्रदर्शन करेगी (लेकिन वास्तव में, कीमत प्रवृत्ति के साथ नहीं बदल सकती है, हालांकि कीमत K-लाइन बार की संरचना के भीतर है) । K-लाइन यहाँ अनुकरण टिक डेटा उत्पन्न करने के लिए इस्तेमाल किया नीचे K-लाइन कहा जाता है, और K-लाइन की अवधि कहा जाता हैनिचली K-लाइन अवधि, जो रणनीति सेटिंग पृष्ठ पर निम्न चित्र के रूप में सेट किया गया हैः
यहाँ मैंने 1 मिनट सेट किया है, जिसका अर्थ है कि सिमुलेटेड टिक डेटा उत्पन्न करने के लिए डेटा स्रोत के रूप में 1 मिनट की अवधि के साथ के-लाइन डेटा का उपयोग करना।
एक और बात यह है कि उच्च आवृत्ति रणनीति के लिए, सिमुलेशन स्तर का बैकटेस्ट स्पष्ट रूप से उपयुक्त नहीं है। लेकिन, एक प्रवृत्ति रणनीति के लिए, सिमुलेशन स्तर का बैकटेस्ट, कुछ हद तक, रणनीति के प्रदर्शन को दिखा सकता है।
एफएमजेड क्वांट बैकटेस्ट सिस्टम का डेटा स्रोत कहां है? बैकटेस्ट सिस्टम डिफ़ॉल्ट रूप से एफएमजेड प्लेटफॉर्म पर डैशबोर्ड के डेटा का उपयोग करता है। एफएमजेड का डैशबोर्ड स्वचालित रूप से प्रत्येक प्लेटफॉर्म पर प्रत्येक मुद्रा के सेट बाजार डेटा को एकत्र करता है और इसे प्लेटफॉर्म के बैकटेस्ट सिस्टम को प्रदान करता है।
FMZ एपीआई प्रलेखन में कस्टम डेटा स्रोत के बारे में कुछ निर्देश भी हैंःhttps://www.fmz.com/api#Custom डेटा स्रोत
FMZ प्लेटफॉर्म पर डाइजेस्ट में भी कुछ योजनाएं हैं। जो लोग इसमें रुचि रखते हैं, वे उन योजनाओं का संदर्भ ले सकते हैं और उनका अध्ययन कर सकते हैं।
आप बिना प्रोग्राम और मात्रात्मक व्यापार नहीं कर सकतेअध्ययन करना, परीक्षणऔरविचार करना. प्रश्नों के बारे में शून्य से सोचना अप्रभावी है। समस्या को हल करने और प्रश्न के बारे में सोचने का सबसे कुशल तरीका यह है किसूचना की खोज, तोस्वयं प्रयास करें, औरसोच और विश्लेषण करनायदि समस्या हल नहीं होती है, तो उपरोक्त क्रियाओं को दोहराएं।
लेकिन, आम तौर पर जब शुरुआती समस्याओं का सामना करते हैं, तो वे महसूस करेंगे:
ओह, प्रोग्राम और मात्रात्मक रणनीतियों को लिखना बहुत मुश्किल है! अभी भी इसके बारे में भ्रमित, यहां तक कि मैं भी कुछ समय से इसका अध्ययन कर रहा हूँ! सिर्फ शुरू करने से पहले ही हार मानना चाहता हूँ! ...
एफएमजेड प्लेटफॉर्म के साथ शुरुआत करना वास्तव में बहुत आसान और सरल है। सबसे पहले, आपको जानकारी खोजने में अच्छा होना चाहिए। एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म पर
फिर, परिचालन क्षमता है; बैकटेस्ट सिस्टम और डिबगिंग टूल का उपयोग करके आसानी से एक परीक्षण कर सकते हैं। इसका मतलब पूरी रणनीति का परीक्षण करना नहीं है। वास्तव में, यदि आपके पास पूरी तरह से शून्य मूल बातें हैं, तो आप एफएमजेड क्वांट के बैकटेस्ट सिस्टम पर सीधे जावास्क्रिप्ट प्रोग्राम की मूल बातें भी सीख सकते हैं।
यह एक ट्यूटोरियल वेबसाइट है जहाँ मैं अक्सर जे एस का अध्ययन करता हूँ: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 the email address? ", " Answer:", IsEmail(strEmailAddress1))
var strEmailAddress2 = "123456789@qq.com"
Log(strEmailAddress2, " Is it the 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])
}
}
क्या आप तुरंत सीखने के लिए प्रेरित महसूस करते हैं? वास्तव में, एफएमजेड पर, आप जावास्क्रिप्ट ट्यूटोरियल को देखते हुए बैकटेस्ट सिस्टम पर संचालन का प्रयास करके जावास्क्रिप्ट की मूल बातें पूरी तरह से सीख सकते हैं। जावास्क्रिप्ट सिंटैक्स लगभग महारत हासिल करने के बाद, आप वास्तव में डेटा प्राप्त करने और परीक्षण करने के लिए प्लेटफॉर्म इंटरफ़ेस का उपयोग करने के लिए अगले चरण में प्रवेश कर सकते हैं। आप भी उपयोग कर सकते हैंडिबग उपकरणएफएमजेड पर वास्तविक इंटरफेस परीक्षण करने के लिए। फिर, आपको अधिक सोचने की जरूरत है, एक मामले से निष्कर्ष निकालने के लिए, परीक्षण, सत्यापन, और तुलनात्मक विश्लेषण, आदि के साथ। यह सीखने और शुरू करने को बहुत तेज़ बनाता है।