Обычно для демаркации стратегии в системе обратной проверки используется толькоLog()
Функция. Такая DEBUG очень низкоэффективна и имеет определенные трудности для новичков с небольшим опытом тестирования программ.JavaScript
В этом случае мы должны быть готовы к тому, что мы будем делать.Chrome
У нас есть лучшая поддержка браузеров. Мы можем использовать перерывный дежурство при повторении, одноступенчатый дежурство, мониторинг значения переменных, мониторинг выражений и так далее. Давайте вместе узнаем, как использовать этот метод для FMZ.Javascript
Политика языка DEBUG при повторном просмотре.Javascript
Язык стратегии поддерживает этот метод декомпиляции.
debugger
ИнструкцияВставка в стратегический код языка 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 (бинанс) на месте, конфигурированная как на скриншоте:
Продолжайте смотреть на стратегический код, и мы увидим, чтоvar t = exchange.GetTicker()
И мы написали:debugger
В принципе, это означает, что если вы нажмете на разрывную точку, то программа остановится до этого момента.debugger
Это не рекомендуется делать, и можно установить последующие прерывания в браузере в DevTools.
Для этого нужно открыть браузер ChromeDevTools
Выполните повторный анализ, установленный в коде стратегии.debugger
Если это не так, то это не работает.debugger
Процедура не может быть прервана.DevTools
После повторного просмотра политики, программа политики будет прервана на первой настройкеdebugger
Местонахождение:debugger
Также можно настроить стратегию в глобальном диапазоне кода.
Мы открываем Chrome.DevTools
У нас есть два способа использования инструмента:
Первое, мы нажимаем правой кнопкой мышцы, чтобы открыть всплывающее меню.
Мы нажимаем "Проверить" и получаем интерфейс DevTools.
2. Используйте клавишу кратковременного действия.
Также можно открыть его, нажав на клавишу быстрого отбора.Command+Option+I (Mac)
илиControl+Shift+I(Windows、Linux)
Открой.DevTools
。
Открой.DevTools
После этого следующее:
В следующем тесте, когда мы нажимаем на кнопку "Начать повторение", политика повторения происходит из-за того, что она установлена в кодеdebugger
Инструкция, политика в соответствующем месте перерыв ждать. Перезагрузка как бы застряла мертвой, как показано ниже:
Как видите, в стратегииdebugger
Ознакомьтесь с местоположением прерывания, вся программа выполняет только n назначения на 1, t назначения наGetTicker
Функция возвращает данные о движении. В красном окне приведенной выше схемы можно увидеть значения конкретных переменных, чтобы было удобно наблюдать за значениями различных переменных при выполнении стратегии.
Мы можем нажать на строку слева от кода и добавить прерывание.
Нажмите "resume script execution" для того, чтобы возобновить выполнение сценария, и программа будет выполнена до следующего прерывания, а если нет прерывания или программа имеет ошибку, которая вызывает исключения, повторное тестирование будет завершено.
Также есть несколько кнопок, которые можно реализовать: перейти к следующей функции, перейти к следующему вызову функции, перейти от текущего вызова функции, одноступенчатое выполнение, игнорировать все перерывы и т.д.
В это время, когда мы продолжаем нажимать кнопку "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".
跳转到exchange.Buy函数调用中。
Посмотрите, цена является неопределенной переменной.
С помощью вышеперечисленного способа легко найти программу BUG шаг за шагом. Ошибки, которые часто совершают многие новички: например, пересечение границы с индексом доступа к матрице, ссылка на неопределенные переменные, ошибка в написании выражения и т. д.
ФмнуроСпальный стеллаж, может быть, это так, 666, хватит.