ব্যাকটেস্টিং সিস্টেমে ডিবাগিং কৌশলগুলির জন্য, সাধারণত শুধুমাত্র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
ব্যাকটেস্ট চালানোর আগে ক্রোম ব্রাউজার, তারপরdebugger
অন্যথায়, কৌশল কোডের মধ্যে নির্ধারিত কার্যকর হবে।debugger
অবহেলা করা হবে, এবং ব্যাকটেস্টিং এর কৌশল প্রোগ্রাম বিরতি বা বিরতি বিন্দুতে বন্ধ করা যাবে না।DevTools
কৌশল backtest করার জন্য, কৌশল প্রোগ্রাম প্রথম সেটিং এ বিরতি হবে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
এক্সচেঞ্জে পাস করা মূল্য। ক্রয় ফাংশন একটি অনির্দিষ্ট পরিবর্তনশীল, যা একটি প্রোগ্রাম ব্যতিক্রম সৃষ্টি করে এবং ব্যাকটেস্ট শেষ করে।
যখন প্রোগ্রামটি ব্রেকপয়েন্ট পজিশনে থামে, তখন কোডের এই লাইনটি এক্সিকিউটেড হয় না। আমরা
এক্সচেঞ্জে যাও. ক্রয় ফাংশন কল.
এখানে আমরা দেখতে পাচ্ছি যে দাম একটি অনির্ধারিত পরিবর্তনশীল।
উপরের পদ্ধতি ব্যবহার করে, প্রোগ্রামের বাগগুলি ধাপে ধাপে খুঁজে পাওয়া সহজ। অনেক শিক্ষানবিস প্রায়শই ভুল করে, উদাহরণস্বরূপ, একটি অ্যারের সূচক সীমার বাইরে অ্যাক্সেস করা হয়, অনির্ধারিত ভেরিয়েবলগুলি উল্লেখ করা হয়, অভিব্যক্তিগুলি ভুলভাবে লেখা হয় ইত্যাদি, এগুলি সবই প্রোগ্রামটি ডিবাগ করা সহজ।