बैकटेस्टिंग प्रणालियों में डिबगिंग रणनीतियों के लिए, आमतौर पर केवलLog()
फ़ंक्शन का उपयोग किया जा सकता है, इसलिए DEBUG बहुत अक्षम और अनुभव के साथ नौसिखिया कार्यक्रम परीक्षकों के लिए मुश्किल है।JavaScript
भाषा,Chrome
ब्राउज़र इसे बेहतर समर्थन करता है, जो ब्रेकपॉइंट डिबगिंग, सिंगल-स्टेप डिबगिंग, चर मान निगरानी, अभिव्यक्ति निगरानी और इतने पर लागू कर सकता है।Javascript
FMZ मंच पर भाषा रणनीति बैकटेस्टिंग. ध्यान दें कि यह डिबगिंग विधि केवल के लिए समर्थित हैJavaScript
एफएमजेड प्लेटफॉर्म पर भाषा रणनीतियों।
debugger
एफएमजेड प्लेटफॉर्म पर कमांडसम्मिलित करनाdebugger
एफएमजेड पर जावास्क्रिप्ट भाषा के रणनीति कोड में कमांड बैकटेस्टिंग के दौरान प्रोग्राम निष्पादन को बाधित करने की अनुमति देता है।
हम निम्नलिखित परीक्षण रणनीति कोड का उपयोग करते हैंः
/*backtest
start: 2022-03-21 09:00:00
end: 2022-06-21 15:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
function main() {
var n = 1
while (true) {
var t = exchange.GetTicker()
debugger
var r = exchange.GetRecords()
if (n == 1) {
// When placing a purchase order, if there is an error here, an error will be reported, and null will be returned, and GetTicker will return data t with Buy attribute only, and the attribute name is case-sensitive without buy attribute
var id = exchange.Buy(t.buy, 0.1)
var orderBuy = exchange.GetOrder(id)
}
Sleep(500)
}
}
बैकटेस्टिंग से कोड कॉन्फ़िगर करें
/*backtest
start: 2022-03-21 09:00:00
end: 2022-06-21 15:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
यहाँ हम देख सकते हैं कि हम बैकटेस्टिंग के लिए जोड़ा विनिमय Binance स्पॉट है, विन्यास स्क्रीनशॉट में दिखाया गया हैः
रणनीति कोड को देखने के लिए जारी रखते हुए, हम देख सकते हैं कि हम लिखा है किdebugger
कमान के अधीनvar t = exchange.GetTicker()
वाक्य, जो यहाँ एक ब्रेकपॉइंट हिट करने के बराबर है, और कार्यक्रम निष्पादन इस स्थिति पर बंद हो जाएगा।debugger
s का उपयोग रणनीति कोड में किया जा सकता है, लेकिन ऐसा करने की अनुशंसा नहीं की जाती है, बस एक निश्चित स्थान पर एक ब्रेकपॉइंट का उपयोग करें, और बाद के ब्रेकपॉइंट ब्राउज़र के DevTools डिबगिंग फ़ंक्शन में सेट किए जा सकते हैं।
हमें खोलना होगाDevTools
क्रोम ब्राउज़र के बैकटेस्ट निष्पादित करने से पहलेdebugger
रणनीति संहिता में निर्धारित लागू हो जाएगा। अन्यथा,debugger
अनदेखी की जाएगी, और बैकटेस्टिंग के रणनीति कार्यक्रम को ब्रेकपॉइंट पर बाधित या बंद नहीं किया जा सकता है।DevTools
रणनीति का बैकटेस्ट करने के लिए, रणनीति कार्यक्रम पहली सेटिंग पर बाधित किया जाएगाdebugger
स्थिति, औरdebugger
रणनीति संहिता के वैश्विक दायरे में भी निर्धारित किया जा सकता है।
हमारे लिए खोलने के लिए दो तरीके हैंDevTools
क्रोम ब्राउज़र का उपकरणः
हम DevTools इंटरफ़ेस प्रदर्शित करने के लिए
आप भी खोलने के लिए शॉर्टकट कुंजी का उपयोग कर सकते हैंDevTools
दबाकरCommand+Option+I (Mac)
याControl+Shift+I (Windows, Linux)
.
खोलने के बादDevTools
जैसा कि चित्र में दिखाया गया हैः
उपरोक्त परीक्षण के बाद, जब हम रणनीति को बैकटेस्ट करने के लिए debugger
आदेश कोड में सेट है. बैकटेस्ट फंस गया लगता है, निम्नानुसारः
यह देखा जा सकता है कि रणनीति द्वारा बाधित चिह्नित स्थिति मेंdebugger
, पूरे कार्यक्रम केवल n के मूल्य के साथ समारोह द्वारा लौटाया बाजार डेटा निष्पादित करता है 1, और t के मूल्य के साथGetTicker
आप उपरोक्त चित्र के लाल बॉक्स में विशिष्ट चर मूल्यों को देख सकते हैं, ताकि रणनीति चल रही है जब प्रत्येक चर के मूल्य का निरीक्षण करना आसान हो।
हम एक ब्रेकपॉइंट जोड़ने के लिए कोड के बाईं ओर लाइन नंबर पर क्लिक कर सकते हैं।
स्क्रिप्ट निष्पादन को फिर से शुरू करने के लिए
कुछ बटन भी हैं जिन्हें लागू किया जा सकता है, उदाहरण के लिए, अगले फ़ंक्शन को छोड़ दें, अगले फ़ंक्शन कॉल पर जाएं, वर्तमान फ़ंक्शन कॉल से बाहर निकलें, एकल चरण निष्पादित करें, सभी ब्रेकपॉइंट्स को अनदेखा करें, आदि।
इस बिंदु पर, जब हम निष्पादन जारी रखने के लिए
main:17:31 - TypeError: Cannot convert "undefined" to double
संरचना योगदान नाम के लिए केस-संवेदनशील नहीं होना एक आम गलती है जो नौसिखियों द्वारा की जाती है।
var id = exchange.Buy(t.buy, 0.1) // When placing a purchase order, if there is an error here, an error will be reported, and null will be returned, and GetTicker will return data t with Buy attribute only, and the attribute name is case-sensitive without buy attribute
मूल्य एक्सचेंज में पारित किया गया.खरीद फ़ंक्शन एक अपरिभाषित चर है, जो एक कार्यक्रम अपवाद का कारण बनता है और बैकटेस्ट समाप्त करता है।
जब प्रोग्राम ब्रेकपॉइंट स्थिति पर रुकता है, तो कोड की यह पंक्ति निष्पादित नहीं होती है। हम
विनिमय के लिए जाओ. खरीदें समारोह कॉल.
यहाँ हम देख सकते हैं कि कीमत एक अपरिभाषित चर है।
उपरोक्त दृष्टिकोण का उपयोग करके, प्रोग्राम कीड़े कदम से पता लगाना आसान है। कई नौसिखिया अक्सर गलतियाँ करते हैं, उदाहरण के लिए, एक सरणी के सूचकांक को सीमाओं से बाहर एक्सेस किया जाता है, अपरिभाषित चर संदर्भित होते हैं, अभिव्यक्ति गलत तरीके से लिखी जाती हैं, आदि, उन सभी को प्रोग्राम डीबग करना आसान है।