2021-08-22 tbpy帮助文档
TBPY 幫助文檔
1、安裝
- 安裝Anaconda
- 必須是python3.6
- 推薦版本[https://repo.anaconda.com/archive/Anaconda3-5.2.0-Windows-x86_64.exe]
- 必須是python3.6
- 安裝TBQuant內置tbpy
- pip離線安裝tbpy
- 打開命令行(Win + R,輸入cmd,點擊確定)
- 在命令行輸入:anaconda安裝路徑/Scripts/pip install whl文件[TBQuant安裝路徑/tbpy/tbpy-x.x.x.x-py3-none-any.whl] -U
- 如:C:/anaconda3/Scripts/pip install c:/TBQuant/tbpy/tbpy-x.x.x.x-py3-none-any.whl -U
- pip離線安裝tbpy
- 必須和tbquant為同一版本
2、約定
- 行情權限
- 有流量控制權限,如果頻繁查詢會失敗
- 有申請歷史范圍控制權限
- 有訂閱個數控制權限
- 交易權限
- 有下單控制權限
- 基礎數據權限
- 有系統基礎數據訪問權限
- 認證約定
- 無須認證,但必須先啟動TBQuant,與TBQuant共享用戶與權限
- 用戶需要開通tbpy權限,否則無法正常使用
3、初始化
- tbpy.init()
務須調用,返回True可正常工作
4、查詢數據
4.1 行情數據
4.1.1 get_history_n-查詢歷史行情最新N條
tbpy.get_history_n(symbol, frequency, count, flag=tbpy.QuoteFlag.Null, fields: list=None, timeout='30s')- 參數:
| symbol | str or list | 合約代碼。支持字符串格式,也支持[‘symbol1’, ‘symbol2’]這種列表格式。 |
| frequency | str | 周期。 |
| count | int | 歷史bar個數。 |
| flag | int | 取值為QuoteFlag,枚舉值可以或運算。默認無設置 |
| fields | list | 需要獲取的屬性。支持[‘field1’, ‘field2’]這種列表格式,默認值None表示獲取所有屬性。取值范圍[‘open’, ‘close’, ‘high’, ‘low’, ‘volume’, ‘position’,‘rollover’, ‘time’]。 |
| timeout | str | 超時時間設定,支持s結尾表示單位秒,默認30s。 |
-
返回值類型:
symbol為str格式:dict{field: ndarray}
symbol為list格式:dict{symbol: {field: ndarray}}
-
示例:
4.1.2 get_history-查詢歷史行情
tbpy.get_history(symbol, frequency, begin_time: datetime, end_time: datetime, flag=tbpy.QuoteFlag.Null, fields: list=None, timeout='30s')- 參數:
| symbol | str or list | 合約代碼。支持字符串格式,也支持[‘symbol1’, ‘symbol2’]這種列表格式。 |
| frequency | str | 周期。 |
| begin_time | datetime | 申請數據范圍的起始時間 |
| end_time | datetime | 申請數據范圍的結束時間 |
| flag | int | 取值為QuoteFlag,枚舉值可以或運算。默認無設置 |
| fields | str or list | 需要獲取的屬性。支持[‘field1’, ‘field2’]這種列表格式,默認值None表示獲取所有屬性。取值范圍[‘open’, ‘close’, ‘high’, ‘low’, ‘volume’, ‘position’,‘rollover’, ‘time’]。 |
| timeout | str | 超時時間設定,支持s結尾表示單位秒,默認30s。 |
-
返回值類型:
symbol為str格式:dict{field: ndarray}
symbol為list格式:dict{symbol: {field: ndarray}}
-
示例:
4.1.3 get_current_tick-查詢實時行情快照
tbpy.get_current_tick(symbol)- 參數:
| symbol | str or list | 合約代碼。支持字符串格式,也支持[‘symbol1’, ‘symbol2’]這種列表格式。 |
-
返回值類型:
symbol為str格式:成功返回 Tick,失敗返回None
symbol為list格式:list[Tick]
-
示例:
4.1.4 get_instrument-查詢合約
tbpy.get_instrument(symbol=None)-
參數:
參數名類型說明 symbol str or list or None 合約代碼。支持字符串格式,也支持[‘symbol1’, ‘symbol2’]這種列表格式。默認值None表示獲取所有合約 -
返回值類型:
symbol為str格式:成功返回 Instrument,失敗返回None
symbol為list格式:list[Instrument]
4.1.5 get_main_instrument-查詢期貨主力合約
tbpy.get_main_instrument(underlying_symbol=None)- 參數:
| underlying_symbol | str or list or None | 品種代碼。支持字符串格式,也支持[‘underlying_symbol1’, ‘underlying_symbol2’]這種列表格式。默認值None表示獲取所有主力合約 |
-
返回值類型:
symbol為str格式:成功返回Instrument,失敗返回None
symbol為list格式:list[Instrument]
4.1.6 write_history-寫入歷史行情數據
tbpy.write_history(symbol, frequency, filepath, timeout='30s')- 參數:
| symbol | str | 合約代碼。 |
| frequency | str | 周期。 |
| filepath | str | 文件路徑,文件格式支持csv格式。 |
| timeout | str | 超時時間設定,支持s結尾表示單位秒,默認30s。 |
- 返回值類型:
None or str。None表示寫入成功。非None表示失敗,返回失敗原因str
4.2 基礎數據
4.2.1 write_fundamental-寫入基礎數據
tbpy.write_fundamental(name, symbol, time: datetime, value)- 參數:
| name | str | 名稱(不支持中文且不能為空) |
| symbol | str | 合約代碼(不支持中文且不能為空) |
| time | datetime | 時間 |
| value | bool or int or float or str or ndarray | 寫入的值(不支持中文)。支持bool、int、float、str類型,ndarray支持bool、int、float、str的一維數組和二維數組。 |
-
返回值類型:
None or str。None表示寫入成功。非None表示失敗,返回失敗原因str
-
示例:
4.2.2 get_fundamental-查詢基礎數據
tbpy.get_fundamental(name, symbol=None, begin_time: datetime=None, end_time: datetime=None, timeout='30s')- 參數:
| name | str | 名稱(不支持中文且不能為空) |
| symbol | str or None | 合約代碼(不支持中文且不能為空), 為None則獲取所有 |
| begin_time | datetime or None | 開始時間, 為空默認為最小值 |
| end_time | datetime or None | 結束時間, 為空默認為最大值 |
| timeout | str | 超時時間設定,支持s結尾表示單位秒,默認30s。 |
- 返回值類型:
None or bool or int or float or str or ndarray。None表示讀取失敗,非None表示讀取的值 - 示例:
4.2.3 delete_fundamental-刪除基礎數據
tbpy.delete_fundamental(name, symbol=None, begin_time: datetime=None, end_time: datetime=None)- 參數:
| name | str | 名稱(不支持中文且不能為空) |
| symbol | str or None | 合約代碼(不支持中文且不能為空), 為None則刪除所有 |
| begin_time | datetime or None | 開始時間, 為空默認為最小值 |
| end_time | datetime or None | 結束時間, 為空默認為最大值 |
- 返回值類型:
None or str。None表示刪除成功。非None表示失敗,返回失敗原因str - 示例:
4.2.4 set_symbol_description-設置關聯信息描述
tbpy.set_symbol_description(symbol, description)-
參數:
參數名類型說明 symbol str 合約代碼(不支持中文且不能為空) description str 描述信息 -
返回值類型:
None or str。None表示設置成功。非None表示失敗,返回失敗原因str
-
示例:
4.2.5 set_name_description-設置關鍵字描述
tbpy.set_name_description(name, description)-
參數:
參數名類型說明 name str 名稱(不支持中文且不能為空), name必須已經存在 description str 描述信息 -
返回值類型:
None or str。None表示設置成功。非None表示失敗,返回失敗原因str
-
示例:
4.3 交易數據
4.3.1 get_account-查詢賬戶
tbpy.get_account(account_id, broker_id=0)- 參數
| account_id | str | 資金賬戶ID |
| broker_id | int | 經紀商ID |
-
返回值類型
賬戶存在且已登錄,返回Account,否則返回None。
-
示例:
4.3.2 send_order-下單
account.buy(symbol, volume, price) account.sell(symbol, volume, price) account.sell2short(symbol, volume, price) account.buy2cover(symbol, volume, price) account.send_order(symbol, volume, price, side, comb_offset, price_type=tbpy.PriceType.Limit)- 參數
| symbol | str | 合約代碼 |
| volume | int | 下單數量 |
| price | double | 下單價格 |
| side | OrderSide | 買賣方向 |
| comb_offset | CombOffsetFlag | 價格類型 |
| price_type | PriceType | 開平標志 |
-
返回值類型:
成功返回list[order_id],失敗返回None
注:order_id為int類型,且單個賬戶內唯一
-
示例:
account.sell2short(symbol='rb1910.SHFE', volume=1, price=4000) account.send_order(symbol='rb1910.SHFE', volume=1, price=4000, side=tbpy.OrderSide.Buy, comb_offset=tbpy.CombOffsetFlag.Open)
4.3.3 cancel_order-撤單
account.cancel_order(order_id)- 參數
| order_id | int | 報單索引 |
-
返回值類型:
None表示請求成功。非None表示失敗,返回失敗原因str
4.3.4 get_position-查詢持倉
account.get_position(symbol) account.get_position()- 參數
| symbol | str | 合約代碼 |
-
返回值類型:
帶symbol參數:成功返回Position,合約不存在,返回None
無參數:返回list[Position]
-
示例:
4.3.5 get_order-查詢委托
account.get_order(order_id) account.get_order(symbol) account.get_order()- 參數:
| order_id | int | 報單索引 |
| symbol | str | 合約代碼 |
-
返回值類型:
帶order_id參數:成功返回Order,失敗返回None
帶symbol參數:返回list[Order]
無參數:返回list[Order]
-
示例:
4.3.6 get_notrade_order-查詢未成交委托
account.get_notrade_order(symbol) account.get_notrade_order()- 參數
| symbol | str | 合約代碼 |
-
返回值類型:
帶symbol參數:返回list[Order]無參數:返回list[Order]
-
示例:
4.3.7 get_fill-查詢成交
account.get_fill(symbol, side, fill_id) account.get_fill(order_id)- 參數:
| symbol | str | 合約代碼 |
| side | OrderSide | 買賣方向 |
| fill_id | str | 成交編號(交易所) |
| order_id | int | 報單索引 |
-
返回值類型:
帶symbol、side、fill_id參數:成功返回Fill,失敗返回None帶order_id參數:返回list[Fill]
-
示例:
4.3.8 get_status-查詢賬戶狀態
account.get_status()-
參數:
無
-
返回值類型:
AccountStatus
-
示例:
4.4 其它
4.4.1 init-初始化
tbpy.init() #務須調用,返回True可正常工作-
參數:
無
-
返回值類型:
bool
-
示例:
4.4.2 exe-運行策略
tbpy.exe() #開始運行tbpy策略-
參數:
無
-
返回值類型:
無返回值
-
示例:
4.4.3 exit-終止策略運行
tbpy.exit()-
參數:
無
-
返回值類型:
無返回值
-
示例:
4.4.4 get_last_err-查詢最近一次錯誤信息
tbpy.get_last_err()-
參數:
無
-
返回值類型:
str
-
示例:
5、事件數據
5.1 on_init-初始化驅動
on_init(self, context)- 參數:
| context | Context | 上下文 |
- 示例:
5.2 on_tick-Tick數據驅動
on_tick(self, context, tick)- 參數:
| context | Context | 上下文 |
| tick | Tick | 主推的tick數據 |
- 示例:
5.3 on_bar-Bar數據驅動
on_bar(self, context, bars, symbol, flag)- 參數:
| context | Context | 上下文 |
| bars | list[Bar] | 主推的bar數據 |
| symbol | str | 合約代碼 |
| flag | int | 0 - 歷史,1 - 實時 |
- 示例:
5.4 on_position-持倉數據驅動
on_position(self, context, position)- 參數:
| context | Context | 上下文 |
| position | Position | 主推的持倉數據 |
- 示例:
5.5 on_order-委托數據驅動
on_order(self, context, order)- 參數:
| context | Context | 上下文 |
| order | Order | 主推的委托數據 |
- 示例:
5.6 on_fill-成交數據驅動
on_fill(self, context, fill)- 參數:
| context | Context | 上下文 |
| fill | Fill | 主推的成交數據 |
- 示例:
5.7 on_timer-定時器數據驅動
on_timer(self, context, timer_id, interval_millsecs)- 參數:
| context | Context | 上下文 |
| timer_id | int | 定時對象id |
| interval_millsecs | int | 定時間隔 |
- 示例:
6、Context-上下文
6.1 說明
context是策略運行上下文環境,除了內置的方法,用戶也可以隨意為其自定義屬性6.2 訂閱與退訂Tick數據
context.subscribe_tick(symbol) context.unsubscribe_tick(symbol)- 參數:
| symbol | str or list | 合約代碼。支持字符串格式,也支持[‘symbol1’, ‘symbol2’]這種列表格式。 |
- 返回值類型:
返回None表示成功,非None表示失敗,返回失敗原因str - 示例:
6.3 訂閱與退訂Bar數據
context.subscribe_bar(symbol, frequency, begin_time=None, sliding_window=1, flag=tbpy.QuoteFlag.Null) context.unsubscribe_bar(symbol, frequency)- 參數:
| symbol | str or list | 合約代碼。支持字符串格式,也支持[‘symbol1’, ‘symbol2’]這種列表格式。 |
| frequency | str | 周期 |
| begin_time | datatime | 開始時間,為None從當前時間開始 |
| sliding_window | int | 數據滑窗大小(on_bar每次回調的bar數),默認1 |
| flag | int | 取值為QuoteFlag,枚舉值可以或運算。默認無設置 |
- 返回值類型:
返回None表示成功,非None表示失敗,返回失敗原因str - 示例:
6.4 訂閱Account數據
context.subscribe_account(account_id)- 參數:
| account_id | str | 資金賬戶ID |
-
返回值類型:
賬戶存在且已登錄,如果訂閱成功,返回Account,否則返回None
-
示例:
6.5 創建與關閉定時器
context.create_timer(interval_millsecs, begin_time=None, trigger_count=-1) context.stop_timer(timer_id)- 參數:
| interval_millsecs | int | 定時間隔(ms) |
| begin_time | datetime | 起始時間,None表示當前時間 |
| trigger_count | int | 驅動次數,-1表示不限次數 |
| timer_id | int | 定時對象id |
- 返回值類型:
create_timer:int(timer_id)
stop_timer:無返回值
7、附錄
7.1 symbol-合約代碼
str類型
| 如 ‘rb1901.SHFE’ | 表示上期所的rb1901合約 |
| 如 ‘IF1902.CFFEX’ | 表示中金所的IF1902合約 |
| 如 ‘user’ | 表示自定義合約(不支持中文且不能為空) |
7.2 underlying_symbol-品種代碼
str類型
| 如 ‘rb.SHFE’ | 表示上期所的rb品種 |
| 如 ‘IF.CFFEX’ | 表示中金所的IF品種 |
7.3 frequency-周期
str類型,如‘3h’表示3小時周期。大于等于’d’時,只支持’1d’、‘1w’、‘1mon’。
| ‘tick’ | Tick |
| ‘s’ | 秒 |
| ‘m’ | 分鐘 |
| ‘h’ | 小時 |
| ‘d’ | 天 |
| ‘w’ | 周 |
| ‘mon’ | 月 |
7.4 Instrument-合約
對象類型
| symbol | str | 合約代碼 |
| exchange | str | 交易市場代碼 |
| sec_id | str | 代碼 (如 ‘rb1901’) |
| sec_name | str | 合約名稱 |
| price_tick | float | 最小變動價 |
| contract_unit | int | 交易單位 |
| big_point_value | float | 每點價值 |
| listed_date | datetime | 上市日期 |
| delisted_date | datetime | 退市日期 |
7.5 Tick-行情快照
對象類型
| time | datetime | 時間 |
| symbol | str | 合約代碼 |
| open | float | 開盤價 |
| high | float | 最高價 |
| low | float | 最低價 |
| last | float | 最新價 |
| limit_up | float | 漲停價 |
| limit_down | float | 跌停價 |
| pre_close | float | 昨收價 |
| pre_settlement | float | 昨結價 |
| volume | int | 最新成交量 |
| total_volume | int | 總成交量 |
| bidasks | list[BidAsk] | 5檔行情(不一定支持5檔) |
BidAsk
對象類型
| bid_p | float | 買價 |
| bid_v | int | 買量 |
| ask_p | float | 賣價 |
| ask_v | int | 賣量 |
7.6 Bar-Bar數據
對象類型
| symbol | str | 合約代碼 |
| frequency | str | 周期 |
| time | datetime | 開始時間 |
| open | float | 開盤價 |
| high | float | 最高價 |
| low | float | 最低價 |
| close | float | 收盤價 |
| turn_over | float | 成交金額 |
| volume | float | 成交量 |
| open_int | int | 持倉量 |
| rollover | float | 除權系數 |
7.7 exchange-交易所代碼
str類型
| ‘SHFE’ | 上海期貨交易所 |
| ‘DCE’ | 大連商品交易所 |
| ‘CZCE’ | 鄭州商品交易所 |
| ‘CFFEX’ | 中國金融期貨交易所 |
| ‘INE’ | 上海國際能源交易中心 |
| ‘SSE’ | 上海證券交易所 |
| ‘SZSE’ | 深圳證券交易所 |
7.8 Position-持倉
對象類型
| broker_id | int | 經濟公司ID |
| account_id | str | 資金賬戶ID |
| symbol | str | 合約代碼 |
| l_current_volume | int | 多頭當前持倉 |
| l_yesterday_volume | int | 多頭剩余昨倉 |
| l_active_volume | int | 多頭未成交的報單凈委托量 |
| l_active_close_volume | int | 多頭未成交的報單平倉委托量 |
| l_can_sell_volume | int | 多頭可平量 |
| l_market_value | float | 多頭持倉市值 |
| l_avg_price | float | 多頭均價(買均價,按結算價) |
| l_float_porfit | float | 多頭浮動盈虧(買盈虧,按結算價) |
| l_avg_price_o | float | 多頭均價(買均價,按成本價) |
| l_float_porfit_o | float | 多頭浮動盈虧(買盈虧,按成本價) |
| l_use_margin_amount | float | 多頭占用的保證金 |
| s_current_volume | int | 空頭當前持倉 |
| s_yesterday_volume | int | 空頭剩余昨倉 |
| s_active_volume | int | 空頭未成交的報單凈委托量 |
| s_active_close_volume | int | 空頭未成交的報單平倉委托量 |
| s_can_cover_volume | int | 空頭可平量 |
| s_market_value | float | 空頭持倉市值 |
| s_avg_price | float | 空頭均價(買均價,按結算價) |
| s_float_porfit | float | 空頭浮動盈虧(買盈虧,按結算價) |
| s_avg_price_o | float | 空頭均價(買均價,按成本價) |
| s_float_porfit_o | float | 空頭浮動盈虧(買盈虧,按成本價) |
| s_use_margin_amount | float | 空頭占用的保證金 |
7.9 Order-委托
對象類型
| broker_id | int | 經濟公司ID |
| account_id | str | 資金賬戶ID |
| symbol | str | 合約代碼 |
| order_id | int | 報單索引 |
| exch_order_id | str | 報單編號(交易所) |
| create_time | datetime | 報單委托時間 |
| volume | int | 委托量 |
| price | float | 委托價 |
| fill_volume | int | 成交量 |
| fill_amount | float | 成交金額 |
| side | OrderSide | 買賣方向 |
| comb_offset | CombOffsetFlag | 開平標志 |
| price_type | PriceType | 價格類型 |
| hedge | HedgeFlag | 投機套保 |
| status | OrderStatus | 報單狀態 |
| report_type | OrderReportType | 報單回報類型 |
| create_source | str | 報單源 |
| note | str | 詳細信息 |
7.10 Fill-成交
對象類型
| broker_id | int | 經濟公司ID |
| account_id | str | 資金賬戶ID |
| symbol | str | 合約代碼 |
| order_id | int | 報單索引 |
| exch_order_id | str | 報單編號(交易所) |
| volume | int | 委托量 |
| price | float | 委托價 |
| fill_id | str | 成交編號(交易所) |
| fill_time | datetime | 成交時間 |
| fill_volume | int | 成交量 |
| fill_price | float | 成交價 |
| side | OrderSide | 買賣方向 |
| comb_offset | CombOffsetFlag | 開平標志 |
| price_type | PriceType | 價格類型 |
| hedge | HedgeFlag | 投機套保 |
7.11 常量
7.11.1 OrderSide-買賣方向
OrderSide.Unknown OrderSide.Buy #買 OrderSide.Sell #賣7.11.2 PriceType-價格類型
PriceType.Unknown PriceType.Limit #限價 PriceType.Market #市價7.11.3 CombOffsetFlag-開平標識
CombOffsetFlag.Unknown CombOffsetFlag.Open #開倉 CombOffsetFlag.Close #平倉 CombOffsetFlag.CloseToday #平今 CombOffsetFlag.CloseYesterday #平昨7.11.4 HedgeFlag-投保類型
HedgeFlag.Unknown HedgeFlag.Speculatio #投機 HedgeFlag.Arbitrage #套利(不支持) HedgeFlag.Hedge #套保(不支持) HedgeFlag.MarketMaker #市商(不支持)7.11.5 OrderStatus-報單狀態
OrderStatus.Unknown OrderStatus.NewRequest #申請上報 OrderStatus.NewDone #申報成功 OrderStatus.NewReject #申報失敗 OrderStatus.PartialFill #部分成交 OrderStatus.AllFill #完全成交 OrderStatus.CanceledFill #部成部撤 OrderStatus.Canceled #已撤單7.11.6 OrderReportType-委托回報類型
OrderReportType.Unknown OrderReportType.NewRequest #申請上報 OrderReportType.NewReject #申報失敗 OrderReportType.NewDone #申報成功 OrderReportType.CancelRequest #發送撤單 OrderReportType.CancelReject #撤單被拒 OrderReportType.CancelDone #撤單成功 OrderReportType.FillReport #成交7.11.7 AccountStatus-賬戶狀態
AccountStatus.Unknown AccountStatus.Init #正在初始化 AccountStatus.Connecting #正在連接 AccountStatus.ConnectFail #連接失敗 AccountStatus.Disconnected #連接斷開 AccountStatus.Connected #連接成功 AccountStatus.DisconnectFail #斷開連接失敗 AccountStatus.Authenticating #正在認證 AccountStatus.AuthenticateFail #認證失敗 AccountStatus.Authenticated #認證完成 AccountStatus.Logout #登出成功 AccountStatus.Logining #正在登錄 AccountStatus.LoginFail #登錄失敗 AccountStatus.Logined #登錄成功 AccountStatus.SyncData #已登錄(同步數據中) AccountStatus.OnService #已登錄(服務中)7.11.8 QuoteFlag-行情標志
QuoteFlag.Null QuoteFlag.OnlyNight #僅夜盤 QuoteFlag.OnlyDay #僅日盤 QuoteFlag.RolloverBackWard #后復權tbpy幫助文檔官方下載地址:https://cdn.tbquant.net/markdown/TBPY/TBPY%E5%B8%AE%E5%8A%A9%E6%96%87%E6%A1%A3.md
總結
以上是生活随笔為你收集整理的2021-08-22 tbpy帮助文档的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python将图片按照标签分类复制到指定
- 下一篇: 北京大学计算机博士金钊,北京大学2019