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

Создано: 2019-09-26 15:47:53, Обновлено: 2024-12-17 20:38:08
comments   3
hits   3049

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

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

На платформе количественной торговли InventorСтратегический квадратВ Интернете есть много интересных стратегий. В то время большинство цифровых валютных бирж использовалиrestИнтерфейс API протокола, на котором основаны многие стратегииrestИнтерфейс, иногда обновления маркета происходят медленно. Кроме того, в последнее время появились некоторые биржиrestСбой интерфейса делает политику непригодной к использованию. Если политика изменена, добавьтеwebsocketПоддержка интерфейса требует внесения определенных изменений в код стратегии, что обычно хлопотно (изменить стратегию гораздо сложнее, чем переписать ее). Как я могу использовать ту же стратегию, не меняя ее?websocketА как насчет интерфейса рынка? Это полностью демонстрирует мощную гибкость платформы количественной торговли Inventor. Мы можем:

  • 1. Используйте стратегию «Библиотека шаблонов».
  • 2. Даexchange.GetTicker Функция «Операция перехвата» для получения рыночной информации.

Это позволяет контролировать стратегиюwebsocketДанные, полученные через интерфейс рынка, запущены. Используемый язык кодированияJavaScriptязык.

Аналитическая стратегия

Например, мы хотим модифицировать классическую старую стратегию «Ледокол».

Адрес политики

Давайте сначала посмотрим на код стратегии и увидим, что стратегия основана на тиковых рыночных условиях и в основном используетtickerВ данныхBuySellLastЭти атрибуты,tickerДанные получены из API-функции платформы FMZ:exchange.GetTicker Получать. Таким образом, цель ясна.exchange.GetTickerфункцияHookВсе, что нужно сделать, это выполнить операцию (т. е. перезаписать ее другой версией и заменить ее). Однако мы не можем переписать стратегию Icebreaker, поскольку это повлияет на стратегию. Мы хотим бесшовного соединения! ! Итак, должен появиться следующий главный герой.

Функция библиотеки шаблонов иinitКоординация функций

Создаем «библиотеку шаблонов» и называем ее:SeamlessConnWS, очистите исходный код.

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

Тогда дайSeamlessConnWSШаблон задает 2 параметра

  • IsUsedWebSocket
  • Hook_GetTicker@IsUsedWebSocket

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

Используется для управления включением или выключениемwebsocketФункция интерфейса, управление и указание открытия конкретного рыночного интерфейса. Из-за ограниченного пространства, толькоexchange.GetTickerИнтерфейс выполняет операции перехвата. Таким образом, параметры включены толькоGetTickerИнтерфейс представляет собой параметр управления режимом веб-сокета: Hook_GetTicker.

После создания шаблона вы можете указать конкретный обмен, к которому будет осуществляться доступ в шаблоне.websocketПодключитесь, подпишитесь на определенные котировки, а затем ждите, пока биржа отправит данные. Конкретный код не будет здесь повторяться. Вы можете обратиться к коду SeamlessConnWS (публично доступному) и документации API. Вам нужно обратить внимание на шаблон.initФункции и глобальные переменные_DictConnectCreater_ConnMap

Код:

var _DictConnectCreater = {
    "Huobi" : WSConnecter_Huobi,
    "Binance" : WSConnecter_Binance,
}

var _ConnMap = {}

function init () {
    if (IsUsedWebSocket) {
        var connectCreater = null
        if (exchanges.length != 1) {
            Log("切换为ws接口只针对 exchange 交易所对象(即第一个添加的交易所对象)")
        }
        var isFound = false 
        for (var name in _DictConnectCreater) {
            if (exchange.GetName() == name) {
                connectCreater = _DictConnectCreater[name]
                isFound = true
            }
        }

        if (!isFound) {
            throw "没有找到实现"
        }
        
        if (Hook_GetTicker) {
            var symbol = exchange.GetCurrency()
            _ConnMap.GetTicker = connectCreater("GetTicker", symbol)
            exchange.GetTicker = function () {
                return _C(_ConnMap.GetTicker.Read)
            }
        }
        // ... 
        
    }
}

Вы видите, что этот шаблон реализует только 2 обмена.websocketРыночные интерфейсы — Binance Spot и Huobi Spot.initФункция заключается в том, чтобы позволить стратегии «Ледокол» ссылатьсяSeamlessConnWSПосле создания шаблона, при запуске реального диска, первое, что нужно сделать, это выполнитьinitФункция, которая может автоматическиexchange.GetTickerЗамените содержимое функции наwebsocketРеализация кода интерфейса для достижения бесшовного соединенияwebsocketКавычки.

Адрес шаблона SeamlessConnWS

Как это использовать

Все очень просто! ПучокSeamlessConnWSПосле копирования шаблона в собственную библиотеку стратегий вам останется только сослаться на него в стратегии «Ледокол», как показано на рисунке:

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

Проверьте, сохраните и готово.

Создайте робота в реальном времени по стратегии «Ледокол» и выберите Binance в качестве биржи Научу вас шаг за шагом, как легко подключить старую стратегию к интерфейсу рынка веб-сокетов. . ОткрытьSeamlessConnWSПараметры управления по шаблону. Научу вас шаг за шагом, как легко подключить старую стратегию к интерфейсу рынка веб-сокетов.

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

Чтобы упростить просмотр отправленных данных, я добавил код журнала печати в строку 157, который выведет данные, отправленные биржей. Научу вас шаг за шагом, как легко подключить старую стратегию к интерфейсу рынка веб-сокетов.

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

Таким образом, нет необходимости изменять ни одной строки кода стратегии, и достигается бесшовная интеграция интерфейса и стратегии рынка веб-сокетов.

Этот пример предназначен только для использованияexchange.GetTickerОбъясняется стратегия функции рыночного интерфейса. Другие рыночные интерфейсы, такие какexchange.GetDepthexchange.GetTradesexchange.GetRecordsЭто та же самая рутина! Для образца шаблонаSeamlessConnWS, который может быть расширен в дальнейшем.

Для конкретных ссылок в шаблонахwebsocketРеализация используетDialФункция (см. документацию API Функция набора номера), которую можно настроить по мере необходимости. Например, вы можете датьread()Параметры, указанные функцией-2, то есть только возвратwebsocketСоединение получает последние данные в свой буфер.

Спасибо за прочтение