В процессе загрузки ресурсов... загрузка...

Рекомендации JavaScript в браузере Chrome

Автор:Изобретатели количественного измерения - мечты, Создано: 2022-06-22 14:23:26, Обновлено: 2023-09-18 20:24:01

img

Рекомендации JavaScript в браузере Chrome

Обычно для демаркации стратегии в системе обратной проверки используется толькоLog()Функция. Такая DEBUG очень низкоэффективна и имеет определенные трудности для новичков с небольшим опытом тестирования программ.JavaScriptВ этом случае мы должны быть готовы к тому, что мы будем делать.ChromeУ нас есть лучшая поддержка браузеров. Мы можем использовать перерывный дежурство при повторении, одноступенчатый дежурство, мониторинг значения переменных, мониторинг выражений и так далее. Давайте вместе узнаем, как использовать этот метод для FMZ.JavascriptПолитика языка DEBUG при повторном просмотре.JavascriptЯзык стратегии поддерживает этот метод декомпиляции.

На платформе FMZdebuggerИнструкция

Вставка в стратегический код языка JavaScript на FMZdebuggerИнструкция, позволяющая прерывать выполнение программы при повторном просмотре.

Мы использовали следующий тест-стратегический код:

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

Код конфигурации с повторной проверки

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

Как вы можете видеть, добавленная нами в рецензировании биржа - Binance (бинанс) на месте, конфигурированная как на скриншоте:

img

Продолжайте смотреть на стратегический код, и мы увидим, чтоvar t = exchange.GetTicker()И мы написали:debuggerВ принципе, это означает, что если вы нажмете на разрывную точку, то программа остановится до этого момента.debuggerЭто не рекомендуется делать, и можно установить последующие прерывания в браузере в DevTools.

Для этого нужно открыть браузер ChromeDevToolsВыполните повторный анализ, установленный в коде стратегии.debuggerЕсли это не так, то это не работает.debuggerПроцедура не может быть прервана.DevToolsПосле повторного просмотра политики, программа политики будет прервана на первой настройкеdebuggerМестонахождение:debuggerТакже можно настроить стратегию в глобальном диапазоне кода.

Мы открываем Chrome.DevToolsУ нас есть два способа использования инструмента:

  • Первое, мы нажимаем правой кнопкой мышцы, чтобы открыть всплывающее меню.

    img

    Мы нажимаем "Проверить" и получаем интерфейс DevTools.

  • 2. Используйте клавишу кратковременного действия.

    Также можно открыть его, нажав на клавишу быстрого отбора.Command+Option+I (Mac)илиControl+Shift+I(Windows、Linux)Открой.DevTools

Открой.DevToolsПосле этого следующее:

img

Интерфейс DEBUG в браузере для политики языка JavaScript

В следующем тесте, когда мы нажимаем на кнопку "Начать повторение", политика повторения происходит из-за того, что она установлена в кодеdebuggerИнструкция, политика в соответствующем месте перерыв ждать. Перезагрузка как бы застряла мертвой, как показано ниже:

img

Как видите, в стратегииdebuggerОзнакомьтесь с местоположением прерывания, вся программа выполняет только n назначения на 1, t назначения наGetTickerФункция возвращает данные о движении. В красном окне приведенной выше схемы можно увидеть значения конкретных переменных, чтобы было удобно наблюдать за значениями различных переменных при выполнении стратегии.

Ручная установка декомпиляции точки прерывания

Мы можем нажать на строку слева от кода и добавить прерывание.

img

Нажмите "resume script execution" для того, чтобы возобновить выполнение сценария, и программа будет выполнена до следующего прерывания, а если нет прерывания или программа имеет ошибку, которая вызывает исключения, повторное тестирование будет завершено.

img

Также есть несколько кнопок, которые можно реализовать: перейти к следующей функции, перейти к следующему вызову функции, перейти от текущего вызова функции, одноступенчатое выполнение, игнорировать все перерывы и т.д.

img

Дайте этому тестовому коду DEBUG

img

В это время, когда мы продолжаем нажимать кнопку "Resume script execution" для продолжения выполнения, происходит исключение, завершается повторное тестирование и печатается исключительное сообщение об ошибке.

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

Это ошибка, которую часто делают новички, когда они пишут названия структурных свойств без различия в размерах.

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

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

Когда программа останавливается в месте прерывания, эта строка кода не выполняется. Мы продолжаем нажимать кнопку "step into next function call".

img

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

img

Посмотрите, цена является неопределенной переменной.

С помощью вышеперечисленного способа легко найти программу BUG шаг за шагом. Ошибки, которые часто совершают многие новички: например, пересечение границы с индексом доступа к матрице, ссылка на неопределенные переменные, ошибка в написании выражения и т. д.


Связанные

Больше

ФмнуроСпальный стеллаж, может быть, это так, 666, хватит.