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

Автор:Маленькие мечты, Создано: 2019-09-26 15:47:53, Обновлено: 2023-10-18 19:54:36

img

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

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

  • 1. Используйте политику "Клиенты класса шаблона".
  • 2, да.exchange.GetTickerФункция Hook, полученная с помощью операций.

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

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

Например, мы хотим изменить классическую старую стратегию "Ледокол".

Стратегический адрес

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

Функции "Класс шаблонов" иinitСовмещение функций

Мы создали библиотеку шаблонов под названием:Бесшовный КОНВУС, с пустым исходным кодом.

img

А затем дайтеБесшовный КОНВУССхема с двумя параметрами

  • IsUsedWebSocket
  • Hook_GetTicker@IsUsedWebSocket

img

Используется для управления включениемwebsocketФункция интерфейса, контролирующая конкретный интерфейс, открываемый в отрасли. В данном случае, из-за ограниченного размера, только дляexchange.GetTickerИнтерфейс выполняет операции с крючком.GetTickerИнтерфейс является контрольным параметром в режиме websocket: 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)
            }
        }
        // ... 
        
    }
}

Как видите, эта модель реализует только две биржи.websocketНапример, в некоторых странах существуют различные системы обработки данных.initФункция предназначена для того, чтобы использовать стратегию "Ледокол".Бесшовный КОНВУСПосле шаблона, при запуске реального диска, сначала выполняетсяinitФункция, которая может автоматическиexchange.GetTickerИспользование содержимого функцииwebsocketРеализация кода интерфейса для обеспечения беспроводного соединенияwebsocketПопробуйте.

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

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

Проще всего!Бесшовный КОНВУСПосле того, как шаблон будет скопирован в свою собственную библиотеку стратегий, его можно использовать только для ссылки на стратегию "Ледокол", например:

img

Выберите, сохраните, и все.

Создание стратегии "Ледокола" - реальный робот, биржа выбирает бинанimgЯ не знаю. ОткрытьБесшовный КОНВУСКонтрольные параметры на шаблоне.img

Начало:img

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

Посмотрите, что в журнале роботов:img

Таким образом, без изменения одной строки кода политики, реализуется использование интерфейса веб-сокета и политики беспроводного сопряжения.

В данном случае мы используемexchange.GetTickerРассказ о стратегии, сделанной функцией интерфейса отрасли, и другие интерфейсы отрасли, напримерexchange.GetDepthexchange.GetTradesexchange.GetRecordsЭто же самое!Бесшовный КОНВУСПосмотрите, что мы можем сделать дальше.

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

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


Связанные

Больше

congcong009Монго, ты не мог бы дать мне еще одну версию Python?

И невесты тоже.Если вы не хотите, чтобы кто-то узнал, что вы делаете, вы должны быть готовы.

Маленькие мечтыХорошо, спасибо за совет.