Для стратегий отладки в системах обратного тестирования, как правило, только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, конфигурация показана на скриншоте:
Продолжая смотреть на код стратегии, мы можем видеть, что мы написалиdebugger
Командованиеvar t = exchange.GetTicker()
Это эквивалентно нажатию точки прерывания здесь, и выполнение программы остановится в этом положении.debugger
s можно использовать в коде стратегии, но это не рекомендуется делать, просто используйте точку прерывания в определенном месте, а последующие точки прерывания можно установить в функции отладки DevTools браузера.
Нам нужно открытьDevTools
перед выполнением обратного теста, тоdebugger
В противном случаеdebugger
Необходимо, чтобы эта программа была полностью проигнорирована, и программа стратегии обратного тестирования не может быть прервана или остановлена на перерыве.DevTools
для обратного тестирования стратегии, программа стратегии будет прервана при первой настройкеdebugger
Положение иdebugger
могут быть также установлены в глобальном поле действия кодекса стратегии.
Есть два способа для нас, чтобы открытьDevTools
инструмент браузера Chrome:
Мы нажимаем
Вы также можете использовать клавиши ярлыков для открытияDevTools
нажимаяCommand+Option+I (Mac)
илиControl+Shift+I (Windows, Linux)
.
После открытияDevTools
как показано на рисунке:
После вышеуказанного теста, когда мы нажимаем кнопку debugger
Команда установлена в коде.
Можно увидеть, что на позиции, отмеченной прерванной стратегиейdebugger
, вся программа выполняет только данные рынка, возвращенные функцией с значением n равен 1, а значение t равенGetTicker
Вы можете увидеть конкретные значения переменной в красном поле на рисунке выше, так что легко наблюдать значение каждой переменной, когда стратегия работает.
Мы можем нажать на номер строки слева от кода, чтобы добавить перерыв.
Нажмите на
Есть также некоторые кнопки, которые можно реализовать, например, пропустить следующую функцию, перейти к следующему вызову функции, выйти из текущего вызова функции, выполнить один шаг, проигнорировать все точки прерывания и т. Д.
В этот момент, когда мы продолжаем нажимать на кнопку
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 является неопределенной переменной, которая вызывает исключение программы и заканчивает обратный тест.
Когда программа останавливается в положении точки прерывания, эта строка кода не выполняется. Мы продолжаем нажимать кнопку
Иди на обмен. Купи функцию вызова.
Здесь мы видим, что цена является неопределенной переменной.
Используя вышеприведенный подход, легко выяснить ошибки программы шаг за шагом. Многие новички часто совершают ошибки, например, к индексу массива получается доступ вне границ, ссылаются на неопределенные переменные, выражения пишутся неправильно и т. Д., Все они легко дебютировать программу.