রিসোর্স লোড হচ্ছে... লোডিং...

জাভাস্ক্রিপ্ট নীতি পুনরুদ্ধার করুন Chrome ব্রাউজারে DevTools ডিবাগিং

লেখক:উদ্ভাবকগণ - ক্যোটিফিকেশন - ছোট্ট স্বপ্ন, তৈরিঃ 2022-06-22 14:23:26, আপডেটঃ 2023-09-18 20:24:01

JavaScript策略回测在Chrome浏览器DevTools调试

জাভাস্ক্রিপ্ট নীতি পুনরুদ্ধার করুন Chrome ব্রাউজারে DevTools ডিবাগিং

সাধারণত রিটার্নিং সিস্টেমে ডিবাগিং কৌশল শুধুমাত্র ব্যবহার করা যেতে পারেLog()ডিবাগ ফাংশনটি খুবই কম কার্যকর এবং প্রোগ্রাম টেস্টিংয়ে কম অভিজ্ঞতার জন্য নতুনদের জন্য কিছুটা কঠিন।JavaScriptভাষার কৌশলগত ডিউটি।Chromeব্রাউজারে আরও ভাল সমর্থন রয়েছে. এটি পুনরাবৃত্তির সময় বিরতি ডিবাগিং, একক-পদক্ষেপ ডিবাগিং, ভেরিয়েবল মান পর্যবেক্ষণ, অভিব্যক্তি পর্যবেক্ষণ ইত্যাদি সম্পাদন করতে পারে।Javascriptভাষার নীতি পুনরায় পরীক্ষা করার সময় DEBUG করুন. লক্ষ্য করুন, 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) {
            // 下买单,此处有错误,会报错,返回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"}]
*/

আপনি দেখতে পাচ্ছেন যে আমরা পুনর্বিবেচনার সময় যে এক্সচেঞ্জটি যুক্ত করেছি তা হ'ল বিন্যান্স (Binance) (বাইনান) অবিলম্বে, স্ক্রিনশট হিসাবে কনফিগার করা হয়েছেঃ

JavaScript策略回测在Chrome浏览器DevTools调试

এবং যদি আমরা কৌশলগত কোড দেখতে থাকি, তাহলে আমরা দেখতে পাব যেvar t = exchange.GetTicker()এই বাক্যের নিচে আমরা লিখেছি,debuggerএকটি স্ট্রাইক, এখানে একটি ব্রেকডাউন টাইপ করার সমতুল্য, এবং প্রোগ্রামটি এই অবস্থানে কার্যকর হওয়া বন্ধ হয়ে যাবে।debuggerতবে এটি করার পরামর্শ দেওয়া হয় না, কেবলমাত্র একটি নির্দিষ্ট স্থানে একটি বিরতি লিখুন, পরবর্তী বিরতিগুলি ব্রাউজারের ডেভটুলস ডিবাগিং বৈশিষ্ট্যটিতে সেট করা যেতে পারে।

আপনি যদি আপনার ব্রাউজারে Chrome ব্রাউজারটি খুলতে চান তবে আপনি এটি খুলতে পারেন।DevToolsআবার পুনরায় পরীক্ষা করুন, নীতি কোডে সেট করাdebuggerএই আইনটি কার্যকর হবে না।debuggerএটিকে উপেক্ষা করা হবে এবং পুনরায় পরীক্ষা করা নীতিটি বিরতিতে বন্ধ করা যাবে না।DevToolsনীতি পুনরায় পরীক্ষা করার পরে, নীতি প্রোগ্রামটি প্রথম সেটিং এ বিরতি হবেdebuggerঅবস্থান,debuggerএটি কৌশলগত কোডের গ্লোবাল স্কোয়ারেও সেট করা যেতে পারে।

আমরা Chrome ব্রাউজার চালু করি।DevToolsএই সরঞ্জাম দুটি উপায়ে কাজ করেঃ

  • ১। আমরা ডান ক্লিক করে পপ-আপ মেনু খুলতে পারি।

JavaScript策略回测在Chrome浏览器DevTools调试

আমরা "চেক" ক্লিক করলে আমাদের ডিভটুলস ইন্টারফেস দেখাবে।

  • ২, শর্টকাট ব্যবহার করুন

আপনি এটি খুলতে একটি শর্টকাট ব্যবহার করতে পারেন।Command+Option+I (Mac)অথবাControl+Shift+I(Windows、Linux)খুলুনDevTools

খুলুনDevToolsএই ছবির পরেঃ

JavaScript策略回测在Chrome浏览器DevTools调试

জাভাস্ক্রিপ্ট ভাষা নীতির ব্রাউজারে ডিবাগ এর ইন্টারফেস

তারপর উপরে টেস্ট, যখন আমরা "Start Retest" বোতামটি ক্লিক করি তখন আমরা কোডের মধ্যে সেট করা আছে কারণ এটি পুনরাবৃত্তি নীতির উপর নির্ভর করে।debuggerনির্দেশ, নীতি সংশ্লিষ্ট অবস্থানে বিরতি অপেক্ষা; পুনরাবৃত্তি যেমন আটকে আছে, নীচের চিত্র হিসাবেঃ

JavaScript策略回测在Chrome浏览器DevTools调试

আপনি দেখতে পাচ্ছেন, কৌশলগতভাবেdebuggerবিচ্ছিন্নতার অবস্থান চিহ্নিত করুন, পুরো প্রোগ্রামটি শুধুমাত্র n-অনুসন্ধানের জন্য 1 এবং t-অনুসন্ধানের জন্য 1 সম্পাদন করে।GetTickerফাংশন রিটার্ন করা ট্রেডিং ডেটা. উপরের চিত্রের রেড বক্সে নির্দিষ্ট ভেরিয়েবলের মান দেখা যাবে, যা কৌশলটি চালানোর সময় ভেরিয়েবলের মানগুলি দেখতে সুবিধাজনক।

ব্রেকপয়েন্ট ডিবাগিং ম্যানুয়ালি সেট করুন

আমরা কোডের বাম দিকে লাইন নম্বর ক্লিক করে একটি বিরামচিহ্ন যোগ করতে পারি।

JavaScript策略回测在Chrome浏览器DevTools调试

"resume script execution" ক্লিক করলে স্ক্রিপ্টটি পুনরায় চালিত হবে এবং প্রোগ্রামটি পরবর্তী ব্রেকপয়েন্টে চালিত হবে। যদি ব্রেকপয়েন্ট না থাকে বা প্রোগ্রামটিতে একটি ত্রুটি থাকে যা একটি ব্যতিক্রম সৃষ্টি করে তবে পুনরায় পরীক্ষা শেষ হবে।

JavaScript策略回测在Chrome浏览器DevTools调试

এছাড়াও কিছু বোতাম রয়েছে যা আপনি ব্যবহার করতে পারেনঃ পরবর্তী ফাংশনটি এড়িয়ে যান, পরবর্তী ফাংশন কলটিতে যান, বর্তমান ফাংশন কলটি এড়িয়ে যান, একক পদক্ষেপ সম্পাদন করুন, সমস্ত বিরতি উপেক্ষা করুন ইত্যাদি।

JavaScript策略回测在Chrome浏览器DevTools调试

এই পরীক্ষার কোডটি ডিবাগ করুন

JavaScript策略回测在Chrome浏览器DevTools调试

এই সময়ে, যখন আমরা "resume script execution" বোতামটি ক্লিক করে চালিয়ে যাই, তখন নীতিমালাটি একটি ব্যতিক্রম ঘটে, পুনরায় পরীক্ষা শেষ হয় এবং একটি ব্যতিক্রমী ত্রুটি বার্তা প্রিন্ট করে।

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

এটি নতুনদের জন্য একটি সাধারণ ভুল যা একটি কাঠামোগত বৈশিষ্ট্যের নামের জন্য বড় এবং ছোট আকারের পার্থক্য করে না।

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

导致传入exchange.Buy函数的价格是一个undefined变量,引起程序异常,回测结束。

যখন প্রোগ্রামটি ব্রেকপয়েন্টে থামবে, তখন এই কোড লাইনটি কার্যকর হবে না। আমরা "step into next function call" বোতামটি ক্লিক করব।

JavaScript策略回测在Chrome浏览器DevTools调试

跳转到exchange.Buy函数调用中。

JavaScript策略回测在Chrome浏览器DevTools调试

দাম একটি undefined ভেরিয়েবল।

উপরের পদ্ধতিটি ব্যবহার করে, ধাপে ধাপে প্রোগ্রামের BUG খুঁজে পাওয়া সহজ। অনেক নতুনদের দ্বারা প্রায়শই করা ভুলঃ যেমন অ্যারেগুলির সূচক অ্যাক্সেস সীমানা অতিক্রম করা, অনির্ধারিত ভেরিয়েবলগুলি উল্লেখ করা, অভিব্যক্তি লেখার ভুল ইত্যাদি। এইভাবে প্রোগ্রামটি ডিবাগ করা সহজ।


সম্পর্কিত বিষয়বস্তু

আরও দেখুন

fmzeroঘুমের ঘর, এটা কি সম্ভব, ৬৬৬?