সাধারণত রিটার্নিং সিস্টেমে ডিবাগিং কৌশল শুধুমাত্র ব্যবহার করা যেতে পারে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) (বাইনান) অবিলম্বে, স্ক্রিনশট হিসাবে কনফিগার করা হয়েছেঃ
এবং যদি আমরা কৌশলগত কোড দেখতে থাকি, তাহলে আমরা দেখতে পাব যেvar t = exchange.GetTicker()
এই বাক্যের নিচে আমরা লিখেছি,debugger
একটি স্ট্রাইক, এখানে একটি ব্রেকডাউন টাইপ করার সমতুল্য, এবং প্রোগ্রামটি এই অবস্থানে কার্যকর হওয়া বন্ধ হয়ে যাবে।debugger
তবে এটি করার পরামর্শ দেওয়া হয় না, কেবলমাত্র একটি নির্দিষ্ট স্থানে একটি বিরতি লিখুন, পরবর্তী বিরতিগুলি ব্রাউজারের ডেভটুলস ডিবাগিং বৈশিষ্ট্যটিতে সেট করা যেতে পারে।
আপনি যদি আপনার ব্রাউজারে Chrome ব্রাউজারটি খুলতে চান তবে আপনি এটি খুলতে পারেন।DevTools
আবার পুনরায় পরীক্ষা করুন, নীতি কোডে সেট করাdebugger
এই আইনটি কার্যকর হবে না।debugger
এটিকে উপেক্ষা করা হবে এবং পুনরায় পরীক্ষা করা নীতিটি বিরতিতে বন্ধ করা যাবে না।DevTools
নীতি পুনরায় পরীক্ষা করার পরে, নীতি প্রোগ্রামটি প্রথম সেটিং এ বিরতি হবেdebugger
অবস্থান,debugger
এটি কৌশলগত কোডের গ্লোবাল স্কোয়ারেও সেট করা যেতে পারে।
আমরা Chrome ব্রাউজার চালু করি।DevTools
এই সরঞ্জাম দুটি উপায়ে কাজ করেঃ
১। আমরা ডান ক্লিক করে পপ-আপ মেনু খুলতে পারি।
আমরা "চেক" ক্লিক করলে আমাদের ডিভটুলস ইন্টারফেস দেখাবে।
২, শর্টকাট ব্যবহার করুন
আপনি এটি খুলতে একটি শর্টকাট ব্যবহার করতে পারেন।Command+Option+I (Mac)
অথবাControl+Shift+I(Windows、Linux)
খুলুনDevTools
。
খুলুনDevTools
এই ছবির পরেঃ
তারপর উপরে টেস্ট, যখন আমরা "Start Retest" বোতামটি ক্লিক করি তখন আমরা কোডের মধ্যে সেট করা আছে কারণ এটি পুনরাবৃত্তি নীতির উপর নির্ভর করে।debugger
নির্দেশ, নীতি সংশ্লিষ্ট অবস্থানে বিরতি অপেক্ষা; পুনরাবৃত্তি যেমন আটকে আছে, নীচের চিত্র হিসাবেঃ
আপনি দেখতে পাচ্ছেন, কৌশলগতভাবেdebugger
বিচ্ছিন্নতার অবস্থান চিহ্নিত করুন, পুরো প্রোগ্রামটি শুধুমাত্র n-অনুসন্ধানের জন্য 1 এবং t-অনুসন্ধানের জন্য 1 সম্পাদন করে।GetTicker
ফাংশন রিটার্ন করা ট্রেডিং ডেটা. উপরের চিত্রের রেড বক্সে নির্দিষ্ট ভেরিয়েবলের মান দেখা যাবে, যা কৌশলটি চালানোর সময় ভেরিয়েবলের মানগুলি দেখতে সুবিধাজনক।
আমরা কোডের বাম দিকে লাইন নম্বর ক্লিক করে একটি বিরামচিহ্ন যোগ করতে পারি।
"resume script execution" ক্লিক করলে স্ক্রিপ্টটি পুনরায় চালিত হবে এবং প্রোগ্রামটি পরবর্তী ব্রেকপয়েন্টে চালিত হবে। যদি ব্রেকপয়েন্ট না থাকে বা প্রোগ্রামটিতে একটি ত্রুটি থাকে যা একটি ব্যতিক্রম সৃষ্টি করে তবে পুনরায় পরীক্ষা শেষ হবে।
এছাড়াও কিছু বোতাম রয়েছে যা আপনি ব্যবহার করতে পারেনঃ পরবর্তী ফাংশনটি এড়িয়ে যান, পরবর্তী ফাংশন কলটিতে যান, বর্তমান ফাংশন কলটি এড়িয়ে যান, একক পদক্ষেপ সম্পাদন করুন, সমস্ত বিরতি উপেক্ষা করুন ইত্যাদি।
এই সময়ে, যখন আমরা "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" বোতামটি ক্লিক করব।
跳转到exchange.Buy函数调用中。
দাম একটি undefined ভেরিয়েবল।
উপরের পদ্ধতিটি ব্যবহার করে, ধাপে ধাপে প্রোগ্রামের BUG খুঁজে পাওয়া সহজ। অনেক নতুনদের দ্বারা প্রায়শই করা ভুলঃ যেমন অ্যারেগুলির সূচক অ্যাক্সেস সীমানা অতিক্রম করা, অনির্ধারিত ভেরিয়েবলগুলি উল্লেখ করা, অভিব্যক্তি লেখার ভুল ইত্যাদি। এইভাবে প্রোগ্রামটি ডিবাগ করা সহজ।
fmzeroঘুমের ঘর, এটা কি সম্ভব, ৬৬৬?