diff --git a/tests/trader/run.py b/tests/trader/run.py index 007720c7..6cac7b0c 100644 --- a/tests/trader/run.py +++ b/tests/trader/run.py @@ -14,6 +14,7 @@ from vnpy.gateway.okex import OkexGateway from vnpy.gateway.huobi import HuobiGateway from vnpy.gateway.bitfinex import BitfinexGateway from vnpy.gateway.onetoken import OnetokenGateway +from vnpy.gateway.okexf import OkexfGateway from vnpy.app.cta_strategy import CtaStrategyApp from vnpy.app.csv_loader import CsvLoaderApp @@ -38,6 +39,7 @@ def main(): main_engine.add_gateway(HuobiGateway) main_engine.add_gateway(BitfinexGateway) main_engine.add_gateway(OnetokenGateway) + main_engine.add_gateway(OkexfGateway) main_engine.add_app(CtaStrategyApp) main_engine.add_app(CtaBacktesterApp) diff --git a/vnpy/gateway/okexf/okexf_gateway.py b/vnpy/gateway/okexf/okexf_gateway.py index 7d775871..ce9fbd68 100644 --- a/vnpy/gateway/okexf/okexf_gateway.py +++ b/vnpy/gateway/okexf/okexf_gateway.py @@ -11,7 +11,7 @@ import json import base64 import zlib from copy import copy -from datetime import datetime +from datetime import datetime, timedelta from threading import Lock from urllib.parse import urlencode @@ -228,8 +228,12 @@ class OkexfRestApi(RestClient): def send_order(self, req: OrderRequest): """""" - orderid = f"a{self.connect_time}{self._new_order_id()}" + # Need both offset and direction for sending order. + if (req.offset, req.direction) not in TYPE_VT2OKEXF: + return "" + orderid = f"a{self.connect_time}{self._new_order_id()}" + data = { "client_oid": orderid, "type": TYPE_VT2OKEXF[(req.offset, req.direction)], @@ -407,7 +411,7 @@ class OkexfRestApi(RestClient): traded=int(order_data["filled_qty"]), price=float(order_data["price"]), volume=float(order_data["size"]), - time=UTC2LOCAL(order_data["timestamp"]).strftime("%H:%M:%S"), + time=utc_to_local(order_data["timestamp"]).strftime("%H:%M:%S"), status=STATUS_OKEXF2VT[order_data["status"]], gateway_name=self.gateway_name, ) @@ -698,7 +702,7 @@ class OkexfWebsocketApi(WebsocketClient): tick.high_price = d["high_24h"] tick.low_price = d["low_24h"] tick.volume = d["volume_24h"] - tick.datetime = UTC2LOCAL(d["timestamp"]) + tick.datetime = utc_to_local(d["timestamp"]) self.gateway.on_tick(copy(tick)) @@ -722,7 +726,7 @@ class OkexfWebsocketApi(WebsocketClient): tick.__setattr__("ask_price_%s" % (n + 1), price) tick.__setattr__("ask_volume_%s" % (n + 1), volume) - tick.datetime = UTC2LOCAL(d["timestamp"]) + tick.datetime = utc_to_local(d["timestamp"]) self.gateway.on_tick(copy(tick)) def on_order(self, d): @@ -738,7 +742,7 @@ class OkexfWebsocketApi(WebsocketClient): price=float(d["price"]), volume=float(d["size"]), traded=float(d["filled_qty"]), - time=UTC2LOCAL(d["timestamp"]).strftime("%H:%M:%S"), + time=utc_to_local(d["timestamp"]).strftime("%H:%M:%S"), status=STATUS_OKEXF2VT[d["status"]], gateway_name=self.gateway_name, ) @@ -816,8 +820,7 @@ def get_timestamp(): return timestamp + "Z" -def UTC2LOCAL(timestamp): - import datetime - time = datetime.datetime.strptime(timestamp, "%Y-%m-%dT%H:%M:%S.%fZ") - utc_time = time + datetime.timedelta(hours=8) +def utc_to_local(timestamp): + time = datetime.strptime(timestamp, "%Y-%m-%dT%H:%M:%S.%fZ") + utc_time = time + timedelta(hours=8) return utc_time