В процессе загрузки ресурсов... загрузка...

Куантизация монетного круга выглядит совершенно по-новому - приближает вас к квантизации монетного круга.

Автор:Изобретатели количественного измерения - мечты, Создано: 2021-04-19 14:16:21, Обновлено: 2024-12-04 21:21:43

img

Квантификация монетного круга. Новый взгляд на монетный круг.

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

Скрипты программируемых транзакций

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

    • Стратегия хеджирования Проще говоря, в основном такие стратегии, как держание позиций с большим количеством позиций и держание позиций с небольшим количеством позиций, могут быть классифицированы как стратегии сбора средств. Существует множество конкретных видов, такие как текущие сверхрыночные, фьючерсные сверхсрочные, текущие сверхрыночные, сверхразновидные сверхрыночные и т. д.
    • Тенденционные стратегии Проще говоря, это стратегия отслеживания тренда, двойной уравнительной линии, MACD и т.д.
    • Стратегия возвращения Например, сетевые стратегии, используемые для получения прибыли от колебаний цен в нестабильных рынках.
    • Стратегия высокой частоты Проще говоря, это стратегия для высокочастотных сделок с помощью алгоритмов, которые выявляют микроструктуру рынка, закономерности, возможности и т. д.

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

    • Однородная стратегия Это означает, что эта стратегия работает только в одном варианте, например, в BTC или ETH.
    • Многообразие стратегий По сути, это означает, что мы должны использовать несколько видов в соответствии с одной стратегической логикой.
    • Политика использования нескольких учетных записей Проще говоря, это конфигурация на диске нескольких обменных объектов (в предыдущей статье была представлена концепция обмена, настройка обменных объектов API KEY представляет собой одну учетную запись биржи). Например, некоторые стратегии учета, несколько учетных записей вместе следуют за операциями (может быть, одна и та же биржа, а может быть и разные биржи), в общем, управление несколькими обменными объектами на диске (счета).
    • Многологические стратегии На одном диске, например, одновременно спроектированы стратегия MACD, стратегия сплошной линии, стратегия решетки и т. д. ((Конечно, это работает с различными объектами биржи, работа с одними и теми же объектами биржи, чтобы увидеть, не противоречат ли конкретные стратегии логически)
  • Интерфейс API биржи Как программируемые торговые сценарии работают с учетными записями на бирже? В предыдущей статье мы рассказали об обмене REST, Websocket. Здесь мы немного дополнили концепцию с уровня программного обеспечения. Интерфейс обмена разделен по тому, является ли он проверяемым (все REST, Websocket) с проверкой и без проверки).

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

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

    Как же использовать эти интерфейсы на квантовой платформе изобретателя?

    Изобретательная квантовая платформа обертывает поведение биржи, определяя согласованные интерфейсы (например, K-линиевые интерфейсы, интерфейсы глубокой торговли, интерфейсы запроса текущего актива, интерфейсы сбора, интерфейсы снятия заказа и т. д.), которые называются на Изобретателе квантовая платформа API-функции, которые можно просматривать путем запроса API-документации.https://www.fmz.com/api )。

    Так как же использовать эти нестандартные интерфейсы в квантовой платформе изобретателей?

    Эти интерфейсы, например: перераспределение активов, условные поручения, оптовые заказы, оптовые отзывы, изменения заказов и т. д. Эти интерфейсы имеются на некоторых биржах, а не на некоторых, и функциональные и эксплуатационные детали могут сильно отличаться, поэтому эти интерфейсы могут быть проданы на квантовой торговой платформе изобретателя.exchange.IOДля получения доступа к этой функции (подробности см. в документации API для квантовой платформы):https://www.fmz.com/api#exchange.io..На площадке стратегии квантовой платформы для изобретателей также есть несколько практических примеров стратегии ИО.

    Создают ли сетевые запросы все API-функции, содержащиеся в документации API для квантовой торговой платформы изобретателя?

    Если мы говорим, что API-интерфейс биржи имеет ограничение на частоту доступа (например, 5 раз в секунду и т. д.), то доступ не может быть слишком частым, иначе будет сообщаться ошибка http 429, и доступ будет отклонен (большинство бирж сообщают 429). Не все API-функции для квантовых торговых платформ создают сетевые запросы, а некоторые API-функции для некоторых изобретателей просто изменяют некоторые локальные настройки, такие как настройка текущих торговых пар, настройка кода контракта, функции вычисления индикаторов, получение названия объектов биржи и т. д. В основном из использования функции можно определить, происходит ли сетевой запрос, при условии, что сетевые запросы создаются для получения данных биржи, операций с аккаунтами биржи и т. д. Эти интерфейсы требуют внимания к частоте вызовов.

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

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

        img

        При написании стратегии мы должны оценить данные, возвращаемые интерфейсом, например, получить следующую строку кода на квантовой торговой платформе изобретателя (так же, как писать программу для прямого доступа к интерфейсу биржи):var ticker = exchange.GetTicker()Если мы хотим использовать это,tickerИзменения (см. структуру, возвращаемую функцией GetTicker)Last(Последняя цена) данные, которые мы должны использовать.var newPrice = ticker.LastЭто позволяет получить данные ((newPrice это что?new: новейший,Price: цена, да! соединяется!)GetTicker()Функции возвращают нормальные данные, но это может произойти в случае задержки запроса, сетевой ошибки, отключения сети в бирже, вырыва кабеля, вытягивания ребенка-медведя и т.д.GetTicker()Функция возвращаетсяnullВ это время.tickerИ это значит,nullЯ вернусь к нему.LastВ случае, когда происходит неисправность, которая приводит к остановке стратегии. Это означает, что неудача вызова интерфейса (GetTicker вызов неудача возвращает null) не является непосредственной причиной, которая привела к остановке реального диска)nullПризнаки переменных), интерфейсный вызов не может привести к остановке реального диска. Так что же мы можем сделать, чтобы предотвратить аномальные остановки? Ответ заключается в том, что мы можем ошибочно обрабатывать данные, возвращаемые интерфейсом, и это очень просто, если мы просто судим о том, что данные, возвращаемые интерфейсом, являются или не являются данными.null(Например, язык JavaScript, другие языки практически такие же) Напишите небольшой фрагмент кода (это всего лишь инструкция, прямое выполнение не подходит!)

        var ticker = exchange.GetTicker()
        if (ticker) {
            var newPrice = ticker.Last
            Log("打印最新价格:", newPrice)
        } else {
            // 数据为null,不做操作就不会出问题
        }
        

        Не толькоGetTickerИнтерфейсы должны быть ошибочными, интерфейсы с сетевыми запросами должны быть ошибочными для возвращаемых значений (если вы используете возвращаемые значения функций) Есть много способов, которыми можно простить ошибку._C()Функции (см. ФМЗ API документация), сами пишут ошибочные функции, сами проектируют ошибочные механизмы, логику. О_C()Иногда, когда мы говорим о том, как мы используем функции, многие наши ученики, вероятно, ошибаются, обратите внимание._C()Параметры функции - это ссылки на функции, а не вызовы._C(funcName, param1, param2), вызванный правильно, funcName без запятой, param1, param2 - параметры, которые должны быть переданы функции funcName._C(funcName(param1, param2))В некоторых случаях, когда вы не можете получить доступ к FMZ API, вы не можете получить доступ к FMZ API.

      • Количество заказов на покупку по рыночной цене В предыдущей статье мы уже говорили о том, что сумма, на которую обращаются к платежам на рынке, обычно составляет сумму (особые биржи могут иметь другие настройки, которые обычно указываются в документах FMZ API), например, я проверил это с OKEX V5: Пара была установлена на:LTC_USDT

        function main() {
            exchange.IO("simulate", true)   // 切换为OKEX交易所的模拟盘
            exchange.Buy(-1, 1)             // 价格是-1,表示下的订单为市价单,数量为1表示下单量是1USDT
        }
        

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

        错误	Buy(-1, 1): map[code:1 data:[map[clOrdId: ordId: sCode:51020 sMsg:Order amount should be greater than the min available amount. tag:]] msg:]
        
      • Направление фьючерса Одностороннее направление при разработке стратегии фьючерсов также часто вызывает проблемы, когда новички делают ошибки, например, при написании стратегии на квантовой торговой платформе. В первую очередь, давайте посмотрим на описание в документации API:https://www.fmz.com/api#exchange.setdirection...

        img

        Это потому, что у нас есть только одна функция.Buy,SellОднако, если фьючерсы (настоящий товар, конечно, не имеет никаких проблем, наличный только покупает и продает) имеют такие направления, как открытое, тихое, открытое, пустое, то очевидно, что Buy/Sell не может представлять столько направлений, тогда необходимо ввести функцию настройки направления торговли фьючерсами.exchange.SetDirection()Я не знаю. На FMZexchange.SetDirection("buy")(предназначенное направление) иexchange.BuyЕсли использовать в сочетании, то это означает, что следующая строка - это заказ с большим количеством позиций. Посмотрите на это:exchange.SetDirection("sell")иexchange.SellЕсли использовать в сочетании, то это означает, что следующая строка является заказом на открытый склад.exchange.SetDirection("closebuy")иexchange.SellЕсли использовать в сочетании, то это означает, что ниже приведенные элементы являются заказами с низким объемом поставок.exchange.SetDirection("closesell")иexchange.BuyЕсли использовать в сочетании, то это означает, что ниже приведенные элементы являются заказами на пустом складе. Обычно вновь встречаютсяexchange.SetDirection("sell")иexchange.BuyСовместное использование, или другая комбинация ошибок. Затем ошибка сообщается (возможно, повторное использование не сообщает ошибок, но это очевидно логическая ошибка, компульсивность не терпимая...). Еще одна распространенная ошибка

        function main() {
            exchange.SetContractType("quarter")   // 设置当前合约为季度合约
            exchange.SetDirection("sell")
            var id = exchange.Sell(-1, 1)    
            Log("看我市价单下单了,成交了,就有持仓了", exchange.GetPosition())    
            exchange.SetDirection("closebuy")   // closebuy 和Sell 搭配使用,嗯没错~
            exchange.Sell(-1, 1)
        }
        

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

      • Вывод журналов, демонстрация информации о сделках Проектирование программирования, количественное планирование сделок и т.д. - проектирование взаимодействий между компьютерами, например, с помощью не открываемых данных, отображаемых в блоках, блочных операционных журналов и т.д.; обычно с использованием родного языка. Например: Python используетсяprintЯ не знаю. JavaScript используетсяconsole.logЯ не знаю. Голангfmt.Println()Я не знаю. Использование C++cout

        В то же время, информация на платформе FMZ показывает, что на платформе количественного обмена изобретателей информация отображается в двух основных местах.

        • Таблица состояния После того, как виртуальный диск будет запущен, страница виртуального диска будет выглядеть так:

          img

          Частично отображается как информация о строке состояния, строка состояния в основном предназначена для отображения некоторых изменений в реальном времени (поскольку изменения в реальном времени требуют наблюдения в реальном времени и не могут быть напечатаны в журнале каждый раз, такие данные могут отображаться в строке состояния, если каждый из них будет напечатан в журнале, то будет много повторяющихся бессмысленных данных, влияющих на запрос). Использование данных в строке состоянияLogStatusФункции, в частности, приведены в документации API FMZ.

        • Диалоги На странице с реальными устройствами также можно увидеть:

          img

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

          img

          2 exchange.Sell/exchange.BuyВ журнале автоматически выводятся записи.

          img

          3., Снятие журналов, использование в стратегии FMZexchange.CancelOrderВ этом случае, если вы не хотите, чтобы ваш журнал был закрыт, вы можете перейти к следующему разделу.

          img

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

          img

        Функции API FMZ, которые могут генерировать функции логического вывода, такие как Log ((...), exchange.Buy ((Price, Amount), exchange.CancelOrder ((Id) и т. д., могут быть дополнены необходимыми параметрами с некоторыми дополнительными параметрами вывода, такими как: exchange.CancelOrder ((orders[j].Id, orders[j]) и т. д.

        function main() {
            Log("数据1", "数据2", "数据3", "...")
            var data2 = 200
            var id = exchange.Sell(100000, 0.1, "附带数据1", data2, "...")
            exchange.CancelOrder(id, "附带数据1", data2, "...")
            LogProfit(100, "附带数据1", data2, "...")
        }
        
      • Использование показателей Перед тем как говорить о показателях, мы должны понять, что такое показатели, а именно, что такое средние линии, MACD, ATR и т. д. Вопрос: Как появились эти показатели? Ответ: Разумеется, рассчитано. Вопрос: На основании чего? Ответ: Исходя из данных K-линии. Вопрос: Приведите пример. Ответ: В самом простом примере показателя уравнительного показателя, если мы используем данные K-линии (то есть солнечного или женского излучения, представляющего день) в качестве источника для расчета показателя. Параметр показателя уравнительного показателя равен 10, то рассчитанный уравнительный показатель будет уравнительным показателем 10 дней. Вопрос: Можно ли вычислить среднелинейный показатель, если количество BAR в K-линии меньше 10 бит? Ответ: Не только уравнительные показатели не могут быть рассчитаны, но и любые показатели не могут быть рассчитаны, если количество данных BAR в K-линии не удовлетворяет параметрам цикла показателя.JavaScriptЯзыковая стратегия отображает данные показателей при печати.null

        Например, на Площади правильных стратегий есть пример обучения:https://www.fmz.com/strategy/125770Если вы проанализируете этот пример обучения, вы увидите график, созданный системой проанализирования, а также средние линии 10 циклов:

        img

        Стратегия создания собственных графиков, выделяемых линий K, а также диаграмм с уравненными линиями:

        img

        Вопрос: Что, если я хочу 10 часов в неделю? Ответ: K-линейные данные можно использовать для часами цикла.

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

        На Изобретательской квантовой торговой платформе можно использовать библиотеку TA (бюджет, реализованный платформой FMZ, интегрированный в хостеры, доступный для непосредственного использования в различных языках) или библиотеку talib (бюджет, интегрированный с JS, C++, Python требует самостоятельной установки). Например, в примере выше рассчитывается средняя линия: Использование TA:

        function main() {
            var records = exchange.GetRecords()
            var ma = TA.MA(records, 10)
            Log(ma)       // 打印均线
        }
        

        Использование библиотеки талиб:

        function main() {
            var records = exchange.GetRecords()
            var ma = talib.MA(records, 10)
            Log(ma)       // 打印均线
        }      
        

        Вычисленные показатели ma - это массив, в котором каждый элемент соответствует одному из K-линий (records), т.е.ma[ma.length -1]Соответствиеrecords[records.length - 1]Посмотрите на это.

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

        var macd = TA.MACD(records)   // 这样只传入K线数据,不传入指标参数,指标参数采用的就是默认值,其它指标函数也是同理
        

        На данный момент MACD является двумерным матрицей (не знаю, что это такое), а двумерная матрица - это просто матрица, в которой каждый элемент является матрицей. Вопрос: Почему данные MACD-индикатора являются двумерными матрицами? Ответ: Поскольку индикатор macd состоит из двух линий (линия dif, линия dea) и множества столбцов величины (линия macd, которая также может рассматриваться как линия), то переменную macd можно разделить на:

        var dif = macd[0]
        var dea = macd[1]
        var macdColumn = macd[2]
        

        Вот еще один пример готового обучения и интересного исследования:https://www.fmz.com/strategy/151972

        img


Связанные

Больше