4
ध्यान केंद्रित करना
1271
समर्थक

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

में बनाया: 2022-06-22 14:23:26, को अपडेट: 2023-09-18 20:24:01
comments   1
hits   1736

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

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

बैकटेस्टिंग सिस्टम में डिबगिंग रणनीतियों के लिए, आमतौर पर केवलLog()समारोह। इस प्रकार की डीबग दक्षता बहुत कम है, और यह उन नौसिखियों के लिए कठिन है जिन्हें प्रोग्राम परीक्षण में बहुत कम अनुभव है। के लिएJavaScriptभाषा की रणनीति डिबगिंगChromeब्राउज़रों का समर्थन बेहतर है। यह बैकटेस्टिंग के दौरान ब्रेकपॉइंट डिबगिंग, सिंगल-स्टेप डिबगिंग, वेरिएबल वैल्यू मॉनिटरिंग, एक्सप्रेशन मॉनिटरिंग आदि को साकार कर सकता है। तो फिर आइए जानें कि FMZ को नियंत्रित करने के लिए इस विधि का उपयोग कैसे करें।Javascriptभाषा में रणनीतियों का बैकटेस्टिंग करते समय DEBUG का प्रयोग करें। ध्यान रखें कि केवल FMZ परJavascriptभाषा की नीतियाँ डिबगिंग के इस दृष्टिकोण का समर्थन करती हैं।

FMZ प्लेटफॉर्म परdebuggerअनुदेश

FMZ पर जावास्क्रिप्ट भाषा का नीति कोड डालें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) {
            // 下买单,此处有错误,会报错,返回null,GetTicker返回数据t,只有Buy属性,没有buy属性,属性名区分大小写
            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"}]
*/

आप देख सकते हैं कि बैकटेस्ट के दौरान हमने जो एक्सचेंज जोड़ा है वह बिनेंस स्पॉट है, और कॉन्फ़िगरेशन स्क्रीनशॉट में दिखाया गया है:

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

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

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

हम क्रोम ब्राउज़र खोलते हैंDevToolsउपकरण दो प्रकार के होते हैं:

  • 1. हम पॉप-अप मेनू खोलने के लिए पेज पर राइट-क्लिक करते हैं

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

जब हम “निरीक्षण” पर क्लिक करेंगे तो DevTools इंटरफ़ेस प्रदर्शित होगा।

  • 2. शॉर्टकट कुंजियों का उपयोग करें

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

खुलाDevToolsइसके बाद, जैसा कि चित्र में दिखाया गया है:

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

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

उपरोक्त परीक्षण के बाद, जब हम रणनीति का बैकटेस्ट करने के लिए “स्टार्ट बैकटेस्टिंग” बटन पर क्लिक करते हैं, तो कोड में सेटिंग के कारणdebuggerनिर्देश, रणनीति बाधित होती है और संबंधित स्थिति पर प्रतीक्षा करती है। बैकटेस्ट अटका हुआ प्रतीत होता है, जैसा कि नीचे दिखाया गया है:

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

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

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

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

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

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

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

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

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

यह परीक्षण कोड दें DEBUG

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

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

main:17:31 - TypeError: Cannot convert "undefined" to double

यह नौसिखियों द्वारा की जाने वाली एक सामान्य गलती है, जो संरचना विशेषता नाम के लिए ऊपरी और निचले केस के बीच अंतर नहीं करते हैं।

var id = exchange.Buy(t.buy, 0.1)  //  下买单,此处有错误,会报错,返回null,GetTicker返回数据t,只有Buy属性,没有buy属性。

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

जब प्रोग्राम ब्रेकपॉइंट पर रुक जाता है, तो कोड की यह पंक्ति निष्पादित नहीं होती। हम “अगले फ़ंक्शन कॉल में कदम रखें” बटन पर क्लिक करना जारी रखते हैं।

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

एक्सचेंज पर जाएं.फ़ंक्शन कॉल खरीदें.

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

ध्यान रखें कि मूल्य एक अपरिभाषित चर है।

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