Dasar JavaScript dihubungi semula dalam penyemak imbas Chrome oleh DevTools

Penulis:Mimpi kecil, Dicipta: 2022-06-22 14:23:26, Dikemas kini: 2023-09-18 20:24:01

img

Dasar JavaScript dihubungi semula dalam penyemak imbas Chrome oleh DevTools

Untuk membetulkan strategi dalam sistem pengesanan semula, biasanya hanya boleh digunakanLog()Fungsi tersebut. DEBUG sedemikian adalah sangat rendah kecekapan dan agak sukar untuk pemula yang tidak mempunyai banyak pengalaman dalam ujian program.JavaScriptDalam bahasa Inggeris, bahasa yang digunakan adalah bahasa yang digunakan oleh semua orang.ChromePelayar mempunyai sokongan yang lebih baik. Untuk melakukan debugging titik henti, debugging langkah tunggal, pemantauan nilai pembolehubah, pemantauan ekspresi, dan banyak lagi.JavascriptDEBUG semasa mengulas semula dasar bahasa.JavascriptStrategi bahasa menyokong pendekatan ini.

Di platform FMZ:debuggerArahan

Masukkan dalam kod dasar bahasa JavaScript di FMZdebuggerPerintah yang boleh memaksa program untuk dihentikan semasa mengulas semula.

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)
    }
}

Mengambil kod konfigurasi dari ujian semula

/*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"}]
*/

Seperti yang dapat dilihat, pertukaran yang kami tambahkan ketika mengulas semula adalah Binance (Binance) dengan konfigurasi seperti skrin:

img

Jika kita terus melihat kod strategi, kita boleh lihat di sini.var t = exchange.GetTicker()Di bawah ayat ini, kita menulis:debuggerPerintah, adalah sama seperti meletakkan titik henti di sini, program akan berhenti apabila pelaksanaan sampai ke lokasi ini.debuggerWalau bagaimanapun, tidak disyorkan untuk melakukan ini, hanya dengan mengetuk satu hentian di suatu lokasi, hentian berikutnya boleh ditetapkan dalam fungsi debugging DevTools pelayar anda.

Perkhidmatan ini memerlukan anda membuka penyemak imbas Chrome terlebih dahuluDevToolsMelakukan penyesuaian semula, yang ditetapkan dalam kod dasardebuggerJika tidak, ia akan berlaku.debuggerJika tidak, anda akan mengabaikan, dan prosedur dasar yang dipetik semula tidak dapat dihentikan berhenti di titik putus.DevToolsSetelah mengesan semula dasar, program dasar akan dihentikan pada tetapan pertamadebuggerLokasi,debuggerIa juga boleh ditetapkan dalam skop global kod strategi.

Kita buka, dan kita lihat di browser Chrome.DevToolsTerdapat dua cara untuk menggunakan alat ini:

  • Pertama, kita mengklik kanan untuk membuka menu pop-up.

    img

    Jika kita mengklik "Cek", ia akan menunjukkan antara muka DevTools.

  • 2. Gunakan kekunci pintasan

    Anda juga boleh menghidupkannya dengan mengklik butang pintasan.Command+Option+I (Mac)atauControl+Shift+I(Windows、Linux)Buka.DevTools

Buka.DevToolsSelepas itu, lihat:

img

Antara muka untuk DEBUG dalam penyemak imbas untuk dasar bahasa JavaScript

Kemudian ujian di atas, apabila kita klik butang "Memulakan Uji Ulang", dasar Uji Ulang dikurangkan kerana ia ditetapkan dalam kod.debuggerPerintah, strategi di tempat yang sesuai untuk berhenti dan menunggu.

img

Anda boleh lihat, dalam strategidebuggerTanda lokasi pemutusan, keseluruhan program hanya menjalankan n penyesuaian sebagai 1, t penyesuaian sebagaiGetTickerData pergerakan yang dikembalikan oleh fungsi. Nilai pembolehubah tertentu dapat dilihat dalam kotak merah dalam gambar di atas, sehingga mudah untuk melihat nilai setiap pembolehubah semasa menjalankan dasar.

Mengatur debugging titik henti secara manual

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

img

Klik "resume script execution" untuk menghidupkan semula pelaksanaan skrip, program akan berjalan ke titik putus seterusnya, dan jika tiada titik putus atau program mempunyai kesilapan yang menyebabkan kecacatan, ujian semula akan berakhir.

img

Terdapat beberapa butang lain yang boleh dilaksanakan: melompat ke fungsi seterusnya, pergi ke panggilan fungsi seterusnya, melompat dari panggilan fungsi semasa, menjalankan satu langkah, mengabaikan semua titik putus, dan sebagainya.

img

Berikan DEBUG kepada kod ujian ini

img

Pada masa ini, apabila kita terus mengklik butang "resume script execution" untuk meneruskan pelaksanaan, prosedur dasar akan berlaku, mengakhiri ujian semula, dan mencetak mesej kesalahan yang luar biasa.

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

Ini adalah satu kesilapan yang sering dilakukan oleh pemula, dengan menulis nama sifat struktur tanpa perbezaan besar dan kecil.

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

导致传入exchange.Buy函数的价格是一个undefined变量,引起程序异常,回测结束。

Apabila program berhenti di titik putus, baris kod ini tidak dilaksanakan. Kami terus mengklik butang "step into next function call".

img

跳转到exchange.Buy函数调用中。

img

Lihat harga sebagai pembolehubah yang tidak ditakrifkan.

Dengan menggunakan kaedah di atas, mudah untuk mengetahui program BUG langkah demi langkah. Kesalahan yang sering dilakukan oleh banyak pemula: seperti akses indeks yang melintasi sempadan, merujuk kepada pembolehubah yang tidak ditakrifkan, kesalahan penulisan ekspresi, dan lain-lain. Dengan cara ini, mudah untuk melakukan DEBUG pada program.


Berkaitan

Lebih lanjut

FmzeroRuang tidur, masih boleh, 666, hahaha