
В предыдущих статьях мы узнали, что так называемая программная и количественная торговля представляет собой скриптовую программу, которая выполняет некоторые операции на основе данных, полученных с биржи после серии расчетов, суждений и триггеров для управления биржевым счетом для торговли. Все действия по получению данных и управлению счетами выполняются через API-интерфейс биржи. Проще говоря, это взаимодействие между программой-скриптом и биржей. Поскольку это взаимодействие, должно быть нормальное взаимодействие и ненормальное взаимодействие. При возникновении ненормального взаимодействия интерфейс возвращает информацию об исключении.
Конечно, программные и количественные торговые системы, представленные на рынке, или самостоятельно разработанные программы, будут иметь различные подсказки и сообщения об ошибках. Эти сообщения об ошибках не ограничиваются сообщениями об ошибках, выдаваемыми интерфейсом API биржи. Существуют также такие вещи, как: ошибки исключений во время выполнения программы, ошибки конфигурации, ошибки синтаксиса программы и т. д.
На платформе количественной торговли Inventor сообщения об ошибках можно условно разделить на несколько категорий:

В коде отсутствуют такие символы, как скобки. Этот тип ошибки обычно виден на странице редактирования политики, и политика не может быть запущена (сообщение об ошибке будет выведено непосредственно во время выполнения, как показано на рисунке ниже).
Поэтому после написания стратегии я обычно смотрю на страницу редактирования стратегии платформы, чтобы увидеть, есть ли там маленький красный XX. Если есть, то должна быть очевидная ошибка.


Подобные ошибки приведут к сбою программы и прекращению ее работы.
На платформе FMZ торговые пары единообразно определяются какX_YВ этом формате X представляет собой наименование торговой валюты, а Y представляет собой наименование деноминированной валюты (деноминированная валюта фьючерсных валютных контрактных торговых пар обычно выражается в долларах США, что было представлено в предыдущих статьях). НапримерBTC_USDT, если я напишу торговую пару случайным образом,BTC-USDT。

Ошибка, обнаруженная в системе бэктестинга платформы FMZ:

Сообщить об ошибке в реальной торговле:

Кроме того, распространенная ошибка, с которой сталкиваются новички:
https://www.fmz.com
Этот тип ошибки возникает из-за изменения пароля учетной записи платформы FMZ, что приводит кAPI KEYНеверно (ключ API пользователя зашифрован в браузере, а затем настроен на платформе FMZ), стратегия не может быть запущена, и выдается сообщение об ошибке.
Ошибки вызова интерфейса часто встречаются при запуске стратегий. В предыдущих статьях мы узнали, что интерфейсы на платформе FMZ делятся наИнтерфейс для генерации сетевых запросов、Интерфейс, не генерирующий сетевые запросы. Ошибки интерфейса не приведут к остановке программы политики. Обычно это происходит из-за исключения вызова интерфейса, которое возвращает неверные данные. Тогда политика не имеет отказоустойчивости, и ошибка исключения программы, вызванная неверными данными, приводит к остановке программы (концепция отказоустойчивости обсуждалась в предыдущих статьях). упоминалось).
Вот некоторые сообщения об ошибках интерфейса, которые генерируют сетевые запросы:
Тайм-аут сети

Одной из ошибок, с которой часто сталкиваются новички, является использование домашних сетевых устройств (собственных компьютеров или домашних серверов). Поскольку большинство бирж заблокировано, многие биржи фактически недоступны из внутренней сети, а интерфейс доступа будет сообщать о тайм-ауте. (упоминалось в предыдущих статьях)
ошибка http 429
https://www.fmz.com
Одно из классических сообщений об ошибке. Причина в том, что интерфейс обмена вызывается слишком часто, превышая частотный лимит обмена. (упоминалось в предыдущих статьях)
Некоторые новые студенты могут сказать: «Я подам заявку на большее количество обменов».API KEYИли я могу просто подать заявку на открытие еще нескольких счетов по обмену. Нам нужно знать, что биржи обычно ограничивают частоту доступа интерфейсов на основе IP-адресов. Проще говоря, пока все запросы, отправленные с IP-адреса, учитываются на этом IP-адресе, если лимит превышен, сервер биржи откажет в доступе на запрос, отправленный с этого IP-адреса.
Отчеты об ошибках на уровне бизнес-интерфейса обмена
Упомянутые выше тайм-аут и ошибка 429 являются ошибками сетевого уровня. Ошибки также будут сообщаться, если на уровне бизнеса интерфейса обмена возникнут проблемы. Например, я хочу получить спотовые котировки, но я установил торговую пару, которая не существует. Я протестировал его в отладочном инструменте платформы FMZ. Отладочный инструмент — очень удобный инструмент тестирования, который очень подходит для тестирования вызовов функций в реальном времени, сбора данных и других нужд.

Нет никакой разницы между результатами выполнения инструмента отладки и фактическим выполнением.

Huobi 错误 GetTicker: Invalid ticker: {"Info":{"err-code":"invalid-parameter","err-msg":"invalid symbol","status":"error","ts":1620872079355},"High":0,"Low":0,"Sell":0,"Buy":0,"Last":0,"Volume":0,"OpenInterest":0,"Time":0}
Сообщение об ошибке здесь означает, что пара транзакций недействительна (как можно увидеть здесь"err-msg":"invalid symbol")。
Например, существует множество таких ошибок, связанных с бизнесом. Например, при установке кредитного плеча некоторые биржи не поддерживают значения кредитного плеча с десятичными частями. В настоящее время, если значение кредитного плеча содержит десятичную часть, это также вызовет Ошибка вызова интерфейса.
Перечислите вызов интерфейса, который не генерирует сетевой запрос.
Установить код фьючерсного контракта Некоторые интерфейсы только устанавливают некоторые глобальные переменные в системе и не генерируют сетевые запросы, например:

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

Однако независимо от типа ошибки отображаемое сообщение об ошибке является ключевой информацией для поиска проблемы, и проблему обычно можно определить по сообщению об ошибке. Вы можете использовать инструменты перевода для перевода сообщений об ошибках и извлечения ключевой информации. Например, в приведенном выше примере"err-msg":"invalid symbol", перевод: “err msg”: “Недопустимый символ”. Вы, вероятно, знаете, что настройки торговых пар неверны, поскольку для обозначения торговых кодов и торговых пар обычно используются английские символы.
Мы кратко обсудим информацию об ошибке. Есть пост, который продолжит собирать общие вопросы для запроса: https://www.fmz.com/bbs-topic/1427
Система бэктестинга также является ключевым моментом в количественном инструменте. Система бэктестинга может удобно тестировать прототипы стратегии и предварительно тестировать потенциальные ошибки и логические проблемы в стратегии. Нам нужно рационально подойти к вопросу системы бэктестинга. Система бэктестинга может в определенной степени отражать некоторые проблемы стратегии.
Ниже мы кратко объясним систему бэктестинга на платформе FMZ с точки зрения различных языков стратегий, поддерживаемых FMZ. (Некоторые сведения о системе бэктестинга были упомянуты в предыдущих статьях)
Тестирование на стороне браузера использует локальные аппаратные ресурсы.
При бэктестинге на основе кастодиана вы можете выбрать, к какому кастодиану вы будете относиться (к вашему собственному кастодиану или к публичному кастодиану платформы FMZ). Учитывая большую нагрузку на публичных кастодианов на платформе FMZ, рекомендуется использовать локального кастодиана для бэктестинга (это также будет быстрее. При бэктестинге с публичным кастодианом, когда задач слишком много, чтобы превысить нагрузку, некоторые бэктесты Задачи будут отменены, что приведет к бэктестингу (прерыванию измерения).
В отличие от языков сценариев, политики C++ необходимо компилировать перед выполнением. Стратегия языка C++ сначала будет скомпилирована на платформе FMZ (сервере) (если возникнут проблемы с кодом, компиляция может завершиться неудачей и появится сообщение об ошибке). После компиляции проведите бэктест на платформе FMZ (сервере).
Базовая реализация — JavaScript, а бэктестирование также выполняется на стороне браузера.
Базовая реализация — JavaScript, а бэктестирование также выполняется на стороне браузера.
Система бэктестинга количественной торговой платформы Inventor имеет два режима бэктестинга (в этом режиме не различаются языки стратегий, в этом режиме настраиваются параметры бэктестинга, а бэктестинг стратегий на разных языках одинаков).

Инструкции по системе бэктестинга см. в руководстве по платформе:
https://www.fmz.com/bbs-topic/4158#%E7%AD%96%E7%95%A5%E5%9B%9E%E6%B5%8B
K线中一根柱子不是有高开低收么,构成了一个价格框架,在这个K线代表的时间范围内,价格都在这个价格框架内,所以只要生成的价格在这个K线高开低收框架范围内,这个模拟出来的价格就是合理的。
Точно так же, как и моделирование на рисунке: https://www.fmz.com Конечно, когда реальная система бэктестинга реализует эту симуляцию, ситуация немного сложнее, чем показано на рисунке. Мы не будем вникать в это здесь. Достаточно понять механизм бэктестинга на уровне симуляции. Зная этот принцип, нам нужно обратить внимание на недостатки бэктестинга на уровне симуляции, хотя бэктестинг на уровне симуляции выполняется очень быстро (потому что цены, генерируемые симуляцией, не являются реальными ценами, публикуемыми по одной секунде за секундой). Но если стратегия подходитСмоделированная тенденция изменения тикаЭто позволит стратегии работать очень хорошо (но в реальных ситуациях цена может двигаться не таким образом, хотя цена и находится в пределах этого столбца K-line). Линия K, используемая для генерации моделируемых тиковых данных, называется базовой линией K, а период этой линии K называетсяНижний цикл K-линии, установите его, как показано на странице настроек политики:
Установка здесь значения 1 минута означает, что в качестве источника данных для генерации моделируемых тиков используются данные K-линии с периодом 1 минута.
Другой момент заключается в том, что для высокочастотных стратегий явно нецелесообразно использовать бэктестинг на уровне моделирования. Однако для трендовых стратегий использование бэктестинга на уровне моделирования все еще может в определенной степени отражать эффективность стратегии.

Откуда берутся данные для системы бэктестинга Inventor Quantitative Trading Platform? Система бэктестинга по умолчанию использует данные из центра обработки данных платформы FMZ. Центр обработки данных платформы FMZ автоматически собирает рыночные данные каждой валюты с каждой биржи и предоставляет их системе бэктестинга на платформе.

В документации FMZ API также имеются некоторые инструкции о пользовательских источниках данных: https://www.fmz.com/api#%E8%87%AA%E5%AE%9A%E4%B9%89%E6%95%B0%E6%8D%AE%E6%BA%90
Также в библиотеке FMZ есть несколько решений:

Новички, которым интересно, могут изучить его и обратиться к нему.
Программная и количественная торговля неразделимыизучать、тест、думать。 Нельзя думать о проблемах в вакууме, это было бы неэффективно. Самый эффективный способ решения и размышления о проблемах — этоНайти информацию,ЗатемПопробуйте сами.、Анализ мышленияЕсли проблема не решена, повторите описанные выше действия.
Но обычно, когда новичок сталкивается с проблемой, он чувствует:
«Ох, программирование, количественная оценка и написание стратегии — это слишком сложно». «Я смотрю на это уже давно, но все еще в замешательстве!» «Я еще не начал и хочу сдаться!» ….
На самом деле, очень просто начать работу на платформе FMZ. Прежде всего, вам нужно хорошо уметь находить информацию. Большой объем информации для справки доступен на Стратегической площади, в Сообществе и Библиотеке количественной торговой платформы Inventor.

Затем есть практическая способность. Использование системы бэктестинга и инструментов отладки может облегчить тестирование. Это не означает тестирование полной стратегии. На самом деле, если у вас нет абсолютно никаких базовых знаний, вы даже можете изучить основы программирования на JavaScript с помощью системы количественного бэктестинга FMZ.
Это обучающий сайт, на котором я часто изучаю JS: https://www.runoob.com/js/js-loop-for.html Он не ограничивается JS, здесь можно искать и изучать все виды знаний в области ИТ. Например, я не знаю, как использовать регулярные выражения JS, что мне делать? Конечно, сначала проверьте информацию, а потом попробуйте~
Я видел такой пример:
Я хочу протестировать его и даже могу использовать систему бэктестинга платформы FMZ для тестирования и обучения.
Настройте обмен случайным образом на системе бэктестинга

Проверьте следующий код:
function IsEmail(str) {
var reg=/^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/;
return reg.test(str);
}
function main() {
var strEmailAddress1 = "13512345678"
Log(strEmailAddress1, " 是邮件地址么 ? ", " 回答:", IsEmail(strEmailAddress1))
var strEmailAddress2 = "[email protected]"
Log(strEmailAddress2, " 是邮件地址么 ? ", " 回答:", IsEmail(strEmailAddress2))
}

Посмотрите~ какой замечательный инструмент обучения! Например, я хочу научиться писать логику цикла в JavaScript, так что давайте попробуем:
Перебрать элементы переменной массива в том порядке, в котором они появляются в массиве:
function main() {
var arr = [{coinName: "BTC", price: 10000}, {coinName: "LTC", price: 100}, {coinName: "ETH", price: 2000}, {coinName: "ETC", price: 500}]
for (var i = 0 ; i < arr.length ; i++) {
Log(arr[i])
}
}

Чувствуете ли вы мгновенную мотивацию к учебе? Фактически, на FMZ вы можете посмотреть обучающий курс по JavaScript, изучая основы JavaScript в системе бэктестинга. Синтаксис JavaScript почти освоен. Для перехода на следующий этап необходимо использовать интерфейс обмена для получения данных для тестирования. Также можно использовать платформу FMZИнструменты отладкиПроведите реальное тестирование интерфейса.
Затем вам нужно больше думать, делать выводы из одного примера, тестировать и проверять, сравнивать и анализировать и т. д. Таким образом, вы сможете приступить к работе очень быстро.