
Untuk strategi penyahpepijatan dalam sistem ujian belakang, biasanya sahajaLog()fungsi. Kecekapan DEBUG jenis ini sangat rendah, dan sukar untuk orang baru yang mempunyai sedikit pengalaman dalam ujian program. untukJavaScriptPenyahpepijatan strategi bahasaChromePelayar mempunyai sokongan yang lebih baik. Ia boleh merealisasikan penyahpepijatan titik putus, penyahpepijatan satu langkah, pemantauan nilai boleh ubah, pemantauan ekspresi, dsb. semasa ujian belakang. Kemudian mari belajar cara menggunakan kaedah ini untuk mengawal FMZ.JavascriptDEBUG semasa menguji balik strategi dalam bahasa. Ambil perhatian bahawa pada FMZ sahajaJavascriptDasar bahasa menyokong pendekatan penyahpepijatan ini.
debuggerarahanSisipkan dalam kod dasar bahasa JavaScript di FMZdebuggerArahan yang boleh mengganggu pelaksanaan program semasa ujian belakang.
Kami menggunakan kod strategi ujian berikut:
/*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)
}
}
Daripada kod konfigurasi ujian belakang
/*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"}]
*/
Anda boleh melihat bahawa pertukaran yang kami tambahkan semasa ujian belakang ialah Binance spot, dan konfigurasi adalah seperti yang ditunjukkan dalam tangkapan skrin:

Teruskan melihat kod strategi, kita dapat melihatnyavar t = exchange.GetTicker()Di bawah ayat ini kami menulisdebuggerArahan adalah bersamaan dengan menetapkan titik putus di sini, dan program akan berhenti apabila ia mencapai kedudukan ini. Berbilangdebugger, tetapi tidak disyorkan untuk berbuat demikian. Hanya tetapkan titik putus pada lokasi tertentu Titik putus seterusnya boleh ditetapkan dalam fungsi penyahpepijatan DevTools.
Anda perlu membuka penyemak imbas Chrome terlebih dahuluDevToolsKemudian lakukan ujian belakang, set kod strategidebuggerakan berkuat kuasa, jika tidakdebuggerIa akan diabaikan dan program strategi backtest tidak boleh diganggu dan dihentikan pada titik putus. BukaDevToolsSelepas backtesting strategi, program strategi akan terganggu pada set pertamadebuggerlokasi,debuggerJuga boleh ditetapkan dalam skop global kod dasar.
Kami membuka penyemak imbas ChromeDevToolsTerdapat dua jenis alat:

Apabila kita mengklik “Periksa”, antara muka DevTools akan dipaparkan.
Anda juga boleh menggunakan kekunci pintasan untuk membukanya.Command+Option+I (Mac)atauControl+Shift+I(Windows、Linux)BukaDevTools。
BukaDevToolsSelepas itu, seperti yang ditunjukkan dalam rajah:

Mengikuti ujian di atas, apabila kami mengklik butang “Mulakan Ujian Belakang” untuk menguji strategi, disebabkan tetapan dalam koddebuggerArahan, strategi mengganggu dan menunggu pada kedudukan yang sepadan. Ujian belakang nampaknya tersekat, seperti yang ditunjukkan di bawah:

Ia boleh dilihat bahawa dalam strategidebuggerTandakan kedudukan gangguan Keseluruhan program hanya melaksanakan n ditugaskan kepada 1 dan t ditugaskan kepadaGetTickerData pasaran dikembalikan oleh fungsi. Dalam kotak merah dalam gambar di atas, anda boleh melihat nilai pembolehubah tertentu, yang menjadikannya sangat mudah untuk memerhatikan nilai pelbagai pembolehubah apabila strategi berjalan.
Kita boleh mengklik pada nombor baris di sebelah kiri kod untuk menambah titik putus.

Klik “sambung semula pelaksanaan skrip” untuk menyambung semula pelaksanaan skrip Program akan berjalan ke titik putus seterusnya Jika tiada titik putus atau program mempunyai ralat dan menyebabkan pengecualian, ujian belakang akan tamat.

Terdapat juga butang yang boleh digunakan untuk: melangkau fungsi seterusnya, melangkah ke panggilan fungsi seterusnya, melompat keluar daripada panggilan fungsi semasa, satu langkah, mengabaikan semua titik putus, dsb.


Pada ketika ini, apabila kami terus mengklik butang “sambung semula pelaksanaan skrip” untuk meneruskan pelaksanaan, program strategi akan mempunyai pengecualian, ujian belakang tamat dan mesej ralat pengecualian dicetak.
main:17:31 - TypeError: Cannot convert "undefined" to double
Ini adalah kesilapan biasa yang dilakukan oleh orang baru, yang tidak membezakan antara huruf besar dan kecil untuk nama atribut struktur.
var id = exchange.Buy(t.buy, 0.1) // 下买单,此处有错误,会报错,返回null,GetTicker返回数据t,只有Buy属性,没有buy属性。
Akibatnya, harga dihantar ke dalam pertukaran. Fungsi Beli ialah pembolehubah tidak ditentukan, menyebabkan pengecualian program dan ujian belakang tamat.
Apabila program berhenti pada titik putus, baris kod ini tidak dilaksanakan. Kami terus mengklik butang “langkah ke panggilan fungsi seterusnya”.

Lompat ke pertukaran. Panggilan fungsi beli.

Lihat bahawa harga ialah pembolehubah tidak ditentukan.
Menggunakan kaedah di atas, mudah untuk mencari pepijat program langkah demi langkah. Banyak kesilapan yang sering dilakukan oleh orang baru: contohnya, akses di luar sempadan kepada indeks tatasusunan, rujukan kepada pembolehubah tidak ditentukan, penulisan ungkapan yang salah, dsb. Dengan cara ini, mudah untuk menyahpepijat atur cara.