国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
幫助中心--掘金量化Python API文檔

快速開始

下載SDK

掘金量化平臺提供策略開發(fā)服務包(SDK)用于策略開發(fā)者實現自己的策略。SDK下載地址請點擊這里。Python SDK支持Windows + Python2.7/3.6 + 32位/64位、Linux Python2/3 x64共六種版本,下載時找到對應本地安裝的Python版本的SDK包。需要注意的是,此處所指的32位/64位不是指系統(tǒng)的版本,而是本地Python的版本。

安裝配置

  • 在Windows系統(tǒng),需要解壓下載的SDK包,雙擊安裝程序進行安裝。在安裝過程中,安裝程序會自行尋找Python安裝路徑,若提示找不到Python,需要手動添加注冊信息或重新安裝Python。若Python3.6不是安裝在個人文件夾下,需要以管理員權限運行SDK安裝程序。

  • 在Linux系統(tǒng),解壓ZIP文件,運行pip install xxxx.whl命令進行安裝;python3使用pip3 install xxxxx.whl 。Wheel文件名稱以發(fā)布為準。

我的第一個策略

方式一,直接使用例子運行

解壓SDK包,使用examples中的例子項目。

方式二,創(chuàng)建自己的策略

  1. 參考這里注冊賬號,登錄終端。

  2. 參考這里創(chuàng)建策略基本架構。編程語言選擇Python,訂閱上交所浦發(fā)銀行(證券代碼:600000)的Tick行情。

  3. 編寫自己的策略邏輯。

以下是一個完整的策略代碼示例額,策略邏輯:每收到一筆Tick行情,以最新價買入100股。

from gmsdk.api import StrategyBaseclass MyStrategy(StrategyBase):    def __init__(self, *args, **kwargs):        super(MyStrategy, self).__init__(*args, **kwargs)    def on_tick(self, tick):        self.open_long(tick.exchange, tick.sec_id, tick.last_price, 100)        print("OpenLong: exchange %s, sec_id %s, price %s" %                (tick.exchange, tick.sec_id, tick.last_price))if __name__ == '__main__':    ret = MyStrategy(        username='username',        password='password',        strategy_id='strategy_2',        subscribe_symbols='SHSE.600000.tick',        mode=2    ).run()    print(('exit code: ', ret))

4.編譯策略并運行。策略運行起來后,控制臺打印策略的每一筆下單記錄,在掘金終端的模擬交易中可查看該策略的運行詳情。

Python API范例

策略接口范例

策略構建

如何構建策略

構建策略的三種方式:

1.掘金終端構建自己的策略,然后在構建的策略類中重寫基類方法

2.修改SDK包中的例子,構建自己的策略類

3.參考API定義文檔,自定義策略類

策略運行

策略類應繼承自StrategyBase基類,并以方法重寫的方式滿足策略開發(fā)需求。然后調用子類實例的run()方法,運行策略。

class Strategy(StrategyBase):    ...strategy.run()
如何初始化策略

策略在運行前,必須先初始策略對象。需要指定挖金子賬戶、密碼、策略ID、訂閱代碼和運行模式。

示例:策略初始化并訂閱上交所浦發(fā)銀行的實時Tick數據和1min的Bar數據

方式一:以參數方式初始化策略

ret = Strategy(        username='demo@myquant.cn',        password='123456',        strategy_id='strategy_2',        subscribe_symbols='SHSE.600000.bar.60',        mode=2    )

策略支持四種運行模式及對應參數值:

  • 1.不接收行情流:1

  • 2.接收實時行情:2

  • 3.模擬行情模式:3

  • 4.回測模式:4

方式二:以配置文件方式初始化策略

策略初始化配置可以保存在*.ini為文件中,然后以文件路徑為參數初始化策略。

ret = Strategy(config_file='strategy.ini')

strategy.ini文件配置示例:

[strategy];掘金用戶名username=-;掘金密碼password=-;策略IDstrategy_id=3c7e70be-7e02-11e5-b293-5ec5d48ea63a;訂閱證券代碼或合約代碼列表subscribe_symbols=SHSE.600000.tick,SHSE.600000.bar.60;行情模式,2-實時行情模式,3-模擬行情模式,4-回放行情模式mode=2;交易服務地址,使用掘金終端交易時,地址為localhost:8001, 如果此項配置為空,則訂單發(fā)往掘金云服務器td_addr=localhost:8001
如何運行策略

完善策略邏輯后,先初始化策略,然后運行策略。策略運行后,策略開始接收數據并執(zhí)行策略邏輯

strategy.run()
如何停止策略

1.直接關閉程序來停止策略2.調用api方式停止策略

strategy.stop()

策略運行模式

策略支持三種運行模式:

1.實時行情模式:訂閱行情服務器推送的實時行情,也就是交易所的實時行情,只在交易時段提供。適用的場景是策略仿真交易和實盤交易階段。

2.模擬行情模式:模擬行情是近期的歷史行情,行情服務器將7*24小時不間斷循環(huán)推送,推送頻率近似實時行情。適用的場景是策略開發(fā)階段,主要就是能方便隨時隨地都能有數據,能開發(fā)/調試策略,不受交易時段的限制。

3.回測模式:訂閱指定時段、指定交易代碼、指定數據類型的行情,行情服務器將按指定條件全速回放對應的行情數據。適用的場景是策略回測階段,快速驗證策略的績效是否符合預期。

如何回測策略

策略使用回測模式初始化,并配置回測相關參數,即進入回測。

示例:回測上交所浦發(fā)銀行的daily數據, 回測時間為 2015-04-15 09:00:002015-05-15 15:00:00, 策略初始資金為1,000,000, 委托成交為全部成交, 手續(xù)費率為零, 滑點比率為零, 數據使用前復權.

方式一:在策略初始化后調用backtest_config()方法

strategy = Strategy(        username='demo@myquant.cn',        password='123456',        strategy_id='strategy_2',        subscribe_symbols='SHSE.600000.bar.daily',        mode=4,        td_addr='localhost:8001')strategy.backtest_config(        start_time='2015-04-15 9:00:00',        end_time='2015-05-15 15:00:00',        initial_cash=1000000,        transaction_ratio=1,        commission_ratio=0,        slippage_ratio=0,        price_type=1,        bench_symbol='SHSE.000300')

方式二:在配置文件中指定參數

strategy = Strategy(config_file='strategy.ini')

在strategy.ini配置文件中添加backtest節(jié)點

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;策略回測參數配置;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[backtest];歷史數據回放開始時間start_time=2015-04-15 09:00:00;歷史數據回放結束時間end_time=2015-05-15 15:00:00;策略初始資金initial_cash=1000000;委托量成交比率,默認=1(每個委托100%成交)transaction_ratio=1;手續(xù)費率,默認=0(不計算手續(xù)費)commission_ratio=0;滑點比率,默認=0(無滑點)slippage_ratio=0;行情復權模式,0=不復權,1=前復權price_type=1;基準bench_symbol=SHSE.000300
如何在非交易時間段調試策略

首先需關聯模擬交易通道。

示例:訂閱上交所浦發(fā)銀行Tick行情和1min的Bar的模擬行情

方式一,通過參數的方式設置:

ret = strategy("your user name",                "your password",                "strategy id",                "SHSE.600000.tick,SHSE.600000.bar.60",                3,                "localhost:8001")

方式二,通過配置方式初始化策略,策略的配置文件subscribe_symbols和mode節(jié)點設置如下:

;訂閱證券代碼或合約代碼列表subscribe_symbols=SHSE.600000.tick,SHSE.600000.bar.60;行情模式,2-實時行情模式,3-模擬行情模式,4-回放行情模式mode=3
如何設置策略仿真交易

首先需關聯仿真交易通道。

示例:訂閱上交所浦發(fā)銀行Tick行情和1min的Bar的實時行情

方式一,通過參數的方式設置:

ret = strategy("your user name",                "your password",                "strategy id",                "SHSE.600000.tick,SHSE.600000.bar.60",                2,                "localhost:8001")

方式二,通過配置方式初始化策略,策略的配置文件strategy節(jié)點設置如下:

;訂閱證券代碼或合約代碼列表subscribe_symbols=SHSE.600000.tick,SHSE.600000.bar.60;行情模式,2-實時行情模式,3-模擬行情模式,4-回放行情模式mode=2
如何設置策略實盤交易

1.關聯實盤交易通道

2.參考如何設置策略仿真交易,接收實時行情即可開始實盤交易。

策略事件

策略提供哪些事件

策略的基類提供策略3類事件:

1.登錄事件:策略初始化時觸發(fā)

2.行情數據事件:接收實時行情數據時觸發(fā),主要有Tick行情事件和Bar行情事件

3.交易相關事件:交易時觸發(fā),主要有下單、撤單、訂單回報事件

用戶重寫自己關注事件的回調方法完善策略邏輯。

策略登錄

如何處理策略登錄事件

策略在初始化時將觸發(fā)登錄事件,可以在自己的策略類中重寫策略基類的on_login方法,以便策略初始化時進行自定義操作

class Strategy(StrategyBase):    def on_login(self):        ...

數據接口范例

行情類型

掘金SDK提供回測行情、模擬行情、實時行情及歷史行情數據

1.回測行情、模擬行情和實時行情在訂閱了symbol后,在策略的on_tick方法和on_bar方法中接收行情數據

2.各頻率的歷史行情數據提供對應的API提取。

數據定義

數據類型分為tick數據和bar數據

1.Tick行情是指按交易所實際發(fā)送的行情數據

2.Bar數據是指各種頻率的行情數據,可訂閱 1分、15分、60分的實時Bar數據。

  1. 日頻數據提供DailyBar數據類型,日頻僅在回測和歷史數據提取時可用,不能實時訂閱。

行情訂閱方法

如何初始化行情接口

方式一,策略對象也提供行情接口,請參考如何初始化策略

方式二,獲取行情對象實例,然后調用行情接口獲取數據,該方式下僅獲取數據

from gmsdk import mdret = md.init("your user name", "your password")
如何訂閱指定證券代碼的tick行情

訂閱上交所浦發(fā)銀行和深交所平安銀行的Tick行情數據,訂閱的證券代碼格式定義詳細介紹請點擊這里

方式一,通過策略類對象訂閱實時行情

1.策略初始化時訂閱

ret = Strategy("your user name",                "your password",                "strategy id",                "SHSE.600000.tick,SZSE.000001.tick",                2,                "localhost:8001")

2.策略程序運行中訂閱

ret = strategy.subscribe("SHSE.600000.tick,SHSE.600000.bar.60")

方式二,通過行情類對象訂閱實時行情,該方式僅提供行情數據

1.行情類對象初始化時訂閱

from gmsdk import mdret = md.init("your user name",              "your password",              2,              "SHSE.600000.tick,SZSE.000001.tick")

2.程序運行過程中訂閱

ret = md.subscribe("SHSE.600000.tick,SZSE.000001.tick")
如何訂閱指定證券代碼的Bar行情

示例:訂閱上交所浦發(fā)銀行的1min Bar行情和深交所平安銀行的30s Bar行情

方式一,通過策略類對象訂閱實時行情

1.策略初始化時訂閱

ret = strategy("your user name",               "your password",               "strategy id",               "SHSE.600000.bar.60,SZSE.000001.bar.30",               3,               "localhost:8001")

2.策略運行過程中訂閱

ret = strategy.subscribe("SHSE.600000.bar.60,SZSE.000001.bar.30")

方式二,通過行情類對象訂閱實時行情,該方式僅提供行情數據

1.行情類對象初始化時訂閱

ret = md.init("your user name",              "your password",              2,              "SHSE.600000.bar.60,SZSE.000001.bar.30")

2.程序運行過程中訂閱

ret = md.subscribe("SHSE.600000.bar.60,SZSE.000001.bar.30")
如何訂閱指定證券代碼的日頻行情

日頻行情(DailyBar)僅在策略回測時訂閱使用,其他策略運行模式下訂閱將接收不到日頻行情

示例:訂閱上交所浦發(fā)銀行的日頻行情和深交所平安銀行的日頻行情

通過策略類對象訂閱實時行情

1.策略初始化時訂閱

ret = strategy("your user name",               "your password",               "strategy id",               "SHSE.600000.bar.daily,SZSE.000001.bar.daily",               3,               "localhost:8001")

2.策略運行中訂閱

ret = strategy.subscribe("SHSE.600000.daily,SZSE.000001.daily")
如何退訂指定證券代碼的行情

示例:退訂上交所浦發(fā)銀行的tick行情和深交所平安銀行的1min Bar行情

方式一,通過策略類對象退訂:

ret = strategy.unsubscribe("SHSE.600000.tick,SZSE.000001.bar.60")

方式二,通過行情類對象退訂:

ret = md.unsubscribe("SHSE.600000.tick,SZSE.000001.bar.60")

歷史數據提取

如何提取指定時間的Tick數據

示例:提取上交所浦發(fā)銀行和深交所平安銀行 2015-10-29 9:30:002015-10-29 15:00:00Tick數據

方式一,通過策略類對象接口提取

ticks = strategy.get_ticks("SHSE.600000,SZSE.000001",                           "2015-10-29 9:30:00",                           "2015-10-29 15:00:00")

方式二,通過行情類對象接口提取

ticks = md.get_ticks("SHSE.600000,SZSE.000001",                     "2015-10-29 9:30:00",                     "2015-10-29 15:00:00")
如何提取指定時間的Bar數據

示例:提取上交所浦發(fā)銀行和深交所平安銀行2015-10-29 10:00:00到2015-10-29 15:00:00的1min Bar數據,提取30s、5min頻率的bar數據修改參數bar_type為30、300即可。

方式一,通過策略類對象接口提取

bars = strategy.get_bars("SHSE.600000,SZSE.000001",                         60,                         "2015-10-29 10:00:00",                         "2015-10-29 15:00:00")

方式二,通過行情類對象接口提取

bars = md.get_bars("SHSE.600000,SZSE.000001",                   60,                  "2015-10-29 10:00:00",                  "2015-10-29 15:00:00")
如何提取指定日期的日頻數據

示例:提取上交所浦發(fā)銀行和深交所平安銀行2014-10-29到2015-10-29 的日頻數據(DailyBar)。

方式一,通過策略類對象接口提取

daily_bars = strategy.get_dailybars("SHSE.600000,SZSE.000001", "2014-10-29", "2015-10-29")

方式二,通過行情類對象接口提取

daily_bars = md.get_dailybars("SHSE.600000,SZSE.000001","2014-10-29", "2015-10-29")
如何提取最近N筆tick數據

示例:提取上交所浦發(fā)銀行和深交所平安銀行最近100筆Tick數據

方式一,通過策略類對象接口提取

ticks = strategy.get_last_n_ticks("SHSE.600000,SZSE.000001", 100)

方式二,通過行情類對象接口提取

ticks = md.get_last_n_ticks("SHSE.600000,SZSE.000001", 100)
如何提取最近N個Bar數據

示例:提取上交所浦發(fā)銀行和深交所平安銀行最近20筆1min頻率的Bar數據,提取30s、5min頻率的bar數據修改參數bar_type為30、300即可。

方式一,通過策略類對象接口提取

bars = strategy.get_last_n_bars("SHSE.600000,SZSE.000001", 60, 20)

方式二,通過行情類對象接口提取

bars = md.get_last_n_bars("SHSE.600000,SZSE.000001", 60, 20)
如何提取最近N個交易日的日頻數據

示例:提取上交所浦發(fā)銀行和深交所平安銀行最近20筆日頻數據(DailyBar)

方式一,通過策略類對象接口提取

daily_bars = strategy.get_last_n_dailybars("SHSE.600000,SZSE.000001", 20)

方式二,通過行情類對象接口提取

daily_bars = md.get_last_n_dailybars("SHSE.600000,SZSE.000001", 20)
如何提取最近1筆tick數據

示例:提取上交所浦發(fā)銀行和深交所平安銀行最近1筆Tick數據

方式一,通過策略類對象接口提取

ticks = strategy.get_last_ticks("SHSE.600000,SZSE.000001")

方式二,通過行情類對象接口提取

ticks = md.get_last_ticks("SHSE.600000,SZSE.000001")
如何提取最近1個Bar數據

示例:提取上交所浦發(fā)銀行和深交所平安銀行最近1個1min頻率的Bar數據,提取30s、5min頻率的bar數據修改參數bar_type為30、300即可。

方式一,通過策略類對象接口提取

bars = strategy.get_last_bars("SHSE.600000,SZSE.000001", 60)

方式二,通過行情類對象接口提取

bars = md.get_last_bars("SHSE.600000,SZSE.000001", 60)
如何提取最近1筆日頻數據

示例:提取上交所浦發(fā)銀行和深交所平安銀行最近1筆日頻數據(DailyBar)

方式一,通過策略類對象接口提取

daily_bars = strategy.get_last_dailybars("SHSE.600000,SZSE.000001")

方式二,通過行情類對象接口提取

daily_bars = md.get_last_dailybars("SHSE.600000,SZSE.000001")

行情事件方法

如何處理tick事件和bar事件

tick、bar事件在接收實時行情時觸發(fā),在tick和bar事件的回調方法on_tickon_bar中可接收訂閱的Tick行情和Bar行情

方式一,在策略類中處理

在自己的策略類中重寫策略基類的on_tick、on_bar方法。

class Strategy(StrategyBase):    def on_tick(self, tick):        ...    def on_bar(self, bar):        ...

方式二,在純行情模式中處理

1.編寫tick事件和bar事件的回調方法

def on_tick(tick):    ...def on_bar(bar):    ...

2.訂閱tick事件和bar事件

md.ev_tick += on_tickmd.ev_bar += on_bar
如何處理行情狀態(tài)事件

在自己的策略類中重寫策略基類的on_md_event方法,行情狀態(tài)事件在開盤、收盤、回放行情結束時觸發(fā)

class Strategy(StrategyBase):    def on_md_event(self, evt):        ...

交易接口范例

交易相關數據類型

交易涉及到持倉Position、委托Order、成交回報ExecRpt、資金Cash、績效指標Indicator等數據類型。

委托

如何開多倉

示例:市價買入1000股上交所浦發(fā)銀行股票,市價開1手IF1512的多單

注意:股票、基金等現貨品種只有買入和賣出,對應下單類型是開多倉open_long和平多倉close_long;

方式一,調用開多倉的異步接口open_long

1.在策略類的方法中調用,必須在策略執(zhí)行了Run方法后調用有效

class Strategy(StrategyBase):    def on_some_event(self): ## eg. def on_tick(self, tick):        self.open_long("SHSE", "600000", 0, 1000)        self.open_long("CFFEX", "IF1512", 0,  1)Strategy(...).run()

2.通過交易服務類對象調用,必須執(zhí)行對象的Run方法后調用有效

from gmsdk import tddef on_some_event():    td.open_long("SHSE", "600000", 0, 1000)    td.open_long("CFFEX", "IF1512", 0,  1)td.ev_some_event += on_some_eventtd.init(...)td.run()

方式二,調用開多倉的同步接口open_long_sync,無需策略執(zhí)行Run方法

1.通過策略類對象調用

strategy = Strategy(...)strategy.open_long_sync("SHSE", "600000", 0, 1000)strategy.open_long_sync("CFFEX", "IF1512", 0,  1)

2.通過交易服務類對象調用

from gmsdk import tdtd.init(...)td.open_long_sync("SHSE", "600000", 0, 1000)td.open_long_sync("CFFEX", "IF1512", 0,  1)
如何平多倉

示例:市價賣出1000股上交所浦發(fā)銀行股票,市價平1手IF1512的多單

注意:股票、基金等現貨品種只有買入和賣出,對應下單類型是開多倉open_long和平多倉close_long;

方式一,調用平多倉的異步接口close_long

1.在策略類的方法中調用接口,必須在策略執(zhí)行了Run方法后調用有效

class Strategy(StrategyBase):    def on_some_event(self): ## eg. def on_tick(self, tick):        self.close_long("SHSE", "600000", 0, 1000)        self.close_long("CFFEX", "IF1512", 0,  1)Strategy(...).run()

2.通過交易服務類對象調用接口,必須執(zhí)行對象的Run方法后調用有效

from gmsdk import tddef on_some_event(): ##eg. def on_tick(tick):    td.close_long("SHSE", "600000", 0, 1000)    td.close_long("CFFEX", "IF1512", 0,  1)td.ev_some_event += on_some_event ##eg. td.ev_tick += on_ticktd.init(...)td.run()

方式二,調用平多倉的同步接口close_long_sync,無需策略執(zhí)行Run方法

1.通過策略類對象調用接口

strategy = Strategy(...)strategy.close_long_sync("SHSE", "600000", 0, 1000)strategy.close_long_sync("CFFEX", "IF1512", 0,  1)

2.通過交易服務類對象調用接口

from gmsdk import tdtd.init(...)td.close_long_sync("SHSE", "600000", 0, 1000)td.close_long_sync("CFFEX", "IF1512", 0,  1)
如何開空倉

示例:市價開1手IF1512的空單

方式一,調用開空倉的異步接口open_short

1.在策略類的方法中調用接口,必須在策略執(zhí)行了Run方法后調用有效

class Strategy(StrategyBase):    def on_some_event(self): ## eg. def on_tick(self, tick):        self.open_short("CFFEX", "IF1512", 0,  1)Strategy(...).run()

2.通過交易服務類對象調用接口,必須執(zhí)行對象的Run方法后調用有效

from gmsdk import tddef on_some_event(): ##eg. def on_tick(tick):    td.open_short("CFFEX", "IF1512", 0,  1)td.ev_some_event += on_some_event ##eg. td.ev_tick += on_ticktd.init(...)td.run()

方式二,調用開空倉的同步接口open_short_sync,無需策略執(zhí)行Run方法

1.通過策略類對象調用接口

strategy = Strategy(...)order_ret = strategy.open_short_sync("CFFEX", "IF1512", 0,  1)

2.通過交易服務類對象調用接口

from gmsdk import tdtd.init(...)td.open_short_sync("CFFEX", "IF1512", 0,  1)
如何平空倉

示例:市價平1手IF1512的空單

方式一,調用平空倉的異步接口close_short

1.在策略類的方法中調用接口,必須在策略執(zhí)行了Run方法后調用有效

class Strategy(StrategyBase):    def on_some_event(self): ## eg. def on_tick(self, tick):        self.close_short("CFFEX", "IF1512", 0,  1)Strategy(...).run()

2.通過交易服務類對象調用接口,必須執(zhí)行對象的Run方法后調用有效

from gmsdk import tddef on_some_event(): ##eg. def on_tick(tick):    td.close_short("CFFEX", "IF1512", 0,  1)td.ev_some_event += on_some_event ##eg. td.ev_tick += on_ticktd.init(...)td.run()

方式二,調用平空倉的同步接口close_short_sync,無需策略執(zhí)行Run方法

1.通過策略類對象調用接口

strategy = Strategy(...)order_ret = strategy.close_short_sync("CFFEX", "IF1512", 0,  1)

2.通過交易服務類對象調用接口

from gmsdk import tdtd.init(...)td.close_short_sync("CFFEX", "IF1512", 0,  1)
如何自定義下單

示例:市價開1手IF1512的多單

定義委托單對象

order = Order()order.exchange = "CFFEX"order.sec_id = "IF1512"order.side = 1order.position_effect = 1order.price = 0order.volume = 1            

說明:

order.side: 設置買賣方向OrderSide

order.position_effect:設置開平類型PositionEffect,上期所可設置平今平昨

order.price:價格為0則表示市價單,否則為限價單

方式一,調用原生下單的異步接口place_order

1.在策略類的方法中調用接口,必須在策略執(zhí)行了Run方法后調用有效

class Strategy(StrategyBase):    def on_some_event(self): ## eg. def on_tick(self, tick):        self.place_order(order)Strategy(...).run()

2.通過交易服務類對象調用接口,必須執(zhí)行對象的Run方法后調用有效

from gmsdk import tddef on_some_event(): ##eg. def on_tick(tick):    td.place_order(order)td.ev_some_event += on_some_event ##eg. td.ev_tick += on_ticktd.init(...)td.run()

方式二,調用原生下單的同步接口place_order_sync,無需策略執(zhí)行Run方法

1.通過策略類對象調用接口

strategy = Strategy(...)strategy.place_order_sync(order)

2.通過交易服務類對象調用接口

from gmsdk import tdtd.init(...)td.place_order_sync(order);
如何撤回未成交訂單

方式一,調用異步撤單接口cancel_order

1.在策略類的方法中調用接口,必須在策略執(zhí)行了Run方法后調用有效

class Strategy(StrategyBase):    def on_some_event(self): ## eg. def on_tick(self, tick):        self.cancel_order(order_id)Strategy(...).run()

2.通過交易服務類對象調用接口,必須執(zhí)行對象的Run方法后調用有效

from gmsdk import tddef on_some_event(): ##eg. def on_tick(tick):    td.cancel_order(order_id)td.ev_some_event += on_some_event ##eg. td.ev_tick += on_ticktd.init(...)td.run()

方式二,調用同步撤單接口cancel_order_sync,無需策略執(zhí)行Run方法

1.通過策略類對象調用接口

strategy = Strategy(...)strategy.cancel_order(order_id)      

2.通過交易服務類對象調用接口

from gmsdk import tdtd.init(...)td.cancel_order(order_id)
如何查詢指定委托當前詳情

1.在策略類的方法中調用接口

class Strategy(StrategyBase):    def on_some_event(self): ## eg. def on_tick(self, tick):        order = self.get_order(order_id)Strategy(...).run()

2.通過交易服務類對象調用接口

from gmsdk import tddef on_some_event(): ##eg. def on_tick(tick):    order = td.get_order(order_id)td.ev_some_event += on_some_event ##eg. td.ev_tick += on_ticktd.init(...)td.run()

回報

訂單的回報以交易事件的方式給出,當前提供的交易事件有:

  1. 委托執(zhí)行回報事件

  2. 訂單拒絕事件

  3. 訂單被柜臺接受事件

  4. 訂單狀態(tài)變更事件

  5. 訂單全部成交事件

  6. 訂單部分成交事件

  7. 訂單停止成交事件

  8. 訂單撤單成功事件

  9. 訂單撤單拒絕事件

具體事件處理請參考交易事件處理章節(jié)

資金

如何查詢資金

調用get_cash方法查詢當前策略的資金信息。

  1. 在策略類的方法中直接調用接口
class Strategy(StrategyBase):    def on_some_event(self): ## eg. def on_tick(self, tick):        cash = self.get_cash()Strategy(...).run()
  1. 通過交易服務類對象調用接口
from gmsdk import tddef on_some_event(): ##eg. def on_tick(tick):    cash = td.get_cash()td.ev_some_event += on_some_event ##eg. td.ev_tick += on_ticktd.init(...)td.run()

持倉

如何獲取指定證券代碼的持倉

調用get_position方法查詢單一交易品種的持倉情況。

示例:獲取上交所浦發(fā)銀行持倉情況

  1. 在策略類的方法中直接調用持倉接口
class Strategy(StrategyBase):    def on_some_event(self): ## eg. def on_tick(self, tick):        postion = self.get_position("SHSE", "600000", 1)Strategy(...).run()
  1. 通過交易服務類對象調用持倉接口
from gmsdk import tddef on_some_event(): ##eg. def on_tick(tick):    postion = td.get_position("SHSE", "600000", 1)td.ev_some_event += on_some_event ##eg. td.ev_tick += on_ticktd.init(...)td.run()
如何獲取當前策略的全部持倉信息

調用get_positions方法獲取當前策略的全部持倉信息。

  1. 在策略類的方法中直接調用接口
class Strategy(StrategyBase):    def on_some_event(self): ## eg. def on_tick(self, tick):        pos_list = self.get_positions()Strategy(...).run()
  1. 通過交易服務類對象調用接口
from gmsdk import tddef on_some_event(): ##eg. def on_tick(tick):    pos_list = td.get_positions()td.ev_some_event += on_some_event ##eg. td.ev_tick += on_ticktd.init(...)td.run()

績效

如何獲取當前策略的績效指標

調用get_indicator方法獲取當前策略的績效指標。

  1. 在策略類的方法中直接調用接口
class Strategy(StrategyBase):    def on_some_event(self): ## eg. def on_tick(self, tick):        indicator = self.get_indicator()Strategy(...).run()
  1. 通過交易服務類對象調用接口
from gmsdk import tddef on_some_event(): ##eg. def on_tick(tick):    indicator = td.get_indicator()td.ev_some_event += on_some_event ##eg. td.ev_tick += on_ticktd.init(...)td.run()

交易事件

當我們在程序下一筆委托單到交易服務時,將產生一系列交易事件

如何處理訂單執(zhí)行回報事件

方式一,在策略類中處理

在自己的策略類中重寫策略基類的on_execrpt方法,on_execrpt方法在委托執(zhí)行時觸發(fā),訂單的任何執(zhí)行回報都會觸發(fā)本事件

class Strategy(StrategyBase):    def on_execrpt(self, rpt):        ...Strategy(...).run()

方式二,通過交易服務類對象處理

  1. 編寫委托執(zhí)行的回調方法
def on_execrpt(rpt):    ...
  1. 訂閱委托執(zhí)行事件
from gmsdk import tdtd.ev_execrpt += on_execrpttd.init(...).run()
如何處理訂單拒絕事件

方式一,在策略類中處理

在自己的策略類中重寫策略基類的on_order_rejected方法,on_order_rejected方法在訂單拒絕時觸發(fā)

class Strategy(StrategyBase):    def on_order_rejected(self, order):        ...Strategy(...).run()

方式二,通過交易服務類對象處理

  1. 編寫委訂單拒絕的回調方法
def on_order_rejected(order):    ...
  1. 訂閱訂單拒絕事件
from gmsdk import tdtd.ev_order_rejected += on_order_rejectedtd.init(...)td.run()
如何處理訂單被交易所接收事件

方式一,在策略類中處理

在自己的策略類中重寫策略基類的on_order_new方法,當訂單已被交易所接受時觸發(fā)

class Strategy(StrategyBase):    def on_order_new(self, order):        ...ret = Strategy(...).run()

方式二,通過交易服務類對象處理

  1. 編寫訂單接收的回調方法
def on_order_new(order):   ...
  1. 訂閱訂單接收事件
from gmsdk import tdtd.ev_order_new += on_order_newtd.init(...)td.run()
如何處理訂單狀態(tài)更新事件

方式一,在策略類中處理

在自己的策略類中重寫策略基類的on_order_status方法,當訂單狀態(tài)更新時觸發(fā)

class Strategy(StrategyBase):    def on_order_status(self, order):        ...ret = Strategy(...).run()

方式二,通過交易服務類對象處理

  1. 編寫訂單接收的回調方法
def on_order_status(order):   ...
  1. 訂閱訂單狀態(tài)更新事件
from gmsdk import tdtd.ev_order_status += on_order_statustd.init(...)td.run()
如何處理訂單全部成交事件

方式一,在策略類中處理

在自己的策略類中重寫策略基類的on_order_filled方法,當一筆訂單完全成交時觸發(fā)

class Strategy(StrategyBase):    def on_order_filled(self, order):        ...Strategy(...).run()

方式二,通過交易服務類對象處理

  1. 編寫訂單全成的回調方法
def on_order_filled(order):    ...
  1. 訂閱訂單全成事件
from gmsdk import tdtd.ev_order_filled += on_order_filledtd.init(...)td.run()
如何處理委托單部分成交的事件

方式一,在策略類中處理

在自己的策略類中重寫策略基類的on_order_partially_filled方法,當一筆訂單有部分成交時觸發(fā)

class Strategy(StrategyBase):   def on_order_partially_filled(self, order):       ...Strategy(...).run()

方式二,通過交易服務類對象處理

  1. 編寫訂單部分成交的回調方法
def on_order_partially_filled(order):    ...
  1. 訂閱訂單部分成交事件
from gmsdk import tdtd.ev_order_partially_filled += on_order_partially_filledtd.init(...)td.run()
如何處理停止訂單執(zhí)行事件

方式一,在策略類中處理

在自己的策略類中重寫策略基類的on_order_stop_executed方法,當訂單停止執(zhí)行時觸發(fā),例如限價單收市時還未成交

class Strategy(StrategyBase):    def on_order_stop_executed(self, order):        ...Strategy(...).run()

方式二,通過交易服務類對象處理

  1. 編寫訂單停止執(zhí)行的回調方法
def on_order_stop_executed(order):    ...
  1. 訂閱訂單停止執(zhí)行事件
from gmsdk import tdtd.ev_order_stop_executed += on_order_stop_executedtd.init(...)td.run()
如何處理撤單拒絕事件

方式一,在策略類中處理

在自己的策略類中重寫策略基類的on_order_cancel_rejected方法,當撤單拒絕時觸發(fā)

class Strategy(StrategyBase):    def on_order_cancel_rejected(self, order):        ...Strategy(...).run()

方式二,通過交易服務類對象處理

  1. 編寫訂單停止執(zhí)行的回調方法
def on_order_cancel_rejected(rpt):   ...
  1. 訂閱訂單撤單拒絕事件
from gmsdk import tdtd.ev_order_cancel_rejected += on_order_cancel_rejectedtd.init(...)td.run()
如何處理委托撤單成功事件

方式一,在策略類中處理

在自己的策略類中重寫策略基類的on_order_cancelled方法,當委托單的狀態(tài)發(fā)生變化時觸發(fā)

class Strategy(StrategyBase):    def on_order_cancelled(self, order):        ...Strategy(...).run()

方式二,通過交易服務類對象處理

  1. 編寫委托單狀態(tài)變化的回調方法
def on_order_cancelled(order):    ...
  1. 訂閱撤單成功事件
from gmsdk import tdtd.ev_order_cancelled += on_order_cancelledtd.init(...)td.run()

錯誤與版本等接口范例

如何獲取API版本信息

調用get_version方法。

import gmsdkgmsdk.get_version()
如何獲取API返回值及錯誤事件參數值的文本信息

API返回值及錯誤事件的參數值都有統(tǒng)一的定義,調用get_strerror方法獲取返回值對應的文本信息。

如何獲取策略運行中的錯誤信息

在自己的策略類中重寫策略基類的on_error方法,當策略執(zhí)行過程有任何錯誤都會回調該方法,通過參數獲取錯誤信息

class Strategy(StrategyBase):    def on_error(self, error_code, error_msg):        ...Strategy(...).run()

Python API接口

枚舉常量定義

OrderStatus

訂單狀態(tài)。

OrderStatus_New = 1,                        #已報OrderStatus_PartiallyFilled = 2,            #部成OrderStatus_Filled = 3,                     #已成OrderStatus_DoneForDay = 4,                 #OrderStatus_Canceled = 5,                   #已撤OrderStatus_PendingCancel = 6,              #待撤OrderStatus_Stopped = 7,                    #停止OrderStatus_Rejected = 8,                   #已拒絕OrderStatus_Suspended = 9,                  #掛起OrderStatus_PendingNew = 10,                #待報OrderStatus_Calculated = 11,                #計算OrderStatus_Expired = 12,                   #已過期OrderStatus_AcceptedForBidding = 13,        #接受競價OrderStatus_PendingReplace = 14             #待修改

OrderRejectReason

訂單拒絕原因。

OrderRejectReason_UnknownReason = 1,                #未知原因OrderRejectReason_RiskRuleCheckFailed = 2,          #不符合風控規(guī)則OrderRejectReason_NoEnoughCash = 3,                 #資金不足OrderRejectReason_NoEnoughPosition = 4,             #倉位不足OrderRejectReason_IllegalStrategyID = 5,            #非法策略IDOrderRejectReason_IllegalSymbol = 6,                #非法交易標的OrderRejectReason_IllegalVolume = 7,                #非法委托量OrderRejectReason_IllegalPrice = 8,                 #非法委托價OrderRejectReason_NoMatchedTradingChannel = 9,      #沒有匹配的交易通道OrderRejectReason_AccountForbidTrading = 10,        #交易賬號被禁止交易OrderRejectReason_TradingChannelNotConnected = 11,  #交易通道未連接OrderRejectReason_StrategyForbidTrading = 12,       #策略不允許交易OrderRejectReason_NotInTradingSession = 13          #非交易時段CancelOrderRejectReason_OrderFinalized = 101        #訂單已是最終狀態(tài)CancelOrderRejectReason_UnknownOrder = 102          #未知訂單CancelOrderRejectReason_BrokerOption = 103          #柜臺拒絕CancelOrderRejectReason_AlreadyInPendingCancel = 104        #重復撤單

OrderSide

訂單方向。

OrderSide_Bid = 1  ## 多方向OrderSide_Ask = 2  ## 空方向

OrderType

訂單類型。

OrderType_LMT = 0,       ## 限價委托(limit)                        OrderType_BOC = 1,       ## 對方最優(yōu)價格(best of counterparty)     OrderType_BOP = 2,       ## 己方最優(yōu)價格(best of party)            OrderType_B5TC = 3,      ## 最優(yōu)五檔剩余撤銷(best 5 then cancel)   OrderType_B5TL = 4,      ## 最優(yōu)五檔剩余轉限價(best 5 then limit)  OrderType_IOC = 5,       ## 即時成交剩余撤銷(immediately or cancel)OrderType_FOK = 6,       ## 即時全額成交或撤銷(fill or kill)       OrderType_AON = 7,       ## 全額成交或不成交(all or none)          OrderType_MTL = 8,       ## 市價剩余轉限價(market then limit)      OrderType_EXE = 9        ## 期權行權(option execute)  

ExecType

訂單執(zhí)行回報類型。

ExecType_New = 1                ## 交易所已接受訂單ExecType_DoneForDay = 4ExecType_Canceled = 5           ## 已撤ExecType_PendingCancel = 6      ## 待撤ExecType_Stopped = 7            ## 已停ExecType_Rejected = 8           ## 已拒絕ExecType_Suspended = 9          ## 暫停ExecType_PendingNew = 10        ## 待接受ExecType_Calculated = 11        ## 已折算ExecType_Expired = 12           ## 過期ExecType_Restated = 13          ## 重置ExecType_PendingReplace = 14    ## 待修改ExecType_Trade = 15             ## 交易ExecType_TradeCorrect = 16      ## 交易更正ExecType_TradeCancel = 17       ## 交易取消ExecType_OrderStatus = 18       ## 更新訂單狀態(tài)ExecType_CancelRejected = 19    ## 撤單被拒絕

PositionEffect

開平倉類型。

PositionEffect_Open = 1             ## 開倉PositionEffect_Close = 2            ## 平倉PositionEffect_CloseToday = 3       ## 平今倉PositionEffect_CloseYesterday = 4   ## 平昨倉

交易數據類型

交易數據類型主要包括委托,執(zhí)行回報,資金,持倉,績效等數據類型。

Order

委托訂單。

class Order(object):    def __init__(self):        self.strategy_id = ''                 ## 策略ID        self.account_id = ''                  ## 交易賬號        self.cl_ord_id = ''                   ## 客戶端訂單ID        self.order_id = ''                    ## 柜臺訂單ID        self.ex_ord_id = ''                   ## 交易所訂單ID        self.exchange = ''                    ## 交易所代碼        self.sec_id = ''                      ## 證券ID        self.position_effect = 0              ## 開平標志        self.side = 0                         ## 買賣方向        self.order_type = 0                   ## 訂單類型        self.order_src = 0                    ## 訂單來源        self.status = 0                       ## 訂單狀        self.ord_rej_reason = 0               ## 訂單拒絕原因        self.ord_rej_reason_detail = ''       ## 訂單拒絕原因描述        self.price = 0.0                      ## 委托價        self.stop_price = 0.0;                ## 止損價        self.volume = 0.0                     ## 委托量        self.filled_volume = 0.0              ## 已成交量        self.filled_vwap = 0.0                ## 已成交均價        self.filled_amount = 0.0              ## 已成交額        self.sending_time = 0.0               ## 委托下單時間        self.transact_time = 0.0              ## 最新一次成交時間

ExecRpt

委托執(zhí)行回報。

class ExecRpt(object):    def __init__(self):        self.strategy_id = ''                 ## 策略ID        self.cl_ord_id = ''                   ## 客戶端訂單ID        self.order_id = ''                    ## 交易所訂單ID        self.exec_id = ''                     ## 訂單執(zhí)行回報ID        self.exchange = ''                    ## 交易所代碼        self.sec_id = ''                      ## 證券ID        self.position_effect = 0              ## 開平標志        self.side = 0                         ## 買賣方向        self.ord_rej_reason = 0               ## 訂單拒絕原因        self.ord_rej_reason_detail = ''       ## 訂單拒絕原因描述        self.exec_type = 0                    ## 訂單執(zhí)行回報類型        self.price = 0.0                      ## 成交價        self.volume = 0.0                     ## 成交量        self.amount = 0.0                     ## 成交額        self.transact_time = 0.0              ## 交易時間

Cash

資金。

class Cash(object):    def __init__(self):        self.strategy_id = ''           ## 策略ID        self.account_id = ''            ## 賬戶id        self.currency = 0               ## 幣種        self.nav = 0.0                  ## 資金余額        self.fpnl = 0.0                 ## 浮動收益        self.pnl = 0.0                  ## 凈收益        self.profit_ratio = 0.0         ## 收益率        self.frozen = 0.0               ## 持倉凍結金額        self.order_frozen = 0.0         ## 掛單凍結金額        self.available = 0.0            ## 可用資金        self.cum_inout = 0.0            ## 累計出入金        self.cum_trade = 0.0            ## 累計交易額        self.cum_pnl = 0.0              ## 累計收益        self.cum_commission = 0.0       ## 累計手續(xù)費        self.last_trade = 0.0           ## 最新一筆交易額        self.last_pnl = 0.0             ## 最新一筆交易收益        self.last_commission = 0.0      ## 最新一筆交易手續(xù)費        self.last_inout = 0.0           ## 最新一次出入金        self.change_reason = 0          ## 變動原因        self.transact_time = 0.0        ## 交易時間

Position

持倉。

class Position(object):    def __init__(self):        self.strategy_id = ''           ## 策略ID        self.account_id = ''            ## 賬戶id        self.exchange = ''              ## 交易所代碼        self.sec_id = ''                ## 證券ID        self.side = 0                   ## 買賣方向        self.volume = 0.0               ## 持倉量        self.volume_today = 0.0         ## 今倉量        self.amount = 0.0               ## 持倉額        self.vwap = 0.0                 ## 持倉均價        self.price = 0.0                ## 當前行情價格        self.fpnl = 0.0                 ## 持倉浮動盈虧        self.cost = 0.0                 ## 持倉成本        self.order_frozen = 0.0         ## 掛單凍結倉位        self.available = 0.0            ## 可平倉位        self.available_today = 0.0      ## 可平今倉位(volume_today-order_frozen_today)        self.available_yesterday = 0.0  ## 可平昨倉位(available - available_today)        self.order_frozen_today = 0.0   ## 掛單凍結今倉        self.last_price = 0.0           ## 上一筆成交價        self.last_volume = 0.0          ## 上一筆成交量        self.init_time = 0.0            ## 初始建倉時間        self.transact_time = 0.0        ## 上一倉位變更時間

Indicator

績效。

class Indicator(object):    def __init__(self):        self.strategy_id = ''                       ## 策略ID        self.account_id = ''                        ## 賬號ID        self.nav = 0.0                              ## 凈值(cum_inout + cum_pnl + fpnl - cum_commission)        self.pnl = 0.0                              ## 凈收益(nav-cum_inout)        self.profit_ratio = 0.0                     ## 收益率(pnl/cum_inout)        self.profit_ratio_bench = 0.0               ## 基準收益率        self.sharp_ratio = 0.0                      ## 夏普比率        self.risk_ratio = 0.0                       ## 風險比率        self.trade_count = 0                        ## 交易次數        self.win_count = 0                          ## 盈利次數        self.lose_count = 0                         ## 虧損次數        self.win_ratio = 0.0                        ## 勝率        self.max_profit = 0.0                       ## 最大收益        self.min_profit = 0.0                       ## 最小收益        self.max_single_trade_profit = 0.0          ## 最大單次交易收益        self.min_single_trade_profit = 0.0          ## 最小單次交易收益        self.daily_max_single_trade_profit = 0.0    ## 今日最大單次交易收益        self.daily_min_single_trade_profit = 0.0    ## 今日最小單次交易收益        self.max_position_value = 0.0               ## 最大持倉市值或權益        self.min_position_value = 0.0               ## 最小持倉市值或權益        self.max_drawdown = 0.0                     ## 最大回撤        self.daily_pnl = 0.0                        ## 今日收益        self.daily_return = 0.0                     ## 今日收益率        self.annual_return = 0.0                    ## 年化收益率        self.cum_inout = 0.0                        ## 累計出入金        self.cum_trade = 0.0                        ## 累計交易額        self.cum_pnl = 0.0                          ## 累計平倉收益(沒扣除手續(xù)費)        self.cum_commission = 0.0                   ## 累計手續(xù)費        self.transact_time = 0.0                    ## 指標計算時間

BrokerAccount

柜臺賬戶

class BrokerAccount(object):    def __init__(self):        self.account_id = ''                         # 柜臺賬號ID        self.username = ''                           # 柜臺賬號        self.permissible = 0                         # 允許交易        self.status = 0                              # 賬號當前狀態(tài)

StrategyParameter

策略參數

class StrategyParameter(object):    def __init__(self):        self.name = ''                              # 參數名        self.value = 0.0                            # 參數值        self.min = 0.0                              # 可設置的最小值        self.max = 0.0                              # 可設置的最大值        self.readonly = false                       # 是否只讀        self.group = ''                             # 組名        self.intro = ''                             # 參數說明

StrategySymbol

策略交易標的

class StrategySymbol(object):    def __init__(self):        self.symbol = ''                               # 交易代碼        self.exchange = ''                            # 交易所代碼        self.sec_id = ''                              # 證券ID

行情數據類型

行情數據類型有Tick,Bar,DailyBar。

Tick

逐筆行情數據。

class Tick(object):      def __init__(self):        self.exchange = ''          ## 交易所代碼        self.sec_id = ''            ## 證券ID        self.utc_time = 0.0         ## 行情時間戳        self.strtime = ''           ## 可視化時間        self.last_price = 0.0       ## 最新價        self.open = 0.0             ## 開盤價        self.high = 0.0             ## 最高價        self.low = 0.0              ## 最低價        self.cum_volume = 0.0       ## 成交總量/最新成交量,累計值        self.cum_amount = 0.0       ## 成交總金額/最新成交額,累計值        self.cum_position = 0.0     ## 合約持倉量(期),累計值        self.last_volume = 0        ## 瞬時成交量(中金所提供)        self.last_amount = 0.0      ## 瞬時成交額        self.upper_limit = 0.0      ## 漲停價        self.lower_limit = 0.0      ## 跌停價        self.settle_price = 0.0     ## 今日結算價        self.trade_type = 0         ## (保留)交易類型,對應多開,多平等類型 0:'上一個tick沒有成交量', 1:'雙開', 2: '雙平', 3: '多開', 4:'空開', 5: '空平', 6:'多平', 7:'多換', 8:'空換'        self.pre_close = 0.0        ## 昨收價        self.bids = []  ## [(price, volume), (price, volume), ...] ## 1-5檔買價,量        self.asks = []  ## [(price, volume), (price, volume), ...] ## 1-5檔賣價,量

Bar

各種周期的Bar數據。

class Bar(object):    def __init__(self):        self.exchange = ''       ## 交易所代碼        self.sec_id = ''         ## 證券ID        self.bar_type = 0        ## bar類型,以秒為單位,比如1分鐘bar, bar_type=60        self.strtime = ''        ## Bar開始時間        self.utc_time = 0.0      ## Bar開始時間        self.strendtime = ''     ## Bar結束時間        self.utc_endtime = 0.0   ## Bar結束時間        self.open = 0.0          ## 開盤價        self.high = 0.0          ## 最高價        self.low = 0.0           ## 最低價        self.close = 0.0         ## 收盤價        self.volume = 0.0        ## 成交量        self.amount = 0.0        ## 成交額        self.pre_close           ## 前收盤價        self.position;           ## 持倉量        self.adj_factor          ## 復權因子        self.flag                ## 除權出息標記

DailyBar

日頻數據,在Bar數據的基礎上,還包含結算價,漲跌停價等靜態(tài)數據。

class Dailybar(object):    def __init__(self):        self.exchange = ''          ## 交易所代碼        self.sec_id = ''            ## 證券ID        self.bar_type = 0           ## bar類型        self.strtime = ''           ## 可視化時間        self.utc_time = 0.0         ## 行情時間戳        self.open = 0.0             ## 開盤價        self.high = 0.0             ## 最高價        self.low = 0.0              ## 最低價        self.close = 0.0            ## 收盤價        self.volume = 0.0           ## 成交量        self.amount = 0.0           ## 成交額        self.position = 0.0         ## 倉位        self.settle_price = 0.0     ## 結算價        self.upper_limit = 0.0      ## 漲停價        self.lower_limit = 0.0      ## 跌停價        self.pre_close              ## 前收盤價        self.adj_factor             ## 復權因子        self.flag                   ## 除權出息,停牌等標記

Instrument

交易代碼數據類型

class Instrument(object):    def __init__(self):        self.symbol = ''                ## 交易代碼        self.sec_type = 0               ## 代碼類型        self.sec_name = ''              ## 代碼名稱        self.multiplier = 0.0           ## 合約乘數        self.margin_ratio = 0.0         ## 保證金比率        self.price_tick = 0.0           ## 價格最小變動單位        self.upper_limit = 0.0          ## 當天漲停板        self.lower_limit = 0.0          ## 當天跌停板        self.is_active = 0              ## 當天是否交易        self.update_time = ''           ## 更新時間

Constituent

成份股數據類型

class Constituent(object):    def __init__(self):        self.symbol = ''                ## 交易代碼        self.weight = 0.0               ## 代碼權重

FinancialIndex

財務指標

class FinancialIndex(object):    def __init__(self):        self.symbol = ''                         #股票代碼        self.pub_date = ''                       #公告日期            self.eps = 0.0                           #每股收益            self.bvps = 0.0                          #每股凈資產          self.cfps = 0.0                          #每股現金流          self.afps = 0.0                          #每股公積金          self.total_asset = 0.0                   #總資產              self.current_asset = 0.0                 #流動資產            self.fixed_asset = 0.0                   #固定資產            self.liability = 0.0                     #負債合計            self.current_liability = 0.0             #流動負債            self.longterm_liability = 0.0            #長期負債            self.equity = 0.0                        #所有者權益          self.income = 0.0                        #主營業(yè)務收入        self.operating_profit = 0.0              #主營業(yè)務利潤        self.net_profit = 0.0                    #凈利潤    

ShareIndex

股本指標

class ShareIndex(Object):    def __init__(self):        self.symbol = ''                          #股票代碼        self.pub_date = ''                        #公告日期        self.total_share = 0.0                    #總股本        self.flow_a_share = 0.0                   #流通A股        self.nonflow_a_share = 0.0                #限售流通A股

MarketIndex

市場指標

class MarketIndex(Object):    def __init__(self):        self.symbol = ''               #股票代碼        self.pub_date = ''             #公告日期        self.pe_ratio = 0.0            #市盈率        self.pb_ratio = 0.0            #市凈率        self.ps_ratio = 0.0            #市銷率        self.market_value = 0.0        #市值        self.market_value_flow = 0.0   #流通市值

TradeDate

交易日類型

class TradeDate(object):    def __init__(self):        self.utc_time = 0.0                 ## UTC時間戳[帶毫秒]        self.strtime = ''                   ## 交易日

StockAdjustFactor

復權因子

class StockAdjustFactor(object):    def __init__(self):        self.symbol         ##股票代碼        self.trade_date     ##交易日        self.adj_factor     ##復權因子

StockDivident

分紅送股事件明細

class StockDivident(object):    def __init__(self):        self.symbol                     ##股票代碼        self.div_date                   ##除權除息日        self.cash_div                   ##每股派現        self.share_div_ratio            ##每股送股比例        self.share_trans_ratio          ##每股轉增股比例        self.allotment_ratio            ##每股配股比例        self.allotment_price            ##配股價

VirtualContract

虛擬合約明細

class VirtualContract(object):    def __init__(self):        self.vsymbol        ##主力合約或連接合約代碼        self.symbol         ##真實symbol        self.trade_date     ##交易日

策略初始化方法

init

初始化策略,設置服務地址,賬號密碼,策略ID,以及需要訂閱的symbol列表。策略自動連接服務,并登陸,訂閱對應的行情,準備好運行。

函數原型:

__init__(self,        username,        password,        strategy_id,        subscribe_symbols='',        mode=2,        td_addr='',        config_file=None,        config_file_encoding='utf-8')

參數:

參數名類型說明
usernamestring掘金終端賬號
passwordstring掘金終端密碼
strategy_idstring策略ID
subscribe_symbolsstring行情訂閱的代碼列表
modeint枚舉類型,行情模式
td_addrstring交易服務器uri, 如設置為localhost:8001,則終端用戶指向本地客戶端 , 如果設置為空, 則使用掘金云端服務

返回值:

返回值編碼

示例:

初始化時訂閱上交所浦發(fā)銀行的tick和1min bar實時行情

ret = Strategy("your user name",               "your password",               "strategy id",               "SHSE.600000.tick,SHSE.600000.bar.60",               2,               "localhost:8001")

注意項:

symbol_list 訂閱代碼表,參數格式如下:

訂閱串有三節(jié)或四節(jié)組成,用'.'分隔,格式:

對應交易所exchange.代碼code.數據類型data_type.周期類型 bar_type

只有訂閱bar數據時, 才用到第四節(jié), 周期類型才有作用交易所exchange統(tǒng)一四個字節(jié):

CFFEX-中金所 SHFE-上期所 DCE-大商所 CZCE-鄭商所 SHSE-上交所 SZSE-深交所

支持6種格式的訂閱,使用如下:

  • SHSE.* : 上交所,所有數據

  • SHSE.600000.* : 上交所,600000,所有數據

  • SHSE.600000.tick : 上交所,600000, tick數據

  • SHSE.600000.bar.60: 上交所, 600000, 1分鐘(60秒)Bar數據

  • SHSE.600000.*,SHSE.600004.* : 上交所,600000和600004所有數據(訂閱多個代碼)

init_with_config

使用配置文件初始化策略,配置文件已設置服務地址,賬號密碼,策略ID,行情模式以及需要訂閱的symbol列表

函數原型:

__init__(self,         username,         password,         strategy_id,         subscribe_symbols='',         mode=2,         td_addr='',         config_file=None,         config_file_encoding='utf-8')

參數:

參數名類型說明
config_filestring策略配置文件路徑
config_file_encodingstring策略配置文件編碼

返回值:

返回值編碼

示例:

strategy.ini文件配置:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;策略基本配置;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[strategy];掘金用戶名username=-;掘金密碼password=-;策略IDstrategy_id=3c7e70be-7e02-11e5-b293-5ec5d48ea63a;訂閱證券代碼或合約代碼列表subscribe_symbols=SHSE.600000.tick,SHSE.600000.bar.60;行情模式,2-實時行情模式,3-模擬行情模式,4-回放行情模式mode=2;交易服務地址,使用掘金終端交易時,地址為localhost:8001, 如果此項配置為空,則訂單發(fā)往掘金云服務器td_addr=localhost:8001;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;策略回測參數配置;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[backtest];歷史數據回放開始時間start_time=2014-10-25 09:30:00;歷史數據回放結束時間end_time=2015-10-29 15:15:00;策略初始資金initial_cash=1000000;委托量成交比率,默認=1(每個委托100%成交)transaction_ratio=1;手續(xù)費率,默認=0(不計算手續(xù)費)commission_ratio=0.0008;滑點比率,默認=0(無滑點)slippage_ratio=0.246;行情復權模式,0=不復權,1=前復權price_type=1;基準bench_symbol=SHSE.000300
ret = Strategy(config_file="strategy.ini")

backtest_config

回測參數設置, 僅在回測模式下有效

函數原型:

backtest_config(self,                start_time,                end_time,                initial_cash=1000000,                transaction_ratio=1,                commission_ratio=0,                slippage_ratio=0,                price_type=1,                bench_symbol='SHSE.000300',                check_cache=1)

參數:

參數名類型說明
start_timestring回放行情開始時間,格式:yyyy-mm-dd HH:MM:SS
end_timestring回放行情結束時間,格式:yyyy-mm-dd HH:MM:SS
initial_cashfloat回測初始資金,默認1000000
transaction_ratiofloat委托量成交比率,默認1,按委托量全部成交
commission_ratiofloat手續(xù)費率,默認0,無手續(xù)費
slippage_ratiofloat滑點比率,默認0,無滑點
price_typeint復權方式,0-不復權,1-前復權
bench_symbolstring基準代碼
check_cacheint回測時是否使用本地緩存數據,0-不使用,1-使用, 默認為值為 1

返回值:

返回值編碼

策略啟停方法

run

運行策略

函數原型:

run()

參數:

返回值:

返回值編碼

stop

停止策略

參數:

返回值:

行情訂閱方法

subscribe

訂閱行情,策略類和行情服務了都提供該接口。

函數原型:

subscribe(symbol_list)

參數:

參數名類型說明
symbol_liststring訂閱代碼列表

返回值:

返回值編碼

示例:

通過策略對象訂閱上交所浦發(fā)銀行Tick和1分鐘

注意項:

symbol_list 訂閱代碼表的參數格式當在回測模式下,需要顯式關閉本地緩存api才能正常工作, 如何關閉本地緩存,請參見 backtest_config

unsubscribe

退訂指定行情,策略類和行情服務了都提供該接口。

函數原型:

unsubscribe(symbol_list)

參數:

參數名類型說明
symbol_liststring訂閱代碼列表

返回值:

返回值編碼

示例:

通過策略對象退訂上交所浦發(fā)銀行Tick和1分鐘

注意項:

symbol_list 訂閱代碼表的參數格式當在回測模式下,需要顯式關閉本地緩存api才能正常工作, 如何關閉本地緩存,請參見 backtest_config

resubscribe

重置訂閱條件,相當于先退訂原來所有行情,再重新訂閱指定的行情

函數原型:

resubscribe(symbol_list)

參數:

參數名類型說明
symbol_liststring訂閱代碼列表

返回值:

返回值編碼。

symbol_list 訂閱代碼表的參數格式當在回測模式下,需要顯式關閉本地緩存api才能正常工作, 如何關閉本地緩存,請參見 backtest_config

數據提取方法

get_ticks

提取指定時間段的歷史Tick數據,支持單個代碼提取或多個代碼組合提取。策略類和行情服務類都提供該接口。

函數原型:

get_ticks(symbol_list, begin_time, end_time)

參數:

參數名類型說明
symbol_liststring證券代碼, 帶交易所代碼以確保唯一,如SHSE.600000,同時支持多只代碼
begin_timestring開始時間, 如2015-10-30 09:30:00
end_timestring結束時間, 如2015-10-30 15:00:00

返回值:

Tick列表

示例:

通過策略對象提取上交所浦發(fā)銀行和深交所平安銀行2015-10-30 09:30:00到2015-10-30 15:00:00時間段的所有Tick數據

ticks = strategy.get_ticks("SHSE.600000,SZSE.000001",            "2015-10-30 09:30:00",            "2015-10-30 15:00:00")

get_bars

提取指定時間段的歷史Bar數據,支持單個代碼提取或多個代碼組合提取。策略類和行情服務類都提供該接口。

函數原型:

get_bars(symbol_list, bar_type, begin_time, end_time)

參數:

參數名類型說明
symbol_liststring證券代碼, 帶交易所代碼以確保唯一,如SHSE.600000,同時支持多只代碼
bar_typeintbar周期,以秒為單位,比如60即1分鐘bar
begin_timestring開始時間, 如2015-10-30 09:30:00
end_timestring結束時間, 如2015-10-30 15:00:00

返回值:

Bar列表

示例:

通過策略對象提取上交所浦發(fā)銀行和深交所平安銀行2015-10-30 09:30:00到2015-10-30 15:00:00時間段的1分鐘Bar數據

bars = strategy.get_bars("SHSE.600000,SZSE.000001",            60,            "2015-10-30 09:30:00",            "2015-10-30 15:00:00")

get_dailybars

提取指定時間段的歷史日周期Bar數據,支持單個代碼提取或多個代碼組合提取。DailyBarBar多了部分靜態(tài)數據,如結算價,漲跌停等。策略類和行情服務類都提供該接口。

函數原型:

get_dailybars(symbol_list, begin_time, end_time)

參數:

參數名類型說明
symbol_liststring證券代碼, 帶交易所代碼以確保唯一,如SHSE.600000,同時支持多只代碼
begin_timestring開始日期, 如2015-10-19
end_timestring結束日期, 如2015-10-30

返回值:

DailyBar列表

示例:

通過策略對象提取上交所浦發(fā)銀行和深交所平安銀行2015-10-19到2015-10-30時間段的DailyBar數據

var dailybars = strategy.get_dailybars("SHSE.600000,SZSE.000001",            "2015-10-19 00:00:00",            "2015-10-30 00:00:00")

get_last_ticks

提取最新的1條Tick數據,支持單個代碼提取或多個代碼組合提取。策略類和行情服務類都提供該接口。

函數原型:

get_last_ticks(symbol_list)

參數:

參數名類型說明
symbolstring證券代碼, 帶交易所代碼以確保唯一,如SHSE.600000,同時支持多只代碼

返回值:

Tick列表

示例:

通過策略對象提取上交所浦發(fā)銀行和深交所平安銀行的最近一筆Tick數據

ticks = strategy.get_last_ticks("SHSE.600000,SZSE.000001")

get_last_bars

提取最新1條Bar數據,支持單個代碼提取或多個代碼組合提取。策略類和行情服務類都提供該接口。

函數原型:

get_last_bars(symbol_list, bar_type)

參數:

參數名類型說明
symbolstring證券代碼, 帶交易所代碼以確保唯一,如SHSE.600000,同時支持多只代碼
bar_typeintbar周期,以秒為單位,比如60即1分鐘bar

返回值:

Bar列表

示例:

通過策略對象提取上交所浦發(fā)銀行和深交所平安銀行的最新的1筆1min Bar數據

bars = strategy.get_last_bars("SHSE.600000,SZSE.000001", 60)

get_last_dailybars

提取最新1條DailyBar數據,支持單個代碼提取或多個代碼組合提取。策略類和行情服務類都提供該接口。

函數原型:

get_last_dailybars(symbol_list)

參數:

參數名類型說明
symbolstring證券代碼, 帶交易所代碼以確保唯一,如SHSE.600000,同時支持多只代碼

返回值:

DailyBar列表

示例:

通過策略對象提取上交所浦發(fā)銀行和深交所平安銀行的最近一筆DailyBar數據

dailybars = strategy.get_last_dailybars("SHSE.600000,SZSE.000001")

get_last_n_ticks

提取單個代碼最新n條Tick數據,策略類和行情服務類都提供該接口。

函數原型:

get_last_n_ticks(symbol, n, end_time='')

參數:

參數名類型說明
symbolstring證券代碼, 帶交易所代碼以確保唯一,如SHSE.600000
nint提取的數據條數
end_timestring指定截止時間, 如2015-10-30 15:00:00

返回值:

Tick列表

示例:

通過策略對象提取上交所浦發(fā)銀行的最近10筆Tick數據

dailybars = strategy.get_last_n_ticks("SHSE.600000")

get_last_n_bars

提取單個代碼的最新n條Bar數據,策略類和行情服務類都提供該接口。

函數原型:

get_last_n_bars(symbol, bar_type, n, end_time='')

參數:

參數名類型說明
symbolstring證券代碼, 帶交易所代碼以確保唯一,如SHSE.600000
bar_typeintbar周期,以秒為單位,比如60即1分鐘bar
nint提取的數據條數
end_timestring指定截止時間, 如2015-10-30 15:00:00

返回值:

Bar列表

示例:

通過策略對象提取上交所浦發(fā)銀行的最近10筆1分鐘Bar數據

dailybars = strategy.get_last_n_bars("SHSE.600000", 60, 10)

get_last_n_dailybars

提取單個代碼的最新n條DailyBar數據, 策略類和行情服務類都提供該接口。

函數原型:

get_last_n_dailybars(symbol, n, end_time='')

參數:

參數名類型說明
symbolstring證券代碼, 帶交易所代碼以確保唯一,如SHSE.600000
nint提取的數據條數
end_timestring指定截止時間, 如2015-10-30 15:00:00

返回值:

Bar列表

示例:

通過策略對象提取上交所浦發(fā)銀行的最近10筆1min DailyBar數據

dailybars = strategy.get_last_n_dailybars("SHSE.600000", 10)

get_instruments

提取交易代碼。策略類和行情服務類都提供該接口。

函數原型:

get_instruments(exchange, sec_type, is_active)

參數:

參數名類型說明
exchangestring交易所代碼
sec_typeint代碼類型:1 股票,2 基金,3 指數,4 期貨,5 ETF
is_activeint當天是否交易:1 是,0 否

返回值:

Instrument對象列表

get_instruments_by_name

根據期貨品種提取交易代碼。策略類和行情服務類都提供該接口。

函數原型:

get_instruments_by_name(name)

參數:

參數名類型說明
namestring期貨品種,如'ag', 'ic'

返回值:

Instrument對象列表

get_constituents

提取指數的成分股代碼。策略類和行情服務類都提供該接口。

函數原型:

get_constituents(index_symbol)

參數:

參數名類型說明
index_symbolstring指數代碼

返回值:

Constituent對象列表

get_financial_index

按時間周期提取FinancialIndex,按時間升序排列。策略類和行情服務類都提供該接口。

函數原型:

get_financial_index(symbol, t_begin, t_end)

參數:

參數名類型說明
symbolstring品種代碼, 如SHSE.600000
t_beginstring開始時間, 如2013-8-14 00:00:00
t_endstring結束時間, 如2013-8-15 00:00:00

返回值:

FinancialIndex對象列表

get_last_financial_index

提取快照, 即最新的FinancialIndex,支持一次性提取多個代碼的快照。策略類和行情服務類都提供該接口。

函數原型:

get_last_financial_index(symbol_list)

參數:

參數名類型說明
symbol_liststring多個品種代碼列表, 如SHSE.600000,SZSE.000001

返回值:

FinancialIndex對象列表

get_last_n_financial_index

提取最近n條FinancialIndex。策略類和行情服務類都提供該接口。

函數原型:

get_last_n_financial_index(symbol, n)

參數:

參數名類型說明
symbolstring代碼, 如SHSE.600000
nstring數據個數

返回值:

FinancialIndex對象列表

get_share_index

按時間周期提取ShareIndex,按時間升序排列。策略類和行情服務類都提供該接口。

函數原型:

get_share_index(symbol, t_begin, t_end)

參數:

參數名類型說明
symbolstring品種代碼, 如SHSE.600000
t_beginstring開始時間, 如2013-8-14 00:00:00
t_endstring結束時間, 如2013-8-15 00:00:00

返回值:

ShareIndex對象列表

get_last_share_index

提取快照, 即最新的ShareIndex,支持一次性提取多個代碼的快照。策略類和行情服務類都提供該接口。

函數原型:

get_last_share_index(symbol_list)

參數:

參數名類型說明
symbol_liststring多個品種代碼列表, 如SHSE.600000,SZSE.000001

返回值:

ShareIndex對象列表

get_last_n_share_index

提取最近n條ShareIndex。策略類和行情服務類都提供該接口。

函數原型:

get_last_n_share_index(symbol, n)

參數:

參數名類型說明
symbolstring代碼, 如SHSE.600000
nstring數據個數

返回值:

ShareIndex對象列表

get_market_index

按時間周期提取MarketIndex,按時間升序排列。策略類和行情服務類都提供該接口。

函數原型:

get_market_index(symbol, t_begin, t_end)

參數:

參數名類型說明
symbolstring品種代碼, 如SHSE.600000
t_beginstring開始時間, 如2013-8-14 00:00:00
t_endstring結束時間, 如2013-8-15 00:00:00

返回值:

MarketIndex對象列表

get_last_market_index

按時間周期提取MarketIndex,按時間升序排列。策略類和行情服務類都提供該接口。

函數原型:

get_last_market_index(symbol_list)

參數:

參數名類型說明
symbol_liststring多個品種代碼列表, 如SHSE.600000,SZSE.000001

返回值:

MarketIndex對象列表

get_last_n_market_index

按時間周期提取MarketIndex,按時間升序排列。策略類和行情服務類都提供該接口。

函數原型:

get_last_n_market_index(symbol, n)

參數:

參數名類型說明
symbolstring代碼, 如SHSE.600000
nstring數據個數

返回值:

MarketIndex對象列表

get_calendar

獲取交易所交易日歷。策略類和行情服務類都提供該接口。

函數原型:

get_calendar(exchange, start_time, end_time)

參數:

參數名類型說明
exchangestring交易所, 如SHSE
start_timestring開始時間, 如2016-01-01
end_timestring結束時間, 如2016-03-15

返回值:

TradeDate對象列表

get_stock_adj

查詢復權因子

函數原型:

get_stock_adj(symbol, start_time, end_time)

參數:

參數名類型說明
symbolstring如:SZSE.000001
start_timestring查詢開始時間
end_timestring查詢結束時間

返回值:

StockAdjustFactor 列表

get_divident

查詢分紅送股明細

函數原型:

get_divident(symbol, start_time, end_time)

參數:

參數名類型說明
symbolstring如:SZSE.000001
start_timestring查詢開始時間
end_timestring查詢結束時間

返回值:

StockDivident 列表

get_virtual_contract

查詢虛擬合約和真實合約對應關系

函數原型:

get_virtual_contract(vsymbol, start_time, end_time)

參數:

參數名類型說明
vsymbolstring如:CFFEX.IF, CFFEX.IF00
start_timestring查詢開始時間
end_timestring查詢結束時間

返回值:

返回VirtualContract列表

交易接口方法

open_long

異步開多倉,以參數指定的symbol、價和量下單。如果價格為0,為市價單,否則為限價單。策略類和交易服務類都提供該接口

函數原型:

open_long(exchange, sec_id, price, volume)

參數:

參數名類型說明
exchangestring交易所代碼, 如上交所SHSE
sec_idstring證券代碼,如浦發(fā)銀行600000
pricefloat委托價,如果price=0,為市價單,否則為限價單
volumefloat委托量

返回值:

委托下單生成的Order對象

示例:

市價買入1000股上交所浦發(fā)銀行

order = open_long("SHSE", "600000", 0, 1000)

open_short

異步開空倉接口,以參數指定的exchange, 證券代碼sec_id, 價和量下單。如果價格為0,為市價單,否則為限價單。策略類和交易服務類都提供該接口。

函數原型:

open_short(exchange, sec_id, price, volume)

參數:

參數名類型說明
exchangestring交易所代碼, 如金融期貨交易所 CFFEX
sec_idstring證券代碼,如股指期貨合約1511 IF1511
pricefloat委托價,如果price=0,為市價單,否則為限價單
volumefloat委托量

返回值:

委托下單生成的Order對象

示例:

在策略類的方法中以市價開1手股指期貨合約IF1511的空單

order = open_short("CFFEX", "IF1511", 0, 1)

注意事項:

  1. 該接口為異步下單接口,需策略Run之后才能正常運行

  2. 平倉接口只對期貨有效,現貨不存在空倉單

close_long

異步平多倉接口,以參數指定的exchange, 證券代碼sec_id, 價和量下單。如果價格為0,為市價單,否則為限價單。策略類和交易服務類都提供該接口。

函數原型:

close_long(exchange, sec_id, price, volume)

參數:

參數名類型說明
exchangestring交易所代碼, 如上交所 SHSE
sec_idstring證券代碼,如浦發(fā)銀行 600000
pricefloat委托價,如果price=0,為市價單,否則為限價單
volumefloat平倉量

返回值:

委托下單生成的Order對象

示例:

在策略類的方法中以市價賣出1000股上交所浦發(fā)銀行

order = close_long("SHSE", "600000", 0, 1000)

注意事項:

該接口為異步下單接口,需策略Run之后才能正常運行

close_long_yesterday

異步平昨多倉接口,以參數指定的exchange, 證券代碼sec_id, 價和量下單。如果價格為0,為市價單,否則為限價單。此api用于平上期所昨倉,策略類和交易服務類都提供該接口。

函數原型:

close_long_yesterday(exchange, sec_id, price, volume)

參數:

參數名類型說明
exchangestring交易所代碼, 如上期所SHFE
sec_idstring證券代碼
pricefloat委托價,如果price=0,為市價單,否則為限價單
volumefloat平倉量

返回值:

委托下單生成的Order對象

示例:

以市價平1手白銀合約ag1512的多單,

order = close_long_yesterday("SHFE", "ag1512", 0, 1)

注意事項:

  1. 該接口為異步下單接口,需策略Run之后才能正常運行

  2. 平倉接口只對期貨有效,現貨不存在平倉

close_short

異步平空倉接口,以參數指定的exchange, 證券代碼sec_id, 價和量下單。如果價格為0,為市價單,否則為限價單。策略類和交易服務類都提供該接口。

函數原型:

close_short(exchange, sec_id, price, volume)

參數:

參數名類型說明
exchangestring交易所代碼, 如股指期貨交易所CFFEX
sec_idstring證券代碼,如股指期貨合約IF1511
pricefloat委托價,如果price=0,為市價單,否則為限價單
volumefloat平倉量

返回值:

返回委托下單生成的Order對象

示例:

在策略類的方法中以市價平1手股指期貨合約IF1511的空單

order = close_short("CFFEX", "IF1511", 0, 1)

注意事項:

  1. 該接口為異步下單接口,需策略Run之后才能正常運行

  2. 平倉接口只對期貨有效,現貨不存在平倉

close_short_yesterday

異步平昨空倉接口,以參數指定的exchange, 證券代碼sec_id, 價和量下單。如果價格為0,為市價單,否則為限價單。此api用于平上期所昨倉,策略類和交易服務類都提供該接口。

函數原型:

close_short_yesterday(exchange, sec_id, price, volume)

參數:

參數名類型說明
exchangestring交易所代碼,如上期所SHFE
sec_idstring證券代碼
pricefloat委托價,如果price=0,為市價單,否則為限價單
volumefloat平倉量

返回值:

返回委托下單生成的Order對象

示例:

以市價平1手白銀合約ag1512的空單

order = close_short_yesterday("SHFE", "ag1512", 0, 1)

注意事項:

  1. 該接口為異步下單接口,需策略Run之后才能正常運行

  2. 平倉接口只對期貨有效,現貨不存在平倉

place_order

異步下單原生函數,需要創(chuàng)建Order對象,填充對應字段,一般異步下單接口建議使用open_long、open_short、close_long、close_short4個快捷下單接口。如果價格price字段為0,為市價單,否則為限價單。策略類和交易服務類都提供該接口。

函數原型:

place_order(order)

參數:

參數名類型說明
orderOrder委托Order對象

返回值:

直接返回參數Order對象

示例:

在策略類的方法中以市價開1手IF1511的多單

order = Order()order.exchange = "CFFEX"order.sec_id = "IF1511"order.side = 1order.position_effect = 1order.price = 0order.volume = 1order_ret = place_order(order)

注意事項:

該接口為異步下單接口,需策略Run之后才能正常運行

cancel_order

異步撤單接口,根據參數cl_ord_id指定的客戶端訂單ID,撤銷之前的下單委托。撤單是否成功取決于訂單當前的狀態(tài)。

函數原型:

cancel_order(cl_ord_id)

參數:

參數名類型說明
cl_ord_idstring委托訂單的客戶方id

返回值:

返回值編碼

示例:

ret = cancel_order(order.cl_ord_id)

注意事項:

  1. 該接口為異步下單接口,需策略Run之后才能正常運行

  2. 執(zhí)行的結果由on_execrpt, on_order_cancelled, on_order_cancel_rejected回調方法返回

open_long_sync

同步開多倉接口,以參數指定的symbol, 價和量下單。如果價格為0,為市價單,否則為限價單。策略類和交易服務類都提供該接口。

函數原型:

open_long_sync(exchange, sec_id, price, volume)

參數:

參數名類型說明
exchangestring交易所代碼, 如上交所SHSE
sec_idstring證券代碼,如浦發(fā)銀行600000
pricefloat委托價,如果price=0,為市價單,否則為限價單
volumefloat委托量

返回值:

返回委托下單生成的Order對象

示例:

通過策略對象調用該接口,以市價買入1000股上交所浦發(fā)銀行

order = strategy.open_long_sync("SHSE", "600000", 0, 1000)

open_short_sync

同步開空倉接口,以參數指定的exchange, 證券代碼sec_id, 價和量下單。如果價格為0,為市價單,否則為限價單。策略類和交易服務類都提供該接口。

函數原型:

open_short_sync(exchange, sec_id, price, volume)

參數:

參數名類型說明
exchangestring交易所代碼, 如金融期貨交易所 CFFEX
sec_idstring證券代碼,如股指期貨1511合約 IF1511
pricefloat委托價,如果price=0,為市價單,否則為限價單
volumefloat委托量

返回值:

返回委托下單生成的

注意事項:

平倉接口只對期貨有效,現貨不存在空倉單

close_long_sync

同步平多倉接口,以參數指定的exchange, 證券代碼sec_id, 價和量下單。如果價格為0,為市價單,否則為限價單。策略類和交易服務類都提供該接口。

函數原型:

close_long_sync(exchange, sec_id, price, volume)

參數:

參數名類型說明
exchangestring交易所代碼, 如上交所SHSE
sec_idstring證券代碼,如浦發(fā)銀行 600000
pricefloat委托價,如果price=0,為市價單,否則為限價單
volumefloat平倉量

返回值:

返回委托下單生成的

close_long_yesterday_sync

同步平昨多倉接口,以參數指定的exchange, 證券代碼sec_id, 價和量下單。如果價格為0,為市價單,否則為限價單。 此api用于平上期所昨倉,策略類和交易服務類都提供該接口。

函數原型:

close_long_yesterday_sync(exchange, sec_id, price, volume)

參數:

參數名類型說明
exchangestring交易所代碼,如上期所SHFE
sec_idstring證券代碼,如浦發(fā)銀行 600000
pricefloat委托價,如果price=0,為市價單,否則為限價單
volumefloat平倉量

返回值:

返回委托下單生成的Order對象

示例:

以市價平1手白銀合約ag1512的多單

order = close_long_yesterday_sync("SHFE", "ag1512", 0, 1)

注意事項:

1.平倉接口只對期貨有效,現貨不存在平倉

close_short_sync

同步平空倉接口,以參數指定的exchange, 證券代碼sec_id, 價和量下單。如果價格為0,為市價單,否則為限價單。策略類和交易服務類都提供該接口。

函數原型:

close_short_sync(exchange, sec_id, price, volume)

參數:

參數名類型說明
exchangestring交易所代碼, 如股指期貨交易所CFFEX
sec_idstring證券代碼,如股指期貨合約IF1511
pricefloat委托價,如果price=0,為市價單,否則為限價單
volumefloat平倉量

返回值:

返回委托下單生成的

注意事項:

平倉接口只對期貨有效,現貨不存在平倉

close_short_yesterday_sync

同步平昨空倉接口,以參數指定的exchange, 證券代碼sec_id, 價和量下單。如果價格為0,為市價單,否則為限價單。此api用于平上期所昨倉,策略類和交易服務類都提供該接口。

函數原型:

close_short_yesterday_sync(exchange, sec_id, price, volume)

參數:

參數名類型說明
exchangestring交易所代碼, 如上期所SHFE
sec_idstring證券代碼,如股指期貨合約IF1511
pricefloat委托價,如果price=0,為市價單,否則為限價單
volumefloat平倉量

返回值:

返回委托下單生成的

注意事項:

平倉接口只對期貨有效,現貨不存在平倉

place_order_sync

同步下單原生函數,需要創(chuàng)建Order對象,填充對應字段,一般同步下單接口建議使用open_long_sync、open_short_sync、close_long_sync、close_short_sync 4個快捷下單接口。如果價格price字段為0,為市價單,否則為限價單。策略類和交易服務類都提供該接口。

函數原型:

place_order_sync(order)

參數:

參數名類型說明
orderOrder委托Order對象

返回值:

直接返回參數Order對象

示例:

通過策略對象調用該接口,以市價開1手IF1511的多單

order = Order()order.exchange = "CFFEX"order.sec_id = "IF1511"order.side = 1order.position_effect = 1order.price = 0order.volume = 1order_ret = place_order_sync(order)

cancel_order_sync

同步撤單接口,根據參數clordid指定的客戶端訂單ID,撤銷之前的下單委托。撤單是否成功取決于訂單當前的狀態(tài)。策略類和交易服務類都提供該接口。

函數原型:

cancel_order_sync(cl_ord_id)

參數:

參數名類型說明
cl_ord_idstring委托訂單的客戶方id

返回值:

返回值編碼

示例:

ret = cancel_order_sync(order.cl_ord_id)

注意事項:

執(zhí)行的結果由on_execrpt, on_order_cancelled, on_order_cancel_rejected回調方法返回

get_order

查詢單個委托信息,策略類和交易服務類都提供該接口。

函數原型:

get_order(cl_ord_id)

參數:

參數名類型說明
cl_ord_idstring委托訂單的客戶方id

返回值:

order對象

get_orders

按時間段查詢委托信息列表,策略類和交易服務類都提供該接口。

函數原型:

get_orders(start_time, end_time)

參數:

參數名類型說明
start_timestring開始時間,如2016-01-01 00:00:00
end_timestring開始時間,如2016-01-02 00:00:00

返回值:

order對象列表

get_orders_by_symbol

按時間段和代碼查詢委托信息列表,策略類和交易服務類都提供該接口。

函數原型:

get_orders_by_symbol(exchange, sec_id, start_time, end_time)

參數:

參數名類型說明
exchangestring交易所名稱, 如SHSE
sec_idstring證券代碼,如600000
start_timestring開始時間,如2016-01-01 00:00:00
end_timestring開始時間,如2016-01-02 00:00:00

返回值:

order對象列表

get_unfinished_orders

查詢未完成委托信息,策略類和交易服務類都提供該接口。

函數原型:

get_unfinished_orders()

參數:

返回值:

order對象列表

get_cash

查詢當前策略的資金信息,策略類和交易服務類都提供該接口。

函數原型:

get_cash()

參數:

返回值:

Cash對象,當前策略的資金信息

示例:

在策略類的方法中查詢當前策略的資金信息

cash = get_cash()

get_position

查詢當前策略指定symbol(由交易所代碼和證券ID組成)和買賣方向的持倉信息。策略類和交易服務類都提供該接口。

函數原型:

get_position(exchange, sec_id, side);

參數:

參數名類型說明
exchangestring交易所代碼
sec_idstring證券代碼
sideint買賣方向

返回值:

Position對象,持倉信息

示例:

在策略類的方法中查詢買入浦發(fā)銀行的持倉信息

postion = get_position("SHSE", "600000", 1)

get_positions

查詢當前策略的全部持倉信息。策略類和交易服務類都提供該接口。

函數原型:

get_positions()

參數:

返回值:

當前策略全部持倉列表

示例:

在策略類的方法中查詢當前策略全部持倉信息

postion = get_positions()

get_indicator

查詢當前策略的績效信息。策略類和交易服務類都提供該接口。

函數原型:

get_indicator()

參數:

返回值:

當前策略的績效信息Indicator

示例:

在策略類的方法中查詢當前策略的績效信息

indicator = get_indicator()

get_broker_accounts

獲取柜臺交易賬號列表。策略類和交易服務類都提供該接口。

函數原型:

get_broker_accounts()

參數:

返回值:

BrokerAccount對象列表

get_broker_cash

獲取柜臺交易賬號資金。策略類和交易服務類都提供該接口。

函數原型:

get_broker_cash()

參數:

返回值:

Cash對象列表

get_broker_positions

獲取柜臺交易賬號持倉。策略類和交易服務類都提供該接口。

函數原型:

get_broker_positions()

參數:

返回值:

Position對象列表

行情事件方法

on_tick

響應Tick事件,收到Tick數據后本函數被調用。

函數原型:

on_tick(tick)

參數:

參數名類型說明
tickTickTick數據

返回值:

on_bar

響應Bar事件,收到Bar數據后本函數被調用。

函數原型:

on_bar(bar)

參數:

參數名類型說明
barBarBar數據

返回值:

交易事件方法

on_execrpt

響應委托執(zhí)行回報事件,收到Execution數據后本函數被調用。

函數原型:

on_execrpt(rpt)

參數:

參數名類型說明
rptExecRpt執(zhí)行回報數據

返回值:

on_order_rejected

響應訂單被拒絕事件,收到Order變更數據后本函數被調用。

函數原型:

on_order_rejected(order)

參數:

參數名類型說明
orderOrder最新的訂單數據

返回值:

on_order_new

響應訂單被柜臺接收事件,收到Order變更數據后本函數被調用。

函數原型:

on_order_new(order)

參數:

參數名類型說明
orderOrder最新的訂單數據

返回值:

on_order_status

響應訂單狀態(tài)更新事件,Order狀態(tài)變更后本函數被調用。

函數原型:

on_order_status(order)

參數:

參數名類型說明
orderOrder最新的訂單數據

返回值:

on_order_filled

響應訂單完全成交事件,收到Order變更數據后本函數被調用。

函數原型:

on_order_filled(order)

參數:

參數名類型說明
orderOrder最新的訂單數據

返回值:

on_order_partially_filled

響應訂單部分成交事件,收到Order變更數據后本函數被調用。

函數原型:

on_order_partially_filled(order)

參數:

參數名類型說明
orderOrder最新的訂單數據

返回值:

on_order_stop_executed

響應訂單停止執(zhí)行事件,比如,限價單到收市仍然未能成交。收到Order變更數據后本函數被調用。

函數原型:

on_order_stop_executed(order)

參數:

參數名類型說明
orderOrder最新的訂單數據

返回值:

on_order_cancelled

響應訂單撤單成功事件,收到Order變更數據后本函數被調用。

函數原型:

on_order_cancelled(order)

參數:

參數名類型說明
orderOrder最新的訂單數據

返回值:

on_order_cancel_rejected

響應訂單撤單請求被拒絕事件,收到Execution數據后本函數被調用。ord_rej_reason說明為什么撤單失敗。

函數原型:

on_order_cancel_rejected(order)

參數:

參數名類型說明
orderOrder最新的訂單數據

返回值:

其他方法

on_login

策略登錄事件,初始化策略時本函數被調用。

函數原型:

on_login()

參數:

返回值:

on_error

響應錯誤事件,策略內部出現錯誤時,比如行情或交易連接斷開,數據錯誤,超時等,將觸發(fā)本函數。

函數原型:

on_error(error_code, error_msg)

參數:

參數名類型說明
error_codeint返回值編碼
error_msgstring錯誤信息

返回值:

on_backtest_finish

回測結束事件,在回測結束時觸發(fā)。

函數原型:

on_backtest_finish(indicator)

參數:

參數名類型說明
indicatorobject回測的績效

返回值:

set_timer

設置策略定時事件的時間間隔,單位為毫秒。

函數原型:

set_timer(interval)

參數:

參數名類型說明
intervalint定時器時間間隔

返回值:

unset_timer

解除該時間間隔對應的定時器,單位為毫秒。

函數原型:

unset_timer(interval)

參數:

參數名類型說明
intervalint定時器時間間隔

返回值:

on_timer

策略定時事件,按設定的時間間隔定時調用。

函數原型:

on_timer(interval)

參數:

參數名類型說明
intervalint定時器時間間隔

返回值:

set_timeout_val

設置同步API的超時時間,系統(tǒng)默認為30秒

函數原型:

set_timeout_val(seconds)

參數:

參數名類型說明
secondsint超時時間,單位為秒

返回值:

get_timeout_val

獲取同步API的超時時間

函數原型:

get_timeout_val()

參數:

返回值:

超時時間,單位為秒

get_strerror

根據錯誤碼錯誤詳細錯誤信息

函數原型:

get_strerror(err_code)

參數:

參數名類型說明
err_codeint返回值編碼

返回值:

錯誤信息

on_md_event

響應行情狀態(tài)事件,收到MarketDataEvent數據后本函數被調用。

函數原型:

on_md_event(md_event)

參數:

參數名類型說明
md_eventMDEvent開盤,收盤,回放行情結束等事件

返回值:

get_version

獲取SDK版本號。

函數原型:

get_version()

參數:

返回值:

返回當前版本號信息

to_dict

類型轉換函數,將GMSDK內置類型對象轉換為dict對象; 使用前從gmsdk引入,即from gmsdk import to_dict。

函數原型:

to_dict(obj)

參數:

參數名類型說明
objobjectGMSDK內置類型對象

返回值:

dict對象

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
VNPY
redis C接口hiredis 簡單函數使用介紹
免費開源!常用策略函數的復用與累積
《量化交易之門》連載20:參數最佳化的三大陷阱——前視偏差、過度優(yōu)化、曲線擬合
談談服務器中python腳本的安全容錯處理
iOS多線程編程Part 3/3
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服