Para las políticas de depuración en sistemas de retroalimentación, normalmente sólo se puede usarLog()
Función: DEBUG es muy bajo en eficiencia y es difícil para los principiantes con poca experiencia en pruebas de programas.JavaScript
La estrategia de debujo de la lenguaChrome
Los navegadores tienen un mejor soporte. Puede realizar interrupción de redirección, redirección de un solo paso, monitoreo de valores de variables, monitoreo de expresiones, etc. A continuación, vamos a aprender juntos cómo usar este método en FMZ.Javascript
La política de lenguaje DEBUG cuando se vuelve a evaluar.Javascript
Las estrategias del lenguaje apoyan este tipo de programación.
debugger
Las instruccionesInserción en el código de la política del lenguaje JavaScript en FMZdebugger
La instrucción que permite interrumpir el programa en el momento de la revisión.
En la actualidad, la mayoría de los usuarios de Twitter usan el código de la estrategia de prueba:
/*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)
}
}
El código de configuración de la prueba de retorno
/*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"}]
*/
Se puede ver que el intercambio que se añade a la revisión es Binance (Binancial) Cash, configurado como en la imagen de pantalla:
Si seguimos viendo el código de la estrategia, podemos ver quevar t = exchange.GetTicker()
En esta frase, lo que escribimos es:debugger
La instrucción, es como poner un punto de interrupción aquí y el programa se detiene cuando se ejecuta hasta este punto.debugger
Sin embargo, no se recomienda hacer esto, incluso si se escribe una interrupción en un lugar, las interrupciones posteriores se pueden configurar en la función de depuración de DevTools del navegador.
En la actualidad, la mayoría de las aplicaciones de Google Chrome están abiertas.DevTools
Luego ejecuta la revisión, la cual está establecida en el código de la política.debugger
La ley no se aplicará hasta que se aplique, si no.debugger
Se ignorará y el programa de la política de retraso no puede interrumpirse para detenerse en el punto de interrupción.DevTools
Después de revisar la política, el programa de política se interrumpe en la primera configuración.debugger
La ubicación.debugger
También se puede configurar en el ámbito global de la estrategia de código.
En el navegador de Chrome, el navegador de Google Chrome está abierto y el navegador de Google Chrome está abierto.DevTools
La herramienta tiene dos formas:
Primero, hacemos clic derecho en el menú emergente de la página.
Si hacemos clic en "Verificar", se muestra la interfaz de DevTools.
2. Utilice el teclado de acceso rápido.
También puedes abrirlo con el teclado de acceso directo.Command+Option+I (Mac)
¿Qué es esto?Control+Shift+I(Windows、Linux)
¿Qué es esto?DevTools
。
¿Qué es esto?DevTools
Después de esto:
La siguiente prueba, cuando hacemos clic en el botón "Iniciar la revisión", la política de revisión se establece en el código.debugger
Las instrucciones, las políticas se interrumpen en el lugar correspondiente y esperan.
Como se puede ver, en la estrategiadebugger
Marcando la posición de la interrupción, el programa entero sólo ejecuta la asignación n como 1, la asignación t comoGetTicker
Los datos de transacción que devuelve la función. En el gráfico de arriba se puede ver el valor de las variables específicas en el cuadro rojo, por lo que es conveniente observar el valor de cada variable cuando se ejecuta la política.
Podemos hacer clic en el número de la línea de la izquierda del código y añadir puntos de interrupción.
Al hacer clic en "resume script execution", el programa se ejecutará hasta el siguiente punto de interrupción. Si no hay interrupción o si el programa tiene un error que causa una excepción, la revisión terminará.
También hay algunos botones que se pueden implementar: saltar la siguiente función, ir a la siguiente llamada, saltar la llamada actual, ejecutar en un solo paso, ignorar todos los puntos de interrupción, etc.
En este momento, cuando seguimos haciendo clic en el botón "resume script execution" para continuar ejecutando, el programa de políticas se produce una anomalía, la revisión termina y imprime un mensaje de error de anomalía.
main:17:31 - TypeError: Cannot convert "undefined" to double
Este es un error que a menudo cometen los principiantes: no distinguir la mayúscula del nombre de un atributo estructural.
var id = exchange.Buy(t.buy, 0.1) // 下买单,此处有错误,会报错,返回null,GetTicker返回数据t,只有Buy属性,没有buy属性。
导致传入exchange.Buy函数的价格是一个undefined变量,引起程序异常,回测结束。
Cuando el programa se detiene en el punto de interrupción, esta línea de código no se ejecuta. Continuamos haciendo clic en el botón "step into next function call".
跳转到exchange.Buy函数调用中。
El precio es una variable indefinida.
El uso de esta forma es fácil de encontrar el programa BUG paso a paso. Los errores que muchos principiantes cometen a menudo: por ejemplo, el acceso al índice de la matriz cruza la frontera, cita variables no definidas, errores de escritura de expresiones, etc. De esta manera, es fácil de DEBUG el programa.
No hay nada.El dormitorio, también puede ser así, 666!