2.8 시장 데이터 업데이트 모드를 전환 (설명)

저자:작은 꿈, 2016-07-13 10:08:50, 업데이트: 2017-10-11 10:21:29

시장 데이터 업데이트 모드를 전환합니다

  • 이 API 문서의 설명은 다음과 같습니다:
// 只支持Websocket模式(huobi, okcoin.cn, BTCC支持)与商品期货CTP协议
exchange.IO("websocket"); // 切换行情通信协议到websocket(默认为rest), Ticker, Depth会切换为websocket协议来更新, 商品期货CTP无需切换
// 切换GetTicker, GetDepth数据更新模式
exchange.IO("mode", 0); // 立即返回模式, 如果当前还没有接收到交易所最新的行情数据推送, 就立即返回旧的行情数据, 如果有新的数据就返回新的数据
exchange.IO("mode", 1); // 缓存模式(默认模式), 如果当前还没有收到交易所最新的行情数据(同上一次api获取的数据比较), 就等待接收然后再返回, 
                        //如果调用该函数之前收到了最新的行情数据, 就立即返回最新的数据
exchange.IO("mode", 2); // 强制更新模式, 进入等待一直到接收到交易所下一次的最新推送数据后返回
// 如果想第一时间获取最新的行情可以切换到websocket后不Sleep的立即检测数据, GetTicker, GetDepth用缓存模式进行工作
exchange.IO("websocket");
while (true) {
    Log(exchange.GetTicker());
}
  • 사용자들의 이해를 돕기 위해 아래와 같이 자세히 설명합니다.

    • 1, 플랫폼 시스템은 기본으로 rest 모드입니다: rest 모드에서 API 데이터 요청 한 번, 거래소 서버는 데이터 한 번 (현재 최신) 을 반환합니다. 거래소 서버는 사용자에게 최신 데이터를 적극적으로 밀어주지 않습니다. 그래서 전략은 휴식 모드를 사용할 때 최신 데이터를 신속히 얻을 수 있도록 데이터를 자주 요청해야합니다.

    • 2, 웹소켓 모드 지원 API는 GetTicker, GetDepth.가 호출중이다.exchanges[0].IO("websocket");이 함수들은 웹소켓 모드를 실행하고, 주의를 기울인 학생은 왜 exchanges[0]가 이렇게 쓰여지는지 알 수 있습니다. 아래 그림을 참조하십시오.img예를 들어, 하나의 정책에 두 개의 거래소를 추가한 경우 (일 수도 여러 개) 플랫폼 정의의 범세계적 객체 중 하나의 배열은 정책에 추가된 모든 거래소를 대표하는 배열입니다. 이 배열은 exchanges 거래소 객체 배열입니다. 주 거래소 객체는 배열의 첫 번째 요소입니다: exchanges[0] 코인 거래소 객체; 두 번째 거래소 객체: exchanges[1] OKCoin 거래소 객체 ▲exchange exchanges[0] ▲websocket를 지원하는 거래는 모든 코인, OKCoin 현금, BTCC입니다. CTP 상품 선물은 웹소켓과 유사한 CTP 프로토콜이므로 사용 시 스위치가 필요하지 않습니다.

    • 3, 웹소켓 모드와 레스트의 차이점: 웹소켓 모드에서는 관리자가 거래소 서버에 구독 요청을 전송하고 거래소 서버가 수신한 후; 최신 데이터가 있을 때마다 관리자에게 적극적으로 추진된다. 관리자는 이러한 데이터를 캐시하고, 전략 로봇이 데이터를 요청할 때 빠르게 얻을 수 있으며, 데이터는 최신이다. (거래소 서버가 새로운 데이터 업데이트가 있을 때 적극적으로 추진되기 때문에)

    • 4. 웹소켓 모드가 시작되면 세 가지 작업 모드를 설정할 수 있습니다.

      • <1> exchange.IO("mode",0);//인스턴트 리턴 모드: 이 모드는 현재 데이터 (현재 최신) 를 즉시 반환한다.

      • <2> exchange.IO("mode", 1);// 캐시 모드 ((디폴트 모드): 이 모드는 2개의 처리 브랜치로 나뉘어, 첫 번째, API가 데이터를 요청할 때, 현재 캐시된 데이터가 마지막 API에서 얻은 데이터와 비교되어 최신이 아닌 경우 요청된 데이터가 API에서 수신될 때까지 기다립니다. 두 번째, API가 데이터를 요청할 때, 현재 캐시된 데이터가 마지막 API가 얻은 데이터와 비교했을 때 최신 데이터 (즉, API 요청 데이터가 호출되기 전에 최신 트랜스포먼트 데이터가 수신되었다) 이면 즉시 최신 데이터를 반환합니다.

      • <3> exchange.IO("mode", 2);// 강제 업데이트 모드: 이 모드는 캐시 모드의 논리적인 분과로 쉽게 혼동될 수 있는 모드이다. 캐시 모드는 캐시된 데이터의 최신 여부를 판단하는 방식이다. 강제 업데이트 모드는 현재 시장이 최신인지 여부에 관계없이 다음 최신 시장 데이터가 전송될 때까지 강제 대기하는 방식이다.


더 많은

호크셀라토` `js function main (() { Exchange.IO (("websocket"); while (true) { 로그 (exchange.GetTicker) ♪ ♪ ♪ ♪ `` 1. 리코딩이 불가능, 오류 보고 `main:2:12 - ReferenceError: setLastError is not defined `, 리코딩 시스템이 비동기 추진 데이터를 지원하지 않기 때문에 추측된다. 2. 모형 디스크 오류 보고, ≪Futures_OP 4: period not support≫, 그러면 하나의 틱어 데이터만 수신할 수 있고, 로봇이 정상적으로 중지할 수 없으며, 계속 을 중지하도록 지시하여 수동으로 제거해야 합니다.

FangBei얼마나 많은 데이터가 캐시되고 얼마나 오래 캐시되어 지나요?

호크셀라토이해가 되었어요, 감사합니다!

작은 꿈1, 재검토 중 rest, websocket의 비중이 없습니다. 2, 모형 디스크에는 웹소켓 모드가 없습니다. 문서화 OKEX 코인프로만 웹소켓 프로토콜을 지원합니다.

작은 꿈이 사이트는 100개 이상의 항목을 저장할 수 있습니다.