海知平臺(tái)現(xiàn)在推出了程序化模擬交易接口,方便用戶利用計(jì)算機(jī)技術(shù)進(jìn)行智能投資!接口使用python編寫(xiě),請(qǐng)?jiān)趐ython2.7以上的環(huán)境中運(yùn)行接口(目前接口暫不支持python3)。接口是開(kāi)源免費(fèi)的,歡迎大家在使用過(guò)程中提出寶貴意見(jiàn)!??!目前接口僅支持股票交易,我們會(huì)陸續(xù)完善其他金融產(chǎn)品的交易功能!
附上海知接口的github地址:https://github.com/NotTodayNotMe/TradeInterface.git
pip install TradeInterface目前接口僅提供最簡(jiǎn)單的買賣交易以及交易信息查詢功能,目的是給熟悉量化投資的用戶充分的自由度,可以最大自由度的實(shí)現(xiàn)自己的投資策略。
from TradeInterFace import TestEngine #導(dǎo)入接口
Engine = TestEngine(user_id = '',password = '',type = '')
'''
初始化測(cè)試引擎示例,必須選定是實(shí)盤(pán)模擬還是歷史回測(cè)
parameter:
#user_id:海知平臺(tái)用戶id(str)
#password:(str)
#type:
RealTimeTrading:實(shí)盤(pán)模擬
HistoryTrading:歷史回測(cè)
'''
Engine.core#返回測(cè)試引擎類型,是實(shí)盤(pán)模擬還是歷史回測(cè)
Engine.current_time#返回測(cè)試引擎的當(dāng)前時(shí)間戳。實(shí)盤(pán)模擬返回當(dāng)前時(shí)間,歷史回測(cè)返回當(dāng)前設(shè)定的歷史時(shí)間
Engine.shift_current_time(days = )#按照天數(shù)變更當(dāng)前的引擎時(shí)間戳,僅對(duì)歷史回測(cè)有效,同時(shí)僅支持向后跳轉(zhuǎn)!目的是標(biāo)準(zhǔn)化歷史回測(cè)的過(guò)程,防止用現(xiàn)在的數(shù)據(jù)在過(guò)去的時(shí)間購(gòu)買股票!
Engine.buy(code = '',#股票代碼
volume = '',#交易量
price_type = 'now_price',#價(jià)格類型
price =None,#價(jià)格
date = None,#交易時(shí)間,近在歷史回測(cè)引擎時(shí)生效,為空時(shí)默認(rèn)使用當(dāng)前的引擎時(shí)間戳
effect_term = 1)#掛單有效時(shí)長(zhǎng)
Engine.sell(code = '',#股票代碼
volume = '',#交易量
price_type = 'now_price',#價(jià)格類型
price =None,#價(jià)格
date = None,#交易時(shí)間,近在歷史回測(cè)引擎時(shí)生效,為空時(shí)默認(rèn)使用當(dāng)前的引擎時(shí)間戳
effect_term = 1)#掛單有效時(shí)長(zhǎng)
Engine.query_records(start = '',end ='')#查詢委托交易情況,僅實(shí)盤(pán)模擬有效
Engine.cancel_order(pre_id = )#根據(jù)委托單號(hào)撤單,僅實(shí)盤(pán)模擬有效
Engine.query_history_records(start = ,end = '')#查詢歷史交割單
Engine.history_to_csv(path = )#將歷史交割單輸出到csv文件當(dāng)中
#設(shè)定引擎時(shí)間戳是為了方便歷史回測(cè)和實(shí)盤(pán)模擬直接的切換
#對(duì)于用戶已經(jīng)編輯好的策略,想在實(shí)盤(pán)模擬和歷史投資之間切換,只需要修改引擎的初始化參數(shù)即可user_id ='******'
password = '******'
def Realtime():
'''
實(shí)盤(pán)交易引擎使用樣例
:return:
'''
Engine = TestEngine(user_id=user_id,password=password,type='RealTimeTrading')#初始化接口,傳入登錄信息,選擇實(shí)盤(pán)模擬
print Engine.core
print Engine.current_time
print Engine.buy(code='600848',volume=100)#購(gòu)買
print Engine.sell(code='600848', volume=100)#賣出
temp = Engine.query_records(start="2018-04-25", end="2018-04-26")#委托查詢,主要是用來(lái)查詢委托單號(hào)
print temp[0]['pre_id']#返回最后的委托
print Engine.cancel_order(str(temp[0]['pre_id']))#撤銷委托單,需要傳入委托單好
print Engine.query_history_records(start="2018-4-4", end="2018-04-05")#查看歷史交易記錄
print Engine.query_profit()#收益情況查詢
'''歷史回測(cè)引擎示例'''
def History():
'''
歷史回測(cè)引擎
:return:
'''
Engine = TestEngine(user_id=user_id,password=password,type='HistoryTrading')
print Engine.core
print Engine.current_time
print Engine.list_stratagy()#顯示當(dāng)前歷史回測(cè)引擎當(dāng)中存儲(chǔ)的交易策略
if Engine.list_stratagy():
'''
對(duì)于歷史回測(cè),需要在運(yùn)行的時(shí)候指定一個(gè)回測(cè)策略。最簡(jiǎn)單的方式就是創(chuàng)建一個(gè)新的策略然后直接指定該策略。
'''
Engine.del_stratagy(Engine.list_stratagy()[0]['strategy_name'])#刪除策略
Engine.create_stratagy(user_id)#創(chuàng)建新策略
Engine.set_stratagy(user_id)#將回測(cè)引擎指定為該策略
else:
Engine.create_stratagy(user_id)
Engine.set_stratagy(user_id)
print Engine.buy(code =600848,volume=1000,date = '2017-10-11')
Engine.current_time = '2018-4-8'#制定歷史回測(cè)引擎的交易日期
Engine.shift_current_time(1)#將歷史回測(cè)引擎的交易日期向后跳轉(zhuǎn)一天
print Engine.current_time
print Engine.sell(code='600848',volume=100)
print Engine.history_to_csv('history')#將交割單輸出到csv文件,需要傳入存儲(chǔ)csv文件的文件夾名,在
#本例子中,導(dǎo)入接口的項(xiàng)目下有一個(gè)名為history的文件夾,否則會(huì)提示路徑不存在
if __name__ == '__main__':
Realtime()
History()
1.接口不支持python3?。。。?!
2.接口現(xiàn)在僅提供最簡(jiǎn)單的交易方法和交易情況的查詢方法,目的是給用戶充分的自由度實(shí)現(xiàn)自己的策略
3.對(duì)于新手用戶,接口目前可能不夠友好,在實(shí)現(xiàn)自己的策略時(shí),可能會(huì)出現(xiàn)很多問(wèn)題,我們還提供了一套功能更加完善,更加傻瓜的模擬系統(tǒng)
附上github地址:https://github.com/NotTodayNotMe/Fintech.git
模擬系統(tǒng)是開(kāi)源的,歡迎大家使用并提出寶貴意見(jiàn)!
發(fā)帖時(shí)間:2018-08-03 19:53:14
最新修改時(shí)間:2018-08-31 13:35:46
![]()
跟帖時(shí)間:2019-06-18 16:06:40
python3兼容接口:
跟帖時(shí)間:2020-03-20 18:37:53