FAQ范例
详见icetcore包路径中的..\Python38\Lib\site-packages\icetcore\sample
如何在合约代码和合约编码互相转换
getsymbol_id<=>symbollookup
print(api.getsymbol_id("TC.O.SSE.510050.202401.C.2.25")) #返回10006383
print(api.symbollookup("10006383"))#返回[{'TC.O.SSE.510050.202401.C.2.25': '510050 购 1月 2.25'}]
如何获取复权数据
在原始合约代码后加上 "/Q"为前复权,"/H"为后复权
his=api.getquotehistory(BarType.MINUTE,1,"TC.F.SHFE.rb.HOT",starttime="2022120101") #获取rb热门月的分K数据
his=api.getquotehistory(BarType.MINUTE,1,"TC.F.SHFE.rb.HOT/Q",starttime="2022120101")#获取rb热门月的分K前复权数据
his=api.getquotehistory(BarType.MINUTE,1,"TC.F.SHFE.rb.HOT/H",starttime="2022120101")#获取rb热门月的分K后复权数据
print(pd.DataFrame(his))
如何订阅实时行情
- 订阅实时行情
api.subquote(TC.F.SHFE.rb.HOT")
- 订阅510050全部月份期权实时行情
symbol=api.getallsymbol("OPT","SSE")
for sym in symbol:
if ".510050." in sym:
api.subquote(sym)
如何获取静态历史数据
his=api.getquotehistory(BarType.MINUTE,1,"TC.F.SHFE.rb.HOT",starttime="2022120101")
print(pd.DataFrame(his))
如何获取动态历史数据
动态历史数据需要创建一个继承QuoteEvent的子类,动态K线数据从onbar回调
from icetcore import (TCoreAPI,
QuoteEvent,
TradeEvent,
OrderStruct,
OrderSide,
TimeInForce,
OrderType,
PositionEffect)
import pandas as pd
import time
class APIEvent(QuoteEvent):
#连线成功通知apitype="quoteapi"是行情api的通知,"tradeapi"是交易通知
def onconnected(self,apitype:str):
print(apitype)
#断线成功通知
def ondisconnected(self,apitype:str):
print(apitype)
#subbar订阅的动态K线数据
def onbar(self,datatype,interval,symbol,data:list,isreal:bool):
print(pd.DataFrame(data))
#api=TCoreAPI(APIEvent)#icetcore 6.6之前版本
api=TCoreAPI(apppath="C:/AlgoMaster2/APPs64(DEV)",eventclass=APIEvent)#icetcore 6.6及之之后版本
re=api.connect()
time.sleep(1)
api.subbar(BarType.MINUTE,1,"TC.F.SHFE.rb.HOT",starttime="2022120101")
如何追单
追单参数O 格式:每次增加价格/跳数|追价几次|每次追价几秒|最后下市价或删单(M or C) OrderStruct.ChasePrice="1T|5|2|M"表示,每次追单增加1跳(T:跳,不带T就是价格数值加减1), 最多追5次,每次间隔2秒,追单次数用完后未成交转市价委托(M市价单,C取消委托)
OrderStruct.Symbol="TC.F.CZCE.SR.HOT"
OrderStruct.BrokerID=accoutlist[0]['BrokerID']
OrderStruct.Account=accoutlist[0]['Account']
OrderStruct.PositionEffect=PositionEffect.Auto #自动:开仓-平仓
OrderStruct.TimeInForce=TimeInForce.IOC #委托单有效时间:立即成交,否则取消
OrderStruct.Side=OrderSide.Sell #委托单买卖方向
OrderStruct.OrderType=OrderType.Limit #委托单类型:限价单
OrderStruct.Price=4044 #委托单价格
OrderStruct.OrderQty=100 #委托单数据
OrderStruct.ChasePrice="1T|5|2|M"
OrderStruct.Synthetic=0
OrderStruct.SelfTradePrevention=3
ordkey,msg=api.neworder(OrderStruct)
如何拆单
-
在咏春大师2量化版客户设定
设置->拆单委托设定
-
下单参数带入拆单参数
OrderStruct.Symbol="TC.F.CZCE.SR.HOT"
OrderStruct.BrokerID=accoutlist[0]['BrokerID']
OrderStruct.Account=accoutlist[0]['Account']
OrderStruct.PositionEffect=PositionEffect.Auto #自动:开仓-平仓
OrderStruct.TimeInForce=TimeInForce.IOC #委托单有效时间:立即成交,否则取消
OrderStruct.Side=OrderSide.Sell #委托单买卖方向
OrderStruct.OrderType=OrderType.Limit #委托单类型:限价单
OrderStruct.Price=4044 #委托单价格
#OrderStruct.StopPrice=4044 #停损价
OrderStruct.OrderQty=100 #委托单数据
OrderStruct.SlicedType=4
OrderStruct.DiscloseQty=1
OrderStruct.Synthetic=0
OrderStruct.SelfTradePrevention=3
ordkey,msg=api.neworder(OrderStruct)
- 拆单
OrderStruct.SlicedType=4
OrderStruct.DiscloseQty=1 #拆成1手1手的委托
- 冰山拆单
OrderStruct.SlicedType=1
OrderStruct.DiscloseQty=2
OrderStruct.Variance=50 #每次拆出1笔N手的委托,成交后再继续拆出下一笔委托(2-2*50%<=N<=2+2*50%)
- 定时拆单
OrderStruct.SlicedType=2
OrderStruct.DiscloseQty=2
OrderStruct.Variance=50 #每次拆出1笔N手的委托,成交后再继续拆出下一笔委托(2-2*50%<=N<=2+2*50%)
OrderStruct.Interval=1000 #间隔时间1000毫秒
OrderStruct.LeftoverAction=1
如何确定委托回报成交
当实时委托事件onordereportreal(self,data)的data数据中data["RecFillQty"]==["CumQty"]时,当委托回调事件为对应委托的最后一次回调消息