[Mod] complete test of order/trade push update
This commit is contained in:
parent
d868bdf0da
commit
e0c15d4eee
@ -216,6 +216,7 @@ class BitstampRestApi(RestClient):
|
|||||||
# so use this offset dict instead.
|
# so use this offset dict instead.
|
||||||
if not request.data:
|
if not request.data:
|
||||||
request.data = {"offset": "1"}
|
request.data = {"offset": "1"}
|
||||||
|
|
||||||
payload_str = urlencode(request.data)
|
payload_str = urlencode(request.data)
|
||||||
|
|
||||||
message = "BITSTAMP " + self.key + \
|
message = "BITSTAMP " + self.key + \
|
||||||
@ -252,7 +253,9 @@ class BitstampRestApi(RestClient):
|
|||||||
self, request: Request
|
self, request: Request
|
||||||
):
|
):
|
||||||
"""
|
"""
|
||||||
Sending request to server and get result.
|
Bistamp API server does not support keep-alive connection.
|
||||||
|
So when using session.request will cause header related error.
|
||||||
|
Reimplement this method to use requests.request instead.
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
request = self.sign(request)
|
request = self.sign(request)
|
||||||
@ -387,6 +390,14 @@ class BitstampRestApi(RestClient):
|
|||||||
|
|
||||||
self.query_order()
|
self.query_order()
|
||||||
|
|
||||||
|
def query_history(self):
|
||||||
|
""""""
|
||||||
|
self.add_request(
|
||||||
|
method="GET",
|
||||||
|
path="/trading-pairs-info/",
|
||||||
|
callback=self.on_query_contract,
|
||||||
|
)
|
||||||
|
|
||||||
def cancel_order(self, req: CancelRequest):
|
def cancel_order(self, req: CancelRequest):
|
||||||
""""""
|
""""""
|
||||||
path = "/cancel_order/"
|
path = "/cancel_order/"
|
||||||
@ -405,18 +416,20 @@ class BitstampRestApi(RestClient):
|
|||||||
|
|
||||||
def on_cancel_order(self, data, request):
|
def on_cancel_order(self, data, request):
|
||||||
""""""
|
""""""
|
||||||
|
error = data.get("error", "")
|
||||||
|
if error:
|
||||||
|
self.gateway.write_log(error)
|
||||||
|
return
|
||||||
|
|
||||||
cancel_request = request.extra
|
cancel_request = request.extra
|
||||||
local_orderid = cancel_request.orderid
|
local_orderid = cancel_request.orderid
|
||||||
order = self.order_manager.get_order_with_local_orderid(local_orderid)
|
order = self.order_manager.get_order_with_local_orderid(local_orderid)
|
||||||
|
|
||||||
if "error" in data:
|
if order.is_active:
|
||||||
order.status = Status.REJECTED
|
|
||||||
else:
|
|
||||||
order.status = Status.CANCELLED
|
order.status = Status.CANCELLED
|
||||||
|
self.order_manager.on_order(order)
|
||||||
|
|
||||||
self.gateway.write_log(f"撤单成功:{order.orderid}")
|
self.gateway.write_log(f"撤单成功:{order.orderid}")
|
||||||
|
|
||||||
self.order_manager.on_order(order)
|
|
||||||
|
|
||||||
def on_cancel_order_error(self, data, request):
|
def on_cancel_order_error(self, data, request):
|
||||||
""""""
|
""""""
|
||||||
@ -593,11 +606,13 @@ class BitstampWebsocketApi(WebsocketClient):
|
|||||||
|
|
||||||
self.gateway.on_tick(copy(tick))
|
self.gateway.on_tick(copy(tick))
|
||||||
|
|
||||||
buy_orderid = data["buy_order_id"]
|
# Order status check
|
||||||
sell_orderid = data["sell_order_id"]
|
buy_orderid = str(data["buy_order_id"])
|
||||||
|
sell_orderid = str(data["sell_order_id"])
|
||||||
|
|
||||||
for sys_orderid in [buy_orderid, sell_orderid]:
|
for sys_orderid in [buy_orderid, sell_orderid]:
|
||||||
order = self.order_manager.get_order_with_sys_orderid(sys_orderid)
|
order = self.order_manager.get_order_with_sys_orderid(
|
||||||
|
sys_orderid)
|
||||||
|
|
||||||
if order:
|
if order:
|
||||||
order.traded += data["amount"]
|
order.traded += data["amount"]
|
||||||
@ -609,6 +624,19 @@ class BitstampWebsocketApi(WebsocketClient):
|
|||||||
|
|
||||||
self.order_manager.on_order(copy(order))
|
self.order_manager.on_order(copy(order))
|
||||||
|
|
||||||
|
trade = TradeData(
|
||||||
|
symbol=order.symbol,
|
||||||
|
exchange=order.exchange,
|
||||||
|
orderid=order.orderid,
|
||||||
|
tradeid=data["id"],
|
||||||
|
direction=order.direction,
|
||||||
|
price=data["price"],
|
||||||
|
volume=data["amount"],
|
||||||
|
time=tick.datetime.strftime("%H:%M:%S"),
|
||||||
|
gateway_name=self.gateway_name
|
||||||
|
)
|
||||||
|
self.gateway.on_trade(trade)
|
||||||
|
|
||||||
def on_market_depth(self, packet):
|
def on_market_depth(self, packet):
|
||||||
""""""
|
""""""
|
||||||
channel = packet["channel"]
|
channel = packet["channel"]
|
||||||
@ -641,8 +669,9 @@ class BitstampWebsocketApi(WebsocketClient):
|
|||||||
if event != "order_deleted":
|
if event != "order_deleted":
|
||||||
return
|
return
|
||||||
|
|
||||||
sys_orderid = data["id"]
|
sys_orderid = str(data["id"])
|
||||||
order = self.order_manager.get_order_with_sys_orderid(sys_orderid)
|
order = self.order_manager.get_order_with_sys_orderid(sys_orderid)
|
||||||
if order:
|
|
||||||
|
if order and order.is_active():
|
||||||
order.status = Status.CANCELLED
|
order.status = Status.CANCELLED
|
||||||
self.order_manager.on_order(copy(order))
|
self.order_manager.on_order(copy(order))
|
||||||
|
Loading…
Reference in New Issue
Block a user