ক্রোম ব্রাউজারের ডেভটুলসে জাভাস্ক্রিপ্ট কৌশল ব্যাকটেস্টিং ডিবাগ করা হয়েছে

লেখক:ছোট্ট স্বপ্ন, সৃষ্টিঃ ২০২২-০৬-২৪ ১৪ঃ১০ঃ০২, আপডেটঃ ২০২৩-০৯-২৫ ১৯ঃ৫০ঃ২৩

img

ক্রোম ব্রাউজারের ডেভটুলসে জাভাস্ক্রিপ্ট কৌশল ব্যাকটেস্টিং ডিবাগ করা হয়েছে

ব্যাকটেস্টিং সিস্টেমে ডিবাগিং কৌশলগুলির জন্য, সাধারণত শুধুমাত্র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ব্যাকটেস্ট চালানোর আগে ক্রোম ব্রাউজার, তারপরdebuggerঅন্যথায়, কৌশল কোডের মধ্যে নির্ধারিত কার্যকর হবে।debuggerঅবহেলা করা হবে, এবং ব্যাকটেস্টিং এর কৌশল প্রোগ্রাম বিরতি বা বিরতি বিন্দুতে বন্ধ করা যাবে না।DevToolsকৌশল backtest করার জন্য, কৌশল প্রোগ্রাম প্রথম সেটিং এ বিরতি হবে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

এখানে আমরা দেখতে পাচ্ছি যে দাম একটি অনির্ধারিত পরিবর্তনশীল।

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


সম্পর্কিত

আরো