Новичок, проверьте это Возьмём вас на криптовалютный количественный трейдинг (3)

Автор:Нинабадасс., Создано: 2022-04-20 11:46:56, Обновлено: 2022-04-20 16:53:34

Новичок, проверьте это Возьмём вас на криптовалютный количественный трейдинг (3)

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

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

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

На платформе FMZ Quant Trading сообщения об ошибках могут быть примерно разделены на несколько категорий:

  • Ошибка синтаксиса стратегии Этот вид ошибки является наиболее распространенной ошибкой, которая обычно вызвана ситуацией, когда новички не знакомы с программированием, и их код, написанный во время изучения, имеет синтаксические ошибки.

    img

    Код был написан без символов, таких как скобки. Для такого рода ошибок, как правило, можно увидеть запрос на ошибку на странице редактирования стратегии, и при этом стратегия не может быть запущена (как только стратегия будет запущена, будет сообщена ошибка, как показано на изображении).

    imgПоэтому вы можете привыкнуть к тому, чтобы посмотреть на страницу редактирования стратегии после завершения написания кода, чтобы увидеть, есть ли маленький красный крест; если есть, это означает, что есть определенно очевидная ошибка.

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

    img

    img

    Такие ошибки могут вызвать исключение программы и остановить ее запуск.

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

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

    img

    Сообщение об ошибках в системе обратного тестирования на платформе FMZ:

    img

    Сообщение об ошибке в боте:

    img

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

    img

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

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

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

    Здесь я перечисляю несколько сообщений об ошибках интерфейсов, которые делают сетевые запросы:

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

      img

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

    • http 429 ошибка

      img

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

    • Ошибка службы интерфейса платформы

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

      img

      Результат выполнения инструмента отладки; нет разницы между выполнением инструмента отладки и выполнением бота.img

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

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

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

      img

      Однако, если параметры передаются или записываются неправильно, ошибки также сообщаются.

      img

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

Система обратных испытаний

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

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

  • JavaScript

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

  • Питон

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

  • C++

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

  • Милангаж

    Подложка реализуется с помощью JavaScript, а обратный тест также выполняется в браузере.

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

    Подложка реализована с помощью JavaScript, а обратный тест также выполняется в браузере

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

img

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

https://www.fmz.com/bbs-topic/9091

    1. Бактэст на уровне моделирования В целом, обратный тест на уровне моделирования заключается в том, чтобы генерировать данные о ценах последовательных временных узлов на основе данных K-линии путем моделирования.
    There are the highest, the lowest, open and close prices in one bar, which forms a price structure. Within the time range represented by the K-line, the prices are all in the price structure. Therefore, as long as the generated price is within the K-line structure of the four prices, the simulated price is reasonable.  
    

    Точно так же, как на следующем изображении:img

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

    img

    Здесь я устанавливаю 1 минуту, что означает использование данных K-линии с периодом 1 минуты в качестве источника данных для генерации симулированных данных о клетках.

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

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

    img

Где находится источник данных системы FMZ Quant backtest? Система backtest использует данные панели управления на платформе FMZ по умолчанию. панель управления FMZ автоматически собирает установленные рыночные данные каждой валюты на каждой платформе и предоставляет их системе backtest платформы.

    1. Использовать данные панели FMZ Об этом упоминалось в предыдущих статьях:https://www.fmz.com/bbs-topic/9245#Квантативная торговая платформа- Да, конечно. Данные обратного теста, предоставляемые платформой, поддерживают только ограниченное количество торговых пар. (данные обратного теста всего рынка и всех валют составляют астрономическое количество, и их нереально собрать всех. Платформа собрала данные рынка основных платформ и основных валют.)
    1. Использовать данные из источника данных Вы можете выбрать параметры на странице backtest для настройки пользовательского источника данных. Проще говоря, если у вас есть данные с платформы, вы можете предоставить их системе backtest на платформе FMZ для backtest, в соответствии с требованиями формата платформы FMZ.

    img

В документации FMZ API также есть некоторые инструкции о пользовательском источнике данных:https://www.fmz.com/api#Custom Data Source

Есть также некоторые схемы в Digest на платформе FMZ. Начинающие, которые заинтересованы в этом, могут обратиться к этим схемам и изучить их.

Изучайте, испытывайте и размышляйте

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

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

О, писать запрограммированные и количественные стратегии очень сложно! По-прежнему смущен, даже я изучаю это уже некоторое время! Я просто хочу сдаться, прежде чем начать! - Что?

Начало работы с платформой FMZ на самом деле очень легко и просто. Прежде всего, вы должны уметь искать информацию.

img

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

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

Я видел пример:imgЕсли я хочу проверить его, я могу использовать систему обратного теста FMZ для его исследования.

Случайная установка платформы на системе обратного теста.img

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

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, " Is it the email address? ", " Answer:", IsEmail(strEmailAddress1))
    
    var strEmailAddress2 = "123456789@qq.com"
    Log(strEmailAddress2, " Is it the email address? ", " Answer:", IsEmail(strEmailAddress2))
}

img

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

img

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


Больше