avatar of 发明者量化-小小梦 发明者量化-小小梦
fokus pada Pesan pribadi
4
fokus pada
1271
Pengikut

Strategi JavaScript untuk pengujian ulang debugging di browser Chrome DevTools

Dibuat di: 2022-06-22 14:23:26, diperbarui pada: 2023-09-18 20:24:01
comments   1
hits   1736

Strategi JavaScript untuk pengujian ulang debugging di browser Chrome DevTools

Strategi JavaScript untuk pengujian ulang debugging di browser Chrome DevTools

Untuk strategi debugging dalam sistem backtesting, biasanya hanyaLog()fungsi. Efisiensi DEBUG jenis ini sangat rendah dan sulit bagi pemula yang memiliki sedikit pengalaman dalam pengujian program. untukJavaScriptStrategi debugging bahasaChromePeramban memiliki dukungan yang lebih baik. Ia dapat mewujudkan debugging breakpoint, debugging langkah tunggal, pemantauan nilai variabel, pemantauan ekspresi, dsb. selama pengujian ulang. Baiklah, mari kita pelajari cara menggunakan cara ini untuk mengendalikan FMZ.JavascriptDEBUG saat menguji ulang strategi dalam bahasa tersebut. Perlu diketahui bahwa hanya di FMZJavascriptKebijakan bahasa mendukung pendekatan ini untuk debugging.

Di platform FMZdebuggerpetunjuk

Masukkan kode kebijakan bahasa JavaScript di FMZdebuggerInstruksi yang dapat menghentikan eksekusi program selama pengujian ulang.

Kami menggunakan kode strategi pengujian 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)
    }
}

Dari kode konfigurasi backtest

/*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 dapat melihat bahwa bursa yang kami tambahkan selama pengujian ulang adalah Binance spot, dan konfigurasinya seperti yang ditunjukkan pada tangkapan layar:

Strategi JavaScript untuk pengujian ulang debugging di browser Chrome DevTools

Jika kita terus melihat kode strategi, kita dapat melihat bahwavar t = exchange.GetTicker()Di bawah kalimat ini kami menulisdebuggerInstruksinya setara dengan pengaturan titik henti di sini, dan program akan berhenti saat mencapai posisi ini. Banyak sekalidebugger, tetapi tidak disarankan untuk melakukannya. Tetapkan breakpoint di lokasi tertentu. Breakpoint berikutnya dapat ditetapkan dalam fungsi debugging DevTools pada browser.

Anda perlu membuka browser Chrome terlebih dahuluDevToolsKemudian lakukan backtest, set kode strategidebuggerakan berlaku, jika tidakdebuggerIni akan diabaikan dan program strategi pengujian ulang tidak dapat diganggu gugat dan dihentikan pada titik henti. MembukaDevToolsSetelah melakukan backtesting strategi, program strategi akan diinterupsi pada set pertamadebuggerLokasi,debuggerDapat juga diatur dalam lingkup global kode kebijakan.

Kami membuka browser ChromeDevToolsAda dua jenis alat:

  • 1. Kita klik kanan halaman tersebut untuk membuka menu pop up

Strategi JavaScript untuk pengujian ulang debugging di browser Chrome DevTools

Ketika kita mengklik “Periksa”, antarmuka DevTools akan ditampilkan.

  • 2. Gunakan tombol pintas

Anda juga dapat menggunakan tombol pintas untuk membukanya.Command+Option+I (Mac)atauControl+Shift+I(Windows、Linux)Membuka DevTools

MembukaDevToolsSetelah itu, seperti yang ditunjukkan pada gambar:

Strategi JavaScript untuk pengujian ulang debugging di browser Chrome DevTools

Antarmuka debug di browser strategi bahasa JavaScript

Mengikuti tes di atas, ketika kita mengklik tombol “Mulai Pengujian Kembali” untuk menguji kembali strategi, karena pengaturan dalam kodedebuggerInstruksi, strategi menyela dan menunggu di posisi yang sesuai. Backtest tampaknya macet, seperti yang ditunjukkan di bawah ini:

Strategi JavaScript untuk pengujian ulang debugging di browser Chrome DevTools

Terlihat bahwa dalam strategidebuggerTandai posisi interupsi. Seluruh program hanya mengeksekusi n yang ditetapkan ke 1 dan t yang ditetapkan keGetTickerData pasar yang dikembalikan oleh fungsi. Dalam kotak merah pada gambar di atas, Anda dapat melihat nilai variabel spesifik, yang membuatnya sangat mudah untuk mengamati nilai berbagai variabel saat strategi sedang berjalan.

Tetapkan titik henti secara manual untuk debugging

Kita dapat mengeklik nomor baris di sisi kiri kode untuk menambahkan titik henti.

Strategi JavaScript untuk pengujian ulang debugging di browser Chrome DevTools

Klik “lanjutkan eksekusi skrip” untuk melanjutkan eksekusi skrip. Program akan berjalan ke breakpoint berikutnya. Jika tidak ada breakpoint atau program mengalami kesalahan dan menyebabkan pengecualian, backtest akan berakhir.

Strategi JavaScript untuk pengujian ulang debugging di browser Chrome DevTools

Ada juga tombol yang dapat digunakan untuk: melewati fungsi berikutnya, melangkah ke pemanggilan fungsi berikutnya, keluar dari pemanggilan fungsi saat ini, langkah tunggal, mengabaikan semua titik henti, dan lain-lain.

Strategi JavaScript untuk pengujian ulang debugging di browser Chrome DevTools

Berikan kode pengujian ini DEBUG

Strategi JavaScript untuk pengujian ulang debugging di browser Chrome DevTools

Pada titik ini, saat kita terus mengklik tombol “lanjutkan eksekusi skrip” untuk melanjutkan eksekusi, program strategi akan mengalami pengecualian, pengujian ulang akan berakhir, dan pesan kesalahan pengecualian akan dicetak.

main:17:31 - TypeError: Cannot convert "undefined" to double

Ini adalah kesalahan umum yang dilakukan oleh pemula, yang tidak membedakan antara huruf besar dan kecil untuk nama atribut struktur.

var id = exchange.Buy(t.buy, 0.1)  //  下买单,此处有错误,会报错,返回null,GetTicker返回数据t,只有Buy属性,没有buy属性。

Akibatnya, harga masuk ke bursa. Fungsi beli adalah variabel tak terdefinisi, menyebabkan pengecualian program dan pengujian ulang berakhir.

Ketika program berhenti di breakpoint, baris kode ini tidak dieksekusi. Kami terus mengklik tombol “masuk ke panggilan fungsi berikutnya”.

Strategi JavaScript untuk pengujian ulang debugging di browser Chrome DevTools

Lompat ke panggilan fungsi bursa.Beli.

Strategi JavaScript untuk pengujian ulang debugging di browser Chrome DevTools

Lihat bahwa harga adalah variabel yang tidak terdefinisi.

Dengan menggunakan metode di atas, mudah untuk menemukan bug program langkah demi langkah. Banyak kesalahan yang sering dilakukan oleh pemula: misalnya, akses keluar batas ke indeks array, referensi ke variabel yang tidak terdefinisi, penulisan ekspresi yang salah, dll. Dengan cara ini, mudah untuk men-debug program.