Skip to main content

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"]时,当委托回调事件为对应委托的最后一次回调消息