
ব্যাকটেস্টিং সিস্টেমে ডিবাগিং কৌশলগুলির জন্য, আপনি সাধারণত ব্যবহার করতে পারেনLog()ফাংশন এইভাবে, DEBUG কার্যকারিতা খুব কম, এবং প্রোগ্রাম পরীক্ষার সামান্য অভিজ্ঞতা সহ নতুনদের জন্য এটি কঠিন। জন্যJavaScriptভাষা কৌশল ডিবাগিং পরিপ্রেক্ষিতেChromeব্রাউজারগুলির আরও ভাল সমর্থন রয়েছে। ব্রেকপয়েন্ট ডিবাগিং, একক-পদক্ষেপ ডিবাগিং, পরিবর্তনশীল মান পর্যবেক্ষণ, এক্সপ্রেশন মনিটরিং ইত্যাদি ব্যাকটেস্টিংয়ের সময় প্রয়োগ করা যেতে পারে। তাহলে চলুন জেনে নিই কিভাবে FMZ মোকাবেলা করতে এই পদ্ধতিটি ব্যবহার করবেনJavascriptভাষা কৌশল ব্যাকটেস্টের সময় ডিবাগ করুন। উল্লেখ্য যে শুধুমাত্র FMZ এJavascriptভাষার নীতিগুলি এই ডিবাগিং পদ্ধতিকে সমর্থন করে৷
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"}]
*/
আপনি দেখতে পাচ্ছেন যে ব্যাকটেস্টিংয়ের সময় আমরা যে এক্সচেঞ্জটি যোগ করেছি তা হল Binance স্পট, এবং কনফিগারেশনটি স্ক্রিনশটে দেখানো হয়েছে:

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

যখন আমরা “পরিদর্শন” এ ক্লিক করি, তখন DevTools ইন্টারফেস প্রদর্শিত হবে।
আপনি এটি খুলতে শর্টকাট কী ব্যবহার করতে পারেন, টিপুনCommand+Option+I (Mac)বাControl+Shift+I(Windows、Linux)খোলাDevTools。
খোলাDevToolsএর পরে এটি এই মত দেখায়:

উপরের পরীক্ষার পরে, যখন আমরা কৌশলটি ব্যাকটেস্ট করতে “ব্যাকটেস্ট শুরু করুন” বোতামটি ক্লিক করি, কারণ কোডটি সেট করা আছেdebuggerনির্দেশাবলী এবং কৌশলগুলি বাধা দেয় এবং সংশ্লিষ্ট অবস্থানে অপেক্ষা করে। ব্যাকটেস্ট আটকে আছে বলে মনে হচ্ছে, নীচে দেখানো হয়েছে:

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

স্ক্রিপ্ট এক্সিকিউশন পুনরায় শুরু করতে “রিজিউম স্ক্রিপ্ট এক্সিকিউশন” এ ক্লিক করুন যদি প্রোগ্রামে কোনো ব্রেকপয়েন্ট না থাকে বা কোনো ব্যতিক্রম ঘটে থাকে, তাহলে ব্যাকটেস্ট শেষ হবে।

এছাড়াও বোতামগুলি রয়েছে: পরবর্তী ফাংশনটি এড়িয়ে যান, পরবর্তী ফাংশন কলে যান, বর্তমান ফাংশন কল থেকে লাফিয়ে যান, একক পদক্ষেপ, সমস্ত ব্রেকপয়েন্ট উপেক্ষা করুন ইত্যাদি৷


এই সময়ে, যখন আমরা এক্সিকিউশন চালিয়ে যেতে “রিজুম স্ক্রিপ্ট এক্সিকিউশন” বোতামে ক্লিক করতে থাকি, তখন ব্যাকটেস্ট শেষ হয় এবং একটি ব্যতিক্রম ত্রুটি বার্তা প্রিন্ট হয়।
main:17:31 - TypeError: Cannot convert "undefined" to double
এটি একটি ভুল যা নতুনদের দ্বারা করা হয় একটি নির্দিষ্ট কাঠামোগত বৈশিষ্ট্যের নাম কেস-সংবেদনশীল নয়৷
var id = exchange.Buy(t.buy, 0.1) // 下买单,此处有错误,会报错,返回null,GetTicker返回数据t,只有Buy属性,没有buy属性。
ফলস্বরূপ, মূল্য এক্সচেঞ্জে চলে যায়৷ Buy ফাংশনটি একটি অনির্ধারিত পরিবর্তনশীল, যার ফলে একটি প্রোগ্রাম ব্যতিক্রম হয় এবং ব্যাকটেস্ট শেষ হয়৷
যখন প্রোগ্রামটি ব্রেকপয়েন্টে থামে, কোডের এই লাইনটি কার্যকর করা হয় না। চলুন “পরবর্তী ফাংশন কলে ধাপ” বোতামে ক্লিক করা চালিয়ে যাওয়া যাক।

এক্সচেঞ্জে যান। ফাংশন কল কিনুন।

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