avatar of 发明者量化-小小梦 发明者量化-小小梦
fokus pada mesej peribadi
4
fokus pada
1271
Pengikut

Strategi JavaScript ujian balik penyahpepijatan dalam penyemak imbas Chrome DevTools

Dicipta dalam: 2022-06-22 14:23:26, dikemas kini pada: 2023-09-18 20:24:01
comments   1
hits   1736

Strategi JavaScript ujian balik penyahpepijatan dalam penyemak imbas Chrome DevTools

Strategi JavaScript ujian balik penyahpepijatan dalam penyemak imbas Chrome DevTools

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.

Pada platform FMZdebuggerarahan

Sisipkan 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:

Strategi JavaScript ujian balik penyahpepijatan dalam penyemak imbas Chrome DevTools

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:

  • 1. Kami klik kanan halaman untuk membuka menu pop timbul

Strategi JavaScript ujian balik penyahpepijatan dalam penyemak imbas Chrome DevTools

Apabila kita mengklik “Periksa”, antara muka DevTools akan dipaparkan.

  • 2. Gunakan kekunci pintasan

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:

Strategi JavaScript ujian balik penyahpepijatan dalam penyemak imbas Chrome DevTools

Antara muka nyahpepijat dalam penyemak imbas strategi bahasa JavaScript

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:

Strategi JavaScript ujian balik penyahpepijatan dalam penyemak imbas Chrome DevTools

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.

Tetapkan titik putus secara manual untuk nyahpepijat

Kita boleh mengklik pada nombor baris di sebelah kiri kod untuk menambah titik putus.

Strategi JavaScript ujian balik penyahpepijatan dalam penyemak imbas Chrome DevTools

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.

Strategi JavaScript ujian balik penyahpepijatan dalam penyemak imbas Chrome DevTools

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.

Strategi JavaScript ujian balik penyahpepijatan dalam penyemak imbas Chrome DevTools

Berikan kod ujian ini DEBUG

Strategi JavaScript ujian balik penyahpepijatan dalam penyemak imbas Chrome DevTools

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”.

Strategi JavaScript ujian balik penyahpepijatan dalam penyemak imbas Chrome DevTools

Lompat ke pertukaran. Panggilan fungsi beli.

Strategi JavaScript ujian balik penyahpepijatan dalam penyemak imbas Chrome DevTools

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.