जावास्क्रिप्ट रणनीति बैकटेस्टिंग क्रोम ब्राउज़र के DevTools में डिबग किया गया है

लेखक:छोटे सपने, बनाया गयाः 2022-06-24 14:10:02, अद्यतन किया गयाः 2023-09-25 19:50:23

img

जावास्क्रिप्ट रणनीति बैकटेस्टिंग क्रोम ब्राउज़र के DevTools में डिबग किया गया है

बैकटेस्टिंग प्रणालियों में डिबगिंग रणनीतियों के लिए, आमतौर पर केवलLog()फ़ंक्शन का उपयोग किया जा सकता है, इसलिए DEBUG बहुत अक्षम और अनुभव के साथ नौसिखिया कार्यक्रम परीक्षकों के लिए मुश्किल है।JavaScriptभाषा,Chromeब्राउज़र इसे बेहतर समर्थन करता है, जो ब्रेकपॉइंट डिबगिंग, सिंगल-स्टेप डिबगिंग, चर मान निगरानी, अभिव्यक्ति निगरानी और इतने पर लागू कर सकता है।JavascriptFMZ मंच पर भाषा रणनीति बैकटेस्टिंग. ध्यान दें कि यह डिबगिंग विधि केवल के लिए समर्थित है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 स्पॉट है, विन्यास स्क्रीनशॉट में दिखाया गया हैः

img

रणनीति कोड को देखने के लिए जारी रखते हुए, हम देख सकते हैं कि हम लिखा है किdebuggerकमान के अधीनvar t = exchange.GetTicker()वाक्य, जो यहाँ एक ब्रेकपॉइंट हिट करने के बराबर है, और कार्यक्रम निष्पादन इस स्थिति पर बंद हो जाएगा।debuggers का उपयोग रणनीति कोड में किया जा सकता है, लेकिन ऐसा करने की अनुशंसा नहीं की जाती है, बस एक निश्चित स्थान पर एक ब्रेकपॉइंट का उपयोग करें, और बाद के ब्रेकपॉइंट ब्राउज़र के DevTools डिबगिंग फ़ंक्शन में सेट किए जा सकते हैं।

हमें खोलना होगाDevToolsक्रोम ब्राउज़र के बैकटेस्ट निष्पादित करने से पहलेdebuggerरणनीति संहिता में निर्धारित लागू हो जाएगा। अन्यथा,debuggerअनदेखी की जाएगी, और बैकटेस्टिंग के रणनीति कार्यक्रम को ब्रेकपॉइंट पर बाधित या बंद नहीं किया जा सकता है।DevToolsरणनीति का बैकटेस्ट करने के लिए, रणनीति कार्यक्रम पहली सेटिंग पर बाधित किया जाएगाdebuggerस्थिति, औरdebuggerरणनीति संहिता के वैश्विक दायरे में भी निर्धारित किया जा सकता है।

हमारे लिए खोलने के लिए दो तरीके हैंDevToolsक्रोम ब्राउज़र का उपकरणः

    1. हम पॉप-अप मेनू खोलने के लिए पृष्ठ पर राइट-क्लिक का उपयोग करें

    हम DevTools इंटरफ़ेस प्रदर्शित करने के लिए Check पर क्लिक करते हैं.

    1. शॉर्टकट कुंजी का प्रयोग करें

    आप भी खोलने के लिए शॉर्टकट कुंजी का उपयोग कर सकते हैंDevToolsदबाकरCommand+Option+I (Mac)याControl+Shift+I (Windows, Linux).

खोलने के बादDevToolsजैसा कि चित्र में दिखाया गया हैः

img

जावास्क्रिप्ट भाषा रणनीति के लिए ब्राउज़र में डीबग का इंटरफ़ेस

उपरोक्त परीक्षण के बाद, जब हम रणनीति को बैकटेस्ट करने के लिए Start Backtest बटन पर क्लिक करते हैं, तो रणनीति टूट जाती है और संबंधित स्थिति पर प्रतीक्षा करती है क्योंकिdebuggerआदेश कोड में सेट है. बैकटेस्ट फंस गया लगता है, निम्नानुसारः

img

यह देखा जा सकता है कि रणनीति द्वारा बाधित चिह्नित स्थिति मेंdebugger, पूरे कार्यक्रम केवल n के मूल्य के साथ समारोह द्वारा लौटाया बाजार डेटा निष्पादित करता है 1, और t के मूल्य के साथGetTickerआप उपरोक्त चित्र के लाल बॉक्स में विशिष्ट चर मूल्यों को देख सकते हैं, ताकि रणनीति चल रही है जब प्रत्येक चर के मूल्य का निरीक्षण करना आसान हो।

मैन्युअल रूप से डिबगिंग के लिए ब्रेकपॉइंट सेट करें

हम एक ब्रेकपॉइंट जोड़ने के लिए कोड के बाईं ओर लाइन नंबर पर क्लिक कर सकते हैं।

img

स्क्रिप्ट निष्पादन को फिर से शुरू करने के लिए स्क्रिप्ट निष्पादन को फिर से शुरू करें पर क्लिक करें, प्रोग्राम अगले ब्रेकपॉइंट पर चलाएगा, यदि कोई ब्रेकपॉइंट नहीं है या प्रोग्राम में एक त्रुटि है जो एक अपवाद का कारण बनती है, तो बैकटेस्ट समाप्त हो जाएगा.

img

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

img

कोड डीबग का परीक्षण करें

img

इस बिंदु पर, जब हम निष्पादन जारी रखने के लिए resume script execution बटन पर क्लिक करना जारी रखते हैं, तो रणनीति कार्यक्रम में एक अपवाद होगा, और बैकटेस्ट एक अपवाद त्रुटि संदेश मुद्रित के साथ समाप्त होगा।

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

मूल्य एक्सचेंज में पारित किया गया.खरीद फ़ंक्शन एक अपरिभाषित चर है, जो एक कार्यक्रम अपवाद का कारण बनता है और बैकटेस्ट समाप्त करता है।

जब प्रोग्राम ब्रेकपॉइंट स्थिति पर रुकता है, तो कोड की यह पंक्ति निष्पादित नहीं होती है। हम step into next function call बटन पर क्लिक करते हैं।

img

विनिमय के लिए जाओ. खरीदें समारोह कॉल.

img

यहाँ हम देख सकते हैं कि कीमत एक अपरिभाषित चर है।

उपरोक्त दृष्टिकोण का उपयोग करके, प्रोग्राम कीड़े कदम से पता लगाना आसान है। कई नौसिखिया अक्सर गलतियाँ करते हैं, उदाहरण के लिए, एक सरणी के सूचकांक को सीमाओं से बाहर एक्सेस किया जाता है, अपरिभाषित चर संदर्भित होते हैं, अभिव्यक्ति गलत तरीके से लिखी जाती हैं, आदि, उन सभी को प्रोग्राम डीबग करना आसान है।


संबंधित

अधिक