def QryAndOrder(self, cfg): # 连接成功后才能执行查询、委托等操作,检测方法有两种: # 1、self.trade.IsOpened() == 1 # 2、TradeEvent的OnNotify中 # XFinApi_TradeApi.ActionKind_Open == notifyParams.ActionType and XFinApi_TradeApi.ResultKind_Success == notifyParams.ResultType while self.trade.IsOpened() != 1: time.sleep(1) qryParam = XFinApi_TradeApi.QueryParams() qryParam.InstrumentID = cfg.InstrumentID # 查询委托单 有些接口查询有间隔限制,如:CTP查询间隔为1秒 time.sleep(1) print("Press any key to QueryOrder.") input() self.trade.QueryOrder(qryParam) # 查询成交单 time.sleep(3) print("Press any key to QueryTradeOrder.") input() self.trade.QueryTradeOrder(qryParam) # 查询合约 time.sleep(3) print("Press any key to QueryInstrument.") input() self.trade.QueryInstrument(qryParam) # 查询持仓 time.sleep(3) print("Press any key to QueryPosition.") input() self.trade.QueryPosition(qryParam) # 查询账户 time.sleep(3) print("Press any key to QueryAccount.") input() self.trade.QueryAccount(qryParam) # 委托下单 time.sleep(1) print("Press any key to OrderAction.") input() order = XFinApi_TradeApi.Order() order.InstrumentID = cfg.InstrumentID order.Price = cfg.AskPrice1 order.Volume = 1 order.Direction = XFinApi_TradeApi.DirectionKind_Buy order.OpenCloseType = XFinApi_TradeApi.OpenCloseKind_Open # 下单高级选项,可选择性设置 order.ActionType = XFinApi_TradeApi.OrderActionKind_Insert # 下单 order.OrderType = XFinApi_TradeApi.OrderKind_Order # 标准单 order.PriceCond = XFinApi_TradeApi.PriceConditionKind_LimitPrice # 限价 order.VolumeCond = XFinApi_TradeApi.VolumeConditionKind_AnyVolume # 任意数量 order.TimeCond = XFinApi_TradeApi.TimeConditionKind_GFD # 当日有效 order.ContingentCond = XFinApi_TradeApi.ContingentCondKind_Immediately # 立即 order.HedgeType = XFinApi_TradeApi.HedgeKind_Speculation # 投机 self.trade.OrderAction(order)
def Test(self): # 创建ITrade char * path指xxx.exe同级子目录中的xxx.dll文件 self.trade = XFinApi_TradeApi.XFinApi_CreateTradeApi( "XTA_W32/Api/CTP_v6.3.6_20160606/XFinApi.CTPTradeApi.dll") if isinstance(self.trade, int): print("* Trade XFinApiCreateError={};".format( StrCreateErrors[self.trade])) return else: self.trade = self.trade[0] self.tradeEvent = TradeEvent(self.trade, self.cfg) self.trade.SetListener(self.tradeEvent) openParams = XFinApi_TradeApi.OpenParams() openParams.HostAddress = self.cfg.TradeAddress openParams.BrokerID = self.cfg.BrokerID openParams.UserID = self.cfg.UserName openParams.Password = self.cfg.Password openParams.IsUTF8 = True self.trade.Open(openParams) # 连接服务器 Cfg.SetNonTradeTime(); 非交易时段 # 连接成功后才能执行查询、委托等操作,检测方法有两种: # 1、ITrade.IsOpened() = true # 2、TradeListener.OnNotify中 # XFinApi_TradeApi.ActionKind_Open == notifyParams.ActionType and XFinApi_TradeApi.ResultKind_Success == notifyParams.ResultType while self.trade.IsOpened() != 1: time.sleep(1) qryParam = XFinApi_TradeApi.QueryParams() qryParam.InstrumentID = self.cfg.InstrumentID # 查询委托单 有些接口查询有间隔限制,如:CTP查询间隔为1秒 time.sleep(1) print("Press any key to QueryOrder.") input() self.trade.QueryOrder(qryParam) # 查询成交单 time.sleep(3) print("Press any key to QueryTradeOrder.") input() self.trade.QueryTradeOrder(qryParam) # 查询合约 time.sleep(3) print("Press any key to QueryInstrument.") input() self.trade.QueryInstrument(qryParam) # 查询持仓 time.sleep(3) print("Press any key to QueryPosition.") input() self.trade.QueryPosition(qryParam) # 查询账户 time.sleep(3) print("Press any key to QueryAccount.") input() self.trade.QueryAccount(qryParam) # 委托下单 time.sleep(1) print("Press any key to OrderAction.") input() order = XFinApi_TradeApi.Order() order.InstrumentID = self.cfg.InstrumentID order.Price = self.cfg.BidPrice1 order.Volume = 1 order.Direction = XFinApi_TradeApi.DirectionKind_Buy order.OpenCloseType = XFinApi_TradeApi.OpenCloseKind_Open # 下单高级选项,可选择性设置 order.ActionType = XFinApi_TradeApi.OrderActionKind_Insert # 下单 order.OrderType = XFinApi_TradeApi.OrderKind_Order # 标准单 order.PriceCond = XFinApi_TradeApi.PriceConditionKind_LimitPrice # 限价 order.VolumeCond = XFinApi_TradeApi.VolumeConditionKind_AnyVolume # 任意数量 order.TimeCond = XFinApi_TradeApi.TimeConditionKind_GFD # 当日有效 order.ContingentCond = XFinApi_TradeApi.ContingentCondKind_Immediately # 立即 order.HedgeType = XFinApi_TradeApi.HedgeKind_Speculation # 投机 self.trade.OrderAction(order)
def Test(self): # 创建ITrade char * path指xxx.exe同级子目录中的xxx.dll文件 self.trade = XFinApi_TradeApi.XFinApi_CreateTradeApi( "XTA_W32/Api/XTP_v1.1.18.13_20180516/XFinApi.XTPTradeApi.dll") if isinstance(self.trade, int): print("* Trade XFinApiCreateError={};".format( StrCreateErrors[self.trade])) return else: self.trade = self.trade[0] self.tradeEvent = TradeEvent(self.trade, self.cfg) self.trade.SetListener(self.tradeEvent) openParams = XFinApi_TradeApi.OpenParams() openParams.HostAddress = self.cfg.TradeAddress openParams.UserID = self.cfg.UserName openParams.Password = self.cfg.Password openParams.Configs["AuthCode"] = self.cfg.AuthCode openParams.Configs["ClientID"] = self.cfg.ClientID #可选 openParams.IsUTF8 = True self.trade.Open(openParams) # 连接成功后才能执行查询、委托等操作,检测方法有两种: # 1、self.trade.IsOpened() == 1 # 2、TradeEvent的OnNotify中 # XFinApi_TradeApi.ActionKind_Open == notifyParams.ActionType and XFinApi_TradeApi.ResultKind_Success == notifyParams.ResultType while self.trade.IsOpened() != 1: time.sleep(1) qryParam = XFinApi_TradeApi.QueryParams() # 查询委托单 有些接口查询有间隔限制,如:CTP查询间隔为1秒 time.sleep(1) print("Press any key to QueryOrder.") input() self.trade.QueryOrder(qryParam) # 查询成交单 time.sleep(3) print("Press any key to QueryTradeOrder.") input() self.trade.QueryTradeOrder(qryParam) # 查询合约 time.sleep(3) print("Press any key to QueryInstrument.") input() self.trade.QueryInstrument(qryParam) # 查询持仓 time.sleep(3) print("Press any key to QueryPosition.") input() self.trade.QueryPosition(qryParam) # 查询账户 time.sleep(3) print("Press any key to QueryAccount.") input() self.trade.QueryAccount(qryParam) # 委托下单 time.sleep(1) print("Press any key to OrderAction.") input() order = XFinApi_TradeApi.Order() order.ExchangeID = self.cfg.MarketID order.InstrumentID = self.cfg.InstrumentID order.Price = self.cfg.AskPrice1 order.Volume = 100 order.Direction = XFinApi_TradeApi.DirectionKind_Buy # 下单高级选项,可选择性设置 order.ActionType = XFinApi_TradeApi.OrderActionKind_Insert # 下单 order.OrderType = XFinApi_TradeApi.OrderKind_Order # 标准单 order.PriceCond = XFinApi_TradeApi.PriceConditionKind_LimitPrice # 限价 self.trade.OrderAction(order)
def Test(self): # 创建ITrade char * path指xxx.exe同级子目录中的xxx.dll文件 self.trade = XFinApi_TradeApi.XFinApi_CreateTradeApi("XTA_W32/Api/ESITap_v9.3.0.1_20160406/XFinApi.ESITapTradeApi.dll") if isinstance(self.trade,int): print("* Trade XFinApiCreateError={};".format(StrCreateErrors[self.trade])) return else: self.trade = self.trade[0] self.tradeEvent = TradeEvent(self.trade,self.cfg) self.trade.SetListener(self.tradeEvent) openParams = XFinApi_TradeApi.OpenParams() openParams.HostAddress = self.cfg.TradeAddress openParams.UserID = self.cfg.TradeUserName openParams.Password = self.cfg.TradePassword openParams.IsUTF8 = True self.trade.Open(openParams) # 连接成功后才能执行查询、委托等操作,检测方法有两种: # 1、self.trade.IsOpened() == 1 # 2、TradeEvent的OnNotify中 # XFinApi_TradeApi.ActionKind_Open == notifyParams.ActionType and XFinApi_TradeApi.ResultKind_Success == notifyParams.ResultType while self.trade.IsOpened() != 1: time.sleep(1) qryParam = XFinApi_TradeApi.QueryParams() # 查询委托单 有些接口查询有间隔限制,如:CTP查询间隔为1秒 time.sleep(1) print("Press any key to QueryOrder.") input() self.trade.QueryOrder(qryParam) # 查询成交单 time.sleep(3) print("Press any key to QueryTradeOrder.") input() self.trade.QueryTradeOrder(qryParam) # 查询合约 qryParam.ExchangeID = self.cfg.ExchangeID qryParam.ProductID = self.cfg.ProductID time.sleep(3) print("Press any key to QueryInstrument.") input() self.trade.QueryInstrument(qryParam) # 查询持仓 time.sleep(3) print("Press any key to QueryPosition.") input() self.trade.QueryPosition(qryParam) # 查询账户 time.sleep(3) print("Press any key to QueryAccount.") input() self.trade.QueryAccount(qryParam) # 委托下单 time.sleep(1) print("Press any key to OrderAction."); input() order = XFinApi_TradeApi.Order() order.InvestorID = self.cfg.TradeUserName