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

JavaScript стратегия backtesting исправлена в DevTools браузера Chrome

Автор:Изобретатели количественного измерения - мечты, Создано: 2022-06-24 14:10:02, Обновлено: 2023-09-25 19:50:23

JavaScript strategy backtesting is debugged in DevTools of Chrome browser

JavaScript стратегия backtesting исправлена в DevTools браузера Chrome

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

Вdebuggerкомандование на платформе FMZ

Вставкаdebuggerкоманда в стратегический код языка JavaScript на FMZ позволяет прерывать исполнение программы во время бэкстестинга.

Мы используем следующий код стратегии испытания:

/*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) {
            // When placing a purchase order, if there is an error here, an error will be reported, and null will be returned, and GetTicker will return data t with Buy attribute only, and the attribute name is case-sensitive without buy attribute
            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 spot, конфигурация показана на скриншоте:

JavaScript strategy backtesting is debugged in DevTools of Chrome browser

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

Нам нужно открытьDevToolsперед выполнением обратного теста, тоdebuggerВ противном случаеdebuggerНеобходимо, чтобы эта программа была полностью проигнорирована, и программа стратегии обратного тестирования не может быть прервана или остановлена на перерыве.DevToolsдля обратного тестирования стратегии, программа стратегии будет прервана при первой настройкеdebuggerПоложение иdebuggerмогут быть также установлены в глобальном поле действия кодекса стратегии.

Есть два способа для нас, чтобы открытьDevToolsинструмент браузера Chrome:

  • 1. Мы используем правый клик на странице, чтобы открыть всплывающее меню

Мы нажимаем Check для отображения интерфейса DevTools.

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

Вы также можете использовать клавиши ярлыков для открытияDevToolsнажимаяCommand+Option+I (Mac)илиControl+Shift+I (Windows, Linux).

После открытияDevToolsкак показано на рисунке:

JavaScript strategy backtesting is debugged in DevTools of Chrome browser

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

После вышеуказанного теста, когда мы нажимаем кнопку Start Backtest для обратного тестирования стратегии, стратегия прерывается и ждет на соответствующем положении, потому чтоdebuggerКоманда установлена в коде.

JavaScript strategy backtesting is debugged in DevTools of Chrome browser

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

Установите точки прерывания для отладки вручную

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

JavaScript strategy backtesting is debugged in DevTools of Chrome browser

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

JavaScript strategy backtesting is debugged in DevTools of Chrome browser

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

JavaScript strategy backtesting is debugged in DevTools of Chrome browser

Проверить код DEBUG

JavaScript strategy backtesting is debugged in DevTools of Chrome browser

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

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

Не быть чувствительным к большим и малым буквам для структуры вносить имя является распространенной ошибкой, совершаемой новичками.

var id = exchange.Buy(t.buy, 0.1)  //  When placing a purchase order, if there is an error here, an error will be reported, and null will be returned, and GetTicker will return data t with Buy attribute only, and the attribute name is case-sensitive without buy attribute

Цена передается на биржу. Функция Buy является неопределенной переменной, которая вызывает исключение программы и заканчивает обратный тест.

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

JavaScript strategy backtesting is debugged in DevTools of Chrome browser

Иди на обмен. Купи функцию вызова.

JavaScript strategy backtesting is debugged in DevTools of Chrome browser

Здесь мы видим, что цена является неопределенной переменной.

Используя вышеприведенный подход, легко выяснить ошибки программы шаг за шагом. Многие новички часто совершают ошибки, например, к индексу массива получается доступ вне границ, ссылаются на неопределенные переменные, выражения пишутся неправильно и т. Д., Все они легко дебютировать программу.


Содержание

Больше информации