12
12
import simplejson
13
13
from aiohttp import web
14
14
15
- import tqsdk
15
+ import tqsdk .api
16
+ import tqsdk .sim
17
+ import tqsdk .backtest
16
18
from tqsdk .datetime import _get_trading_day_start_time
17
19
18
20
@@ -36,12 +38,12 @@ def __init__(self, api):
36
38
self ._api ._backtest = None
37
39
self ._logger .info ("正在使用账户 {bid}, {aid} 运行策略。" .format (bid = args ["_broker_id" ], aid = args ["_account_id" ]))
38
40
elif args ["_action" ] == "backtest" :
39
- self ._api ._account = tqsdk .api .TqSim (args ["_init_balance" ])
40
- self ._api ._backtest = tqsdk .api .TqBacktest (start_dt = datetime .strptime (args ["_start_dt" ], '%Y%m%d' ),
41
+ self ._api ._account = tqsdk .sim .TqSim (args ["_init_balance" ])
42
+ self ._api ._backtest = tqsdk .backtest .TqBacktest (start_dt = datetime .strptime (args ["_start_dt" ], '%Y%m%d' ),
41
43
end_dt = datetime .strptime (args ["_end_dt" ], '%Y%m%d' ))
42
44
self ._logger .info ("当前回测区间 {sdt} - {edt}。" .format (sdt = args ["_start_dt" ], edt = args ["_end_dt" ]))
43
45
elif args ["_action" ] == "replay" :
44
- self ._api ._backtest = tqsdk .api .TqReplay (datetime .strptime (args ["_replay_dt" ], '%Y%m%d' ))
46
+ self ._api ._backtest = tqsdk .backtest .TqReplay (datetime .strptime (args ["_replay_dt" ], '%Y%m%d' ))
45
47
self ._logger .info ("当前复盘日期 {rdt}。" .format (rdt = args ["_replay_dt" ]))
46
48
if args ["_http_server_address" ]:
47
49
self ._api ._web_gui = True # 命令行 _http_server_address, 一定打开 _web_gui
@@ -69,9 +71,9 @@ async def _run(self, api_send_chan, api_recv_chan, web_send_chan, web_recv_chan)
69
71
# 初始化数据截面
70
72
self ._data = {
71
73
"action" : {
72
- "mode" : "replay" if isinstance (self ._api ._backtest , tqsdk .api .TqReplay ) else "backtest" if isinstance (self ._api ._backtest , tqsdk .api .TqBacktest ) else "run" ,
74
+ "mode" : "replay" if isinstance (self ._api ._backtest , tqsdk .backtest .TqReplay ) else "backtest" if isinstance (self ._api ._backtest , tqsdk .backtest .TqBacktest ) else "run" ,
73
75
"md_url_status" : '-' ,
74
- "td_url_status" : True if isinstance (self ._api ._account , tqsdk .api .TqSim ) else '-' ,
76
+ "td_url_status" : True if isinstance (self ._api ._account , tqsdk .sim .TqSim ) else '-' ,
75
77
"account_id" : self ._api ._account ._account_id ,
76
78
"broker_id" : self ._api ._account ._broker_id if isinstance (self ._api ._account , tqsdk .api .TqAccount ) else 'TQSIM' ,
77
79
"file_path" : file_path [0 ].upper () + file_path [1 :],
@@ -302,7 +304,7 @@ async def link_httpserver(self):
302
304
"md_url" : self ._api ._md_url ,
303
305
}
304
306
# TODO:在复盘模式下发送 replay_dt 给 web 端,服务器改完后可以去掉
305
- if isinstance (self ._api ._backtest , tqsdk .api .TqReplay ):
307
+ if isinstance (self ._api ._backtest , tqsdk .backtest .TqReplay ):
306
308
url_response ["replay_dt" ] = int (datetime .combine (self ._api ._backtest ._replay_dt , datetime .min .time ()).timestamp () * 1e9 )
307
309
app = web .Application ()
308
310
app .router .add_get (path = '/url' , handler = lambda request : TqWebHelper .httpserver_url_handler (url_response ))
0 commit comments