Большинство стратегий требуют обратных тестов для проверки, прежде чем они будут выполнены в ботах. FMZ поддерживает спот, фьючерсы и вечные контракты некоторых криптовалют, а также все сорта товарных фьючерсов. Однако механизм обратного теста платформы FMZ Quant отличается от обычного обратного теста на панели, что вызвало путаницу у многих новичков.
По данным, показанным на рисунке выше, время от времени начала бэкстеста до времени окончания может рассматриваться как временная ось. Во время бэкстеста временная точка бэкстеста перемещается слева направо по оси для начала бэкстеста. В один момент времени можно получить только данные истории до этой точки времени. На основе данных истории стратегия совершает покупки и продажи, и, наконец, формирует прибыль и убытки. Очевидно, распределение временных точек бэкстеста дискретно, а плотность распределения представляет собой точность бэкстеста. Конечно, учитывая, что чем плотнее временные точки обратного теста, тем дольше требуется время, фактическая система обратного теста должна сделать выбор между точностью и эффективностью.
Механизм onbar backtest основан на K-линиях, то есть каждая K-линия генерирует точку времени backtest. В то время вы можете получить информацию, такую как текущая K-линия высочайшая, низкая, открытая и закрытая цены, объем торговли и т. д., а также историю K-линии информации до этого момента времени.
Недостатки этого механизма очевидны: на K-линии может быть генерирована только одна сделка, и цена обычно основана на цене закрытия K-линии. K-линия может получить только четыре цены, а именно открытые, закрытые, самые высокие и самые низкие цены, но не может получить информацию, такую как изменения цены на одной K-линии, и происходит ли самая низкая цена первой или самая высокая цена первой. Возьмем 1-часовую K-линию в качестве примера. Информацию о рынке необходимо получать каждые несколько секунд в боте, и торговый ордер также будет выдаваться в боте вместо того, чтобы ждать окончания K-линии. Преимущество механизма обратного теста на панели заключается в том, что его легко понять, а скорость обратного теста чрезвычайно быстра.
На рисунке выше показано интерфейс настроек FMZ для бэкстеста. Режим бэкстеста делится на два типа, а именно уровень моделирования и уровень реального рынка, которые будут представлены отдельно ниже:
Что такое клещ?
В отличие от данных K-линии, тик - это цена в определенный момент времени. Согласно данным K-линии, мы на самом деле знаем только, когда произошла цена открытия и цена закрытия. Неясно, когда цена достигает самого высокого значения в период K-линии. На самом деле, данные K-линии также генерируются на основе тика. Согласно данным K-линии, также возможно моделировать изменения конкретного тика в период K-линии. Хотя это не реальный тик, это может сделать наш бэкстест более точным. И период K-линии, основанный на моделировании, может быть намного короче периода, используемого для бэкстеста, поэтому точность выше.
Степень симуляции
Для обратного теста на уровне симуляции необходимо выбрать период K-линии и период K-линии подслоя, используемый для обратного теста. Например, если стратегия использует обратный тест на часовую линию, а K-линия подслоя установлена на 5 минут, то интервал временных точек обратного теста будет основываться на тике, имитированном 5-минутной K-линией, что отражается в непрерывных изменениях цены закрытия K-линии за последний 1 час. Механизм генерации тиков в K-линиях в соответствии с K-линиями похож на MT4. В этом посте есть подробные инструкции:https://www.fmz.com/bbs-topic/662
Мы используем простую стратегию для демонстрации этого механизма; код стратегии:
function main() {
while(true){
var records = exchange.GetRecords() //GetRecords can fill the parameters, and obtain K-lines of different periods
var ticker = exchange.GetTicker()
Log('K-line close price: ', records[records.length-1].Close, 'ticker Buy1 Sell1 prices: ', ticker.Buy, ticker.Sell)
//js backtest does not use Sleep, and it will skip to the next tick; Python needs 1 hour of sleep time
}
}
Результат обратного теста:
Только открытые и закрытые тики каждой K-линии фиксируются, а имитируемые 12 тиков добавляются посередине, так что одна K-линия образует 14 временных точек обратного теста. Если вы проведете обратный тест в течение одного дня с периодом K-линии подслоя 5 минут, будет генерировано в общей сложности 24×12×14 = 4032 временные точки, в то время как традиционный onBar backtest имеет только 24, поэтому точность значительно улучшается. Операции открытых и закрытых позиций также могут быть завершены в течение одного периода K-линии. Хотя промежуточные генерируемые тики имитируются, это не сильно влияет. В обратном тесте, до тех пор, пока цена ордера больше, чем цена продажи, и цена ордера продажи меньше, чем цена покупки, обратный тест будет соответствовать. Этот метод обратного теста учитывает скорость и точность и рекомендуется для всех.
Реальный рыночный уровень
Реальный рыночный уровень бэкстеста использует реальный тик, и самый короткий интервал между каждой точкой времени составляет всего 1 с. Этот вид бэкстеста точен до изменения в секунду, но из-за большого количества данных скорость бэкстеста медленная, и время бэкстеста не может быть слишком длинным.
Даже реальный рыночный уровень бэкстеста и реальная торговля ботами по-прежнему имеют очевидные недостатки данных, такие как невозможность получения торговых историй, невозможность получения фактических изменений глубины, реальных задержек сети и т. Д. Тем не менее, нынешняя система бэкстеста FMZ относительно полная, и есть много небольших функций, таких как моделирование ошибок сети, которые могут быть использованы для проверки терпимости к ошибкам стратегий, моделирования задержек сети и изображения рыночных икон.
Почему только некоторые торговые пары и платформы поддерживаются для обратного тестирования?
В настоящее время имеются данные только о нескольких распространенных торговых парах. Фактически, связь между стратегией и разнообразием не очень тесна, поэтому достаточно проверить стратегию.
Может ли он имитировать BitMEX, чтобы взимать ставку финансирования?
Конечно, вы можете выбрать BitMEX backtest для открытия журнала.
Где проводится обратный тест?
Обратная проверка стратегий JavaScript выполняется в браузере, в то время как Python может выбрать сервер FMZ или свой собственный докер для выполнения обратной проверки.
Можно загрузить журналы обратных тестов?
Конечно, можно, в правом углу есть кнопка загрузки.
Можно ли проводить обратный тест локально?
FMZ открывает исходный код Python.https://www.fmz.com/bbs-topic/1687