avatar of 发明者量化-小小梦 发明者量化-小小梦
집중하다 사신
4
집중하다
1271
수행원

기존 전략을 웹소켓 마켓 인터페이스에 원활하게 연결하는 방법을 단계별로 알려드립니다.

만든 날짜: 2019-09-26 15:47:53, 업데이트 날짜: 2024-12-17 20:38:08
comments   3
hits   3531

기존 전략을 웹소켓 마켓 인터페이스에 원활하게 연결하는 방법을 단계별로 알려드립니다.

기존 전략을 웹소켓 마켓 인터페이스에 원활하게 연결하는 방법을 단계별로 알려드립니다.

Inventor Quantitative Trading Platform에서전략 스퀘어인터넷에는 흥미로운 전략이 많이 있습니다. 그 당시 대부분의 디지털 통화 거래소는rest프로토콜의 API 인터페이스는 많은 전략을 기반으로 합니다.rest인터페이스, 가끔 마켓 업데이트가 느립니다. 또한 최근 몇몇 거래소가 등장했습니다.rest인터페이스 오류로 인해 정책을 사용할 수 없습니다. 정책이 수정되면 추가하세요websocket인터페이스 지원을 위해서는 전략 코드를 특정하게 변경해야 하는데, 이는 일반적으로 까다로운 작업입니다(전략을 변경하는 것은 전략을 다시 작성하는 것보다 훨씬 더 어렵습니다). 전략을 변경하지 않고 동일한 전략을 사용하려면 어떻게 해야 하나요?websocket마켓 인터페이스는 어떤가요? 이는 Inventor Quantitative Trading Platform의 강력한 유연성을 완벽하게 보여줍니다. 우리는 다음을 할 수 있습니다.

  • 1. “템플릿 라이브러리” 전략을 사용하세요.
  • 2. 예exchange.GetTicker 시장 정보를 얻기 위한 Hook 작업 기능.

이를 통해 전략을 제어할 수 있습니다.websocket시장 인터페이스에 의해 구동되는 데이터가 실행 중입니다. 사용된 코딩 언어JavaScript언어.

분석 전략

예를 들어, 우리는 고전적인 오래된 전략인 “Icebreaker”를 수정하고 싶습니다.

정책 주소

먼저 전략 코드를 살펴보고 전략이 틱 시장 상황에 의해 결정되고 주로 사용된다는 것을 알아봅시다.ticker데이터에서BuySellLast이러한 속성은ticker데이터는 FMZ 플랫폼의 API 함수에서 얻었습니다.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이 기능은 “Icebreaker” 전략이 참조되도록 허용하는 것입니다.SeamlessConnWS템플릿이 생성되고 실제 디스크가 실행되면 가장 먼저 해야 할 일은 다음을 실행하는 것입니다.init자동으로 수행할 수 있는 기능exchange.GetTicker함수 내용을 다음으로 바꾸세요websocket원활한 연결을 달성하기 위한 인터페이스 코드 구현websocket인용 부호.

SeamlessConnWS 템플릿 주소

사용 방법

매우 간단하죠! 묶음SeamlessConnWS템플릿을 자신의 전략 라이브러리에 복사한 후에는 그림과 같이 “Icebreaker” 전략에서만 참조하면 됩니다.

기존 전략을 웹소켓 마켓 인터페이스에 원활하게 연결하는 방법을 단계별로 알려드립니다.

확인하고 저장하면 완료됩니다.

“Icebreaker” 전략 실시간 로봇을 생성하고 거래소로 Binance를 선택합니다. 기존 전략을 웹소켓 마켓 인터페이스에 원활하게 연결하는 방법을 단계별로 알려드립니다. 열려 있는SeamlessConnWS템플릿의 제어 매개변수. 기존 전략을 웹소켓 마켓 인터페이스에 원활하게 연결하는 방법을 단계별로 알려드립니다.

실행해보세요: 기존 전략을 웹소켓 마켓 인터페이스에 원활하게 연결하는 방법을 단계별로 알려드립니다.

푸쉬된 데이터를 보다 쉽게 ​​볼 수 있도록 157번째 줄에 거래소에서 푸쉬한 데이터를 출력하는 인쇄 로그 코드를 추가했습니다. 기존 전략을 웹소켓 마켓 인터페이스에 원활하게 연결하는 방법을 단계별로 알려드립니다.

로봇 로그에는 다음이 표시됩니다. 기존 전략을 웹소켓 마켓 인터페이스에 원활하게 연결하는 방법을 단계별로 알려드립니다.

이런 방식으로 전략 코드 한 줄도 수정할 필요가 없으며, 웹소켓 마켓 인터페이스와 전략의 완벽한 통합이 달성됩니다.

이 예제는 사용에만 사용됩니다.exchange.GetTicker시장 인터페이스 기능의 전략에 대해 설명합니다. 다음과 같은 다른 시장 인터페이스exchange.GetDepthexchange.GetTradesexchange.GetRecords똑같은 일상이에요! 샘플 템플릿의 경우SeamlessConnWS, 더욱 확장 가능합니다.

템플릿의 특정 링크의 경우websocket구현에는 다음이 사용됩니다.Dial기능(API 문서 다이얼 기능 참조)은 필요에 따라 조정 가능합니다. 예를 들어, 다음을 줄 수 있습니다.read()함수 지정 매개변수-2즉, 반환만 합니다.websocket연결은 버퍼에서 최신 데이터를 수신합니다.

읽어주셔서 감사합니다