4
Подписаться
1271
Подписчики

Новички в количественной торговле в криптовалютных кругах, пожалуйста, ознакомьтесь с этим - Приближаемся к количественной торговле в криптовалютных кругах (часть 3)

Создано: 2021-05-06 11:20:04, Обновлено: 2024-12-04 21:27:24
comments   1
hits   3182

Новички в количественной торговле в криптовалютных кругах, пожалуйста, ознакомьтесь с этим - Приближаемся к количественной торговле в криптовалютных кругах (часть 3)

Новички в количественной торговле в криптовалютных кругах, пожалуйста, ознакомьтесь с этим - Приближаемся к количественной торговле в криптовалютных кругах (часть 3)

Сообщение об ошибке

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

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

На платформе количественной торговли Inventor сообщения об ошибках можно условно разделить на несколько категорий:

  • Ошибка синтаксиса политики Этот тип ошибок является наиболее распространенным, обычно из-за того, что новички не знакомы с программированием, а в коде, написанном на этапе обучения и тестирования, присутствуют синтаксические ошибки. Например:

Новички в количественной торговле в криптовалютных кругах, пожалуйста, ознакомьтесь с этим - Приближаемся к количественной торговле в криптовалютных кругах (часть 3)

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

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

  • Исключение во время выполнения программы, вызванное политикой программы BUG В программе есть ОШИБКА. Когда программа запущена, запуск исключения приведет к аварийной остановке программы и отображению этого типа сообщения об ошибке.

Новички в количественной торговле в криптовалютных кругах, пожалуйста, ознакомьтесь с этим - Приближаемся к количественной торговле в криптовалютных кругах (часть 3)

Новички в количественной торговле в криптовалютных кругах, пожалуйста, ознакомьтесь с этим - Приближаемся к количественной торговле в криптовалютных кругах (часть 3)

Подобные ошибки приведут к сбою программы и прекращению ее работы.

  • Ошибки, вызванные неправильной конфигурацией и настройками

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

Новички в количественной торговле в криптовалютных кругах, пожалуйста, ознакомьтесь с этим - Приближаемся к количественной торговле в криптовалютных кругах (часть 3)

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

Новички в количественной торговле в криптовалютных кругах, пожалуйста, ознакомьтесь с этим - Приближаемся к количественной торговле в криптовалютных кругах (часть 3)

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

Новички в количественной торговле в криптовалютных кругах, пожалуйста, ознакомьтесь с этим - Приближаемся к количественной торговле в криптовалютных кругах (часть 3)

Кроме того, распространенная ошибка, с которой сталкиваются новички:

https://www.fmz.com![Новички в количественной торговле в криптовалютных кругах, пожалуйста, ознакомьтесь с этим - Приближаемся к количественной торговле в криптовалютных кругах (часть 3)](/upload/asset//345be4d2aa663dd2c02cf5b97f95ce03fc0a7378.png)

Этот тип ошибки возникает из-за изменения пароля учетной записи платформы FMZ, что приводит кAPI KEYНеверно (ключ API пользователя зашифрован в браузере, а затем настроен на платформе FMZ), стратегия не может быть запущена, и выдается сообщение об ошибке.

  • Ошибка вызова интерфейса

Ошибки вызова интерфейса часто встречаются при запуске стратегий. В предыдущих статьях мы узнали, что интерфейсы на платформе FMZ делятся наИнтерфейс для генерации сетевых запросовИнтерфейс, не генерирующий сетевые запросы. Ошибки интерфейса не приведут к остановке программы политики. Обычно это происходит из-за исключения вызова интерфейса, которое возвращает неверные данные. Тогда политика не имеет отказоустойчивости, и ошибка исключения программы, вызванная неверными данными, приводит к остановке программы (концепция отказоустойчивости обсуждалась в предыдущих статьях). упоминалось).

Вот некоторые сообщения об ошибках интерфейса, которые генерируют сетевые запросы:

  • Тайм-аут сети

    Новички в количественной торговле в криптовалютных кругах, пожалуйста, ознакомьтесь с этим - Приближаемся к количественной торговле в криптовалютных кругах (часть 3)

    Одной из ошибок, с которой часто сталкиваются новички, является использование домашних сетевых устройств (собственных компьютеров или домашних серверов). Поскольку большинство бирж заблокировано, многие биржи фактически недоступны из внутренней сети, а интерфейс доступа будет сообщать о тайм-ауте. (упоминалось в предыдущих статьях)

  • ошибка http 429

    https://www.fmz.com![Новички в количественной торговле в криптовалютных кругах, пожалуйста, ознакомьтесь с этим - Приближаемся к количественной торговле в криптовалютных кругах (часть 3)](/upload/asset//65057d99e2acdf9e237130ae7dc8082d333dc36b.png)

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

  • Отчеты об ошибках на уровне бизнес-интерфейса обмена

    Упомянутые выше тайм-аут и ошибка 429 являются ошибками сетевого уровня. Ошибки также будут сообщаться, если на уровне бизнеса интерфейса обмена возникнут проблемы. Например, я хочу получить спотовые котировки, но я установил торговую пару, которая не существует. Я протестировал его в отладочном инструменте платформы FMZ. Отладочный инструмент — очень удобный инструмент тестирования, который очень подходит для тестирования вызовов функций в реальном времени, сбора данных и других нужд.

    Новички в количественной торговле в криптовалютных кругах, пожалуйста, ознакомьтесь с этим - Приближаемся к количественной торговле в криптовалютных кругах (часть 3)

    Нет никакой разницы между результатами выполнения инструмента отладки и фактическим выполнением. Новички в количественной торговле в криптовалютных кругах, пожалуйста, ознакомьтесь с этим - Приближаемся к количественной торговле в криптовалютных кругах (часть 3)

    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")。 Например, существует множество таких ошибок, связанных с бизнесом. Например, при установке кредитного плеча некоторые биржи не поддерживают значения кредитного плеча с десятичными частями. В настоящее время, если значение кредитного плеча содержит десятичную часть, это также вызовет Ошибка вызова интерфейса.

Перечислите вызов интерфейса, который не генерирует сетевой запрос.

  • Установить код фьючерсного контракта Некоторые интерфейсы только устанавливают некоторые глобальные переменные в системе и не генерируют сетевые запросы, например:

    Новички в количественной торговле в криптовалютных кругах, пожалуйста, ознакомьтесь с этим - Приближаемся к количественной торговле в криптовалютных кругах (часть 3)

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

    Новички в количественной торговле в криптовалютных кругах, пожалуйста, ознакомьтесь с этим - Приближаемся к количественной торговле в криптовалютных кругах (часть 3)

Однако независимо от типа ошибки отображаемое сообщение об ошибке является ключевой информацией для поиска проблемы, и проблему обычно можно определить по сообщению об ошибке. Вы можете использовать инструменты перевода для перевода сообщений об ошибках и извлечения ключевой информации. Например, в приведенном выше примере"err-msg":"invalid symbol", перевод: “err msg”: “Недопустимый символ”. Вы, вероятно, знаете, что настройки торговых пар неверны, поскольку для обозначения торговых кодов и торговых пар обычно используются английские символы. Мы кратко обсудим информацию об ошибке. Есть пост, который продолжит собирать общие вопросы для запроса: https://www.fmz.com/bbs-topic/1427

Система бэктестинга

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

Ниже мы кратко объясним систему бэктестинга на платформе FMZ с точки зрения различных языков стратегий, поддерживаемых FMZ. (Некоторые сведения о системе бэктестинга были упомянуты в предыдущих статьях)

  • JavaScript

Тестирование на стороне браузера использует локальные аппаратные ресурсы.

  • Python

При бэктестинге на основе кастодиана вы можете выбрать, к какому кастодиану вы будете относиться (к вашему собственному кастодиану или к публичному кастодиану платформы FMZ). Учитывая большую нагрузку на публичных кастодианов на платформе FMZ, рекомендуется использовать локального кастодиана для бэктестинга (это также будет быстрее. При бэктестинге с публичным кастодианом, когда задач слишком много, чтобы превысить нагрузку, некоторые бэктесты Задачи будут отменены, что приведет к бэктестингу (прерыванию измерения).

  • C++

В отличие от языков сценариев, политики C++ необходимо компилировать перед выполнением. Стратегия языка C++ сначала будет скомпилирована на платформе FMZ (сервере) (если возникнут проблемы с кодом, компиляция может завершиться неудачей и появится сообщение об ошибке). После компиляции проведите бэктест на платформе FMZ (сервере).

  • Язык май

Базовая реализация — JavaScript, а бэктестирование также выполняется на стороне браузера.

  • Визуализация

Базовая реализация — JavaScript, а бэктестирование также выполняется на стороне браузера.

Система бэктестинга количественной торговой платформы Inventor имеет два режима бэктестинга (в этом режиме не различаются языки стратегий, в этом режиме настраиваются параметры бэктестинга, а бэктестинг стратегий на разных языках одинаков).

Новички в количественной торговле в криптовалютных кругах, пожалуйста, ознакомьтесь с этим - Приближаемся к количественной торговле в криптовалютных кругах (часть 3)

Инструкции по системе бэктестинга см. в руководстве по платформе:

https://www.fmz.com/bbs-topic/4158#%E7%AD%96%E7%95%A5%E5%9B%9E%E6%B5%8B

  • 1. Тестирование на уровне моделирования Проще говоря, бэктестинг на уровне моделирования заключается в моделировании и генерации данных о ценах для каждого временного узла на основе данных K-линии.
  K线中一根柱子不是有高开低收么,构成了一个价格框架,在这个K线代表的时间范围内,价格都在这个价格框架内,所以只要生成的价格在这个K线高开低收框架范围内,这个模拟出来的价格就是合理的。

Точно так же, как и моделирование на рисунке: https://www.fmz.com![Новички в количественной торговле в криптовалютных кругах, пожалуйста, ознакомьтесь с этим - Приближаемся к количественной торговле в криптовалютных кругах (часть 3)](/upload/asset//35c54e14e29601352720d51f75e2d7674415f92e.png) Конечно, когда реальная система бэктестинга реализует эту симуляцию, ситуация немного сложнее, чем показано на рисунке. Мы не будем вникать в это здесь. Достаточно понять механизм бэктестинга на уровне симуляции. Зная этот принцип, нам нужно обратить внимание на недостатки бэктестинга на уровне симуляции, хотя бэктестинг на уровне симуляции выполняется очень быстро (потому что цены, генерируемые симуляцией, не являются реальными ценами, публикуемыми по одной секунде за секундой). Но если стратегия подходитСмоделированная тенденция изменения тикаЭто позволит стратегии работать очень хорошо (но в реальных ситуациях цена может двигаться не таким образом, хотя цена и находится в пределах этого столбца K-line). Линия K, используемая для генерации моделируемых тиковых данных, называется базовой линией K, а период этой линии K называетсяНижний цикл K-линии, установите его, как показано на странице настроек политики:

Новички в количественной торговле в криптовалютных кругах, пожалуйста, ознакомьтесь с этим - Приближаемся к количественной торговле в криптовалютных кругах (часть 3) Установка здесь значения 1 минута означает, что в качестве источника данных для генерации моделируемых тиков используются данные K-линии с периодом 1 минута.

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

  • 2. Тестирование в реальном времени Поговорив о бэктестировании на уровне моделирования, давайте поговорим о бэктестировании на уровне реального времени. Проще говоря, бэктестинг в реальном времени означает публикацию реальных посекундных данных о ценах во время бэктестинга. Позвольте стратегии отслеживать цену каждую секунду на рынке. В этом режиме бэктестинга можно протестировать некоторые стратегии с высокой частотой торговли и получить определенную степень справочного значения. Недостатком является то, что объем данных бэктестинга в реальном времени слишком велик для проведения бэктестинга в течение большего периода времени (обычно менее 1 дня). Вы можете закрытьДанные по тикам, уменьшите уровень глубины данных (данные о транзакциях, данные о глубине рынка также имеют посекундные снимки в реальном времени бэктеста, поэтому объем данных бэктеста в реальном времени огромен), чтобы соответствующим образом увеличить диапазон бэктеста, как показано на рисунке:

Новички в количественной торговле в криптовалютных кругах, пожалуйста, ознакомьтесь с этим - Приближаемся к количественной торговле в криптовалютных кругах (часть 3)

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

    1. Использовать данные центра обработки данных FMZ по умолчанию Упоминается в предыдущих статьях: https://www.fmz.com/bbs-topic/6857#%E9%87%8F%E5%8C%96%E4%BA%A4%E6%98%93% E5%B9% Б3%Е5%8Ф%Б0 Данные бэктестинга, предоставляемые платформой, поддерживают только ограниченное количество торговых пар (данные бэктестинга для всего рынка и всех валют представляют собой астрономическое число, и собрать их все нереально. Платформа собирает рыночные данные с основных бирж и основных валют). .
    1. Используйте пользовательские данные источника данных Вы можете использовать опции на странице бэктестинга, чтобы задать пользовательский источник данных. Проще говоря, если у вас есть данные с определенной биржи, вы можете предоставить их системе бэктестинга платформы FMZ для бэктестинга в соответствии с требованиями формата FMZ платформа.

Новички в количественной торговле в криптовалютных кругах, пожалуйста, ознакомьтесь с этим - Приближаемся к количественной торговле в криптовалютных кругах (часть 3)

В документации 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 есть несколько решений: Новички в количественной торговле в криптовалютных кругах, пожалуйста, ознакомьтесь с этим - Приближаемся к количественной торговле в криптовалютных кругах (часть 3)

Новички, которым интересно, могут изучить его и обратиться к нему.

Учитесь, тестируйте, думайте

Программная и количественная торговля неразделимыизучатьтестдумать。 Нельзя думать о проблемах в вакууме, это было бы неэффективно. Самый эффективный способ решения и размышления о проблемах — этоНайти информацию,ЗатемПопробуйте сами.Анализ мышленияЕсли проблема не решена, повторите описанные выше действия.

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

«Ох, программирование, количественная оценка и написание стратегии — это слишком сложно». «Я смотрю на это уже давно, но все еще в замешательстве!» «Я еще не начал и хочу сдаться!» ….

На самом деле, очень просто начать работу на платформе FMZ. Прежде всего, вам нужно хорошо уметь находить информацию. Большой объем информации для справки доступен на Стратегической площади, в Сообществе и Библиотеке количественной торговой платформы Inventor.

Новички в количественной торговле в криптовалютных кругах, пожалуйста, ознакомьтесь с этим - Приближаемся к количественной торговле в криптовалютных кругах (часть 3)

Затем есть практическая способность. Использование системы бэктестинга и инструментов отладки может облегчить тестирование. Это не означает тестирование полной стратегии. На самом деле, если у вас нет абсолютно никаких базовых знаний, вы даже можете изучить основы программирования на JavaScript с помощью системы количественного бэктестинга FMZ.

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

Я видел такой пример: Новички в количественной торговле в криптовалютных кругах, пожалуйста, ознакомьтесь с этим - Приближаемся к количественной торговле в криптовалютных кругах (часть 3) Я хочу протестировать его и даже могу использовать систему бэктестинга платформы FMZ для тестирования и обучения.

Настройте обмен случайным образом на системе бэктестинга Новички в количественной торговле в криптовалютных кругах, пожалуйста, ознакомьтесь с этим - Приближаемся к количественной торговле в криптовалютных кругах (часть 3)

Проверьте следующий код:

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))
}

Новички в количественной торговле в криптовалютных кругах, пожалуйста, ознакомьтесь с этим - Приближаемся к количественной торговле в криптовалютных кругах (часть 3)

Посмотрите~ какой замечательный инструмент обучения! Например, я хочу научиться писать логику цикла в 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])
    }
}

Новички в количественной торговле в криптовалютных кругах, пожалуйста, ознакомьтесь с этим - Приближаемся к количественной торговле в криптовалютных кругах (часть 3)

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

Затем вам нужно больше думать, делать выводы из одного примера, тестировать и проверять, сравнивать и анализировать и т. д. Таким образом, вы сможете приступить к работе очень быстро.