Skip to content

Commit

Permalink
[Mod] 完善代码细节逻辑
Browse files Browse the repository at this point in the history
  • Loading branch information
vnpy committed Aug 9, 2021
1 parent 52ac998 commit fc7c851
Showing 1 changed file with 9 additions and 19 deletions.
28 changes: 9 additions & 19 deletions vnpy_esunny/gateway/esunny_gateway.py
Expand Up @@ -3,7 +3,6 @@
from datetime import datetime
from pathlib import Path
from typing import Dict, Tuple
from copy import copy
import pytz

from vnpy.event import EventEngine
Expand Down Expand Up @@ -83,11 +82,11 @@

# 交易所映射
EXCHANGE_ES2VT: Dict[str, Exchange] = {
"INE": Exchange.INE,
"CFFEX": Exchange.CFFEX,
"ZCE": Exchange.CZCE,
"DCE": Exchange.DCE,
"SHFE": Exchange.SHFE,
"CFFEX": Exchange.CFFEX,
"INE": Exchange.INE,
"SGE": Exchange.SGE
}
EXCHANGE_VT2ES: Dict[Exchange, str] = {v: k for k, v in EXCHANGE_ES2VT.items()}
Expand Down Expand Up @@ -168,8 +167,6 @@ def __init__(self, event_engine: EventEngine, gateway_name: str = "ESUNNY") -> N
self.md_api: "QuoteApi" = QuoteApi(self)
self.td_api: "EsTradeApi" = EsTradeApi(self)

self.orders: Dict[str, OrderData] = {}

def connect(self, setting: dict) -> None:
"""连接交易接口"""
quote_username: str = setting["行情账号"]
Expand Down Expand Up @@ -220,15 +217,6 @@ def query_position(self) -> None:
"""查询持仓"""
pass

def on_order(self, order: OrderData) -> None:
"""推送委托数据"""
self.orders[order.orderid] = order # 先做一次缓存
super().on_order(order)

def get_order(self, orderid: str) -> OrderData:
"""查询委托数据"""
return self.orders.get(orderid, None)

def close(self) -> None:
"""关闭接口"""
self.td_api.close()
Expand Down Expand Up @@ -319,8 +307,7 @@ def onRspQryCommodity(

if last == "Y":
self.gateway.write_log("查询交易品种信息成功")
req: dict = {}
self.qryContract(req)
self.qryContract({})

def onRspQryContract(
self,
Expand All @@ -334,16 +321,18 @@ def onRspQryContract(
self.gateway.write_log("查询交易合约信息失败")
return

# 检查是否支持该合约
exchange: Exchange = EXCHANGE_ES2VT.get(data["ExchangeNo"], None)
key: tuple = (data["ExchangeNo"], data["CommodityNo"], data["CommodityType"])
commodity_info: CommodityInfo = commodity_infos.get(key, None)

if not data or not exchange or not commodity_info:
return

# 只处理期货和现货
if data["CommodityType"] == "F" or data["CommodityType"] == "P":
symbol: str = data["CommodityNo"] + data["ContractNo1"]
product: Product = PRODUCT_TYPE_ES2VT.get(data["CommodityType"], None)
product: Product = PRODUCT_TYPE_ES2VT[data["CommodityType"]]

contract = ContractData(
symbol=symbol,
Expand Down Expand Up @@ -586,10 +575,11 @@ def onRtnOrder(self, userno: str, requestid: int, data: dict) -> None:
if data["ErrorCode"] != 0:
self.gateway.write_log(f"委托下单失败,错误码: {data['ErrorCode']}, 错误信息: {data['ErrorText']}")

# 委托状态过滤
# 过滤委托的临时状态推送
if data["OrderState"] in {"7", "8"}:
return

# 绑定本地和系统委托号映射
self.local_sys_map[data["RefString"]] = data["OrderNo"]
self.sys_local_map[data["OrderNo"]] = data["RefString"]

Expand Down Expand Up @@ -750,7 +740,7 @@ def send_order(self, req: OrderRequest) -> str:
order_req["HedgeFlag2"] = HEDGETYPE_VT2ES["TAPI_HEDGEFLAG_T"]

self.insertOrder(self.userno, order_req, self.reqid)

order: OrderData = req.create_order_data(orderid, self.gateway_name)
self.gateway.on_order(order)

Expand Down

0 comments on commit fc7c851

Please sign in to comment.