Skip to content

Commit a8f41e1

Browse files
committed
typo
1 parent a498eb0 commit a8f41e1

File tree

3 files changed

+254
-247
lines changed

3 files changed

+254
-247
lines changed

vnpy_algotrading/engine.py

+78-64
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,63 @@
1+
from typing import Any, Optional
12

23
from vnpy.event import EventEngine, Event
34
from vnpy.trader.engine import BaseEngine, MainEngine
45
from vnpy.trader.event import (
5-
EVENT_TICK, EVENT_TIMER, EVENT_ORDER, EVENT_TRADE)
6-
from vnpy.trader.constant import (Direction, Offset, OrderType)
7-
from vnpy.trader.object import (SubscribeRequest, OrderRequest, LogData)
6+
EVENT_TICK,
7+
EVENT_TIMER,
8+
EVENT_ORDER,
9+
EVENT_TRADE
10+
)
11+
from vnpy.trader.constant import Direction, Offset, OrderType
12+
from vnpy.trader.object import (
13+
SubscribeRequest,
14+
OrderRequest,
15+
LogData,
16+
ContractData,
17+
OrderData,
18+
TickData,
19+
CancelRequest
20+
)
821
from vnpy.trader.utility import load_json, save_json, round_to
9-
from vnpy.trader.setting import SETTINGS
1022

1123
from .template import AlgoTemplate
1224
from .base import (
13-
EVENT_ALGO_LOG, EVENT_ALGO_PARAMETERS,
14-
EVENT_ALGO_SETTING, EVENT_ALGO_VARIABLES,
25+
EVENT_ALGO_LOG,
26+
EVENT_ALGO_PARAMETERS,
27+
EVENT_ALGO_SETTING,
28+
EVENT_ALGO_VARIABLES,
1529
APP_NAME
1630
)
1731

1832

1933
class AlgoEngine(BaseEngine):
2034
""""""
21-
setting_filename = "algo_trading_setting.json"
35+
setting_filename: str = "algo_trading_setting.json"
2236

2337
def __init__(self, main_engine: MainEngine, event_engine: EventEngine):
2438
"""构造函数"""
2539
super().__init__(main_engine, event_engine, APP_NAME)
2640

27-
self.algos = {}
28-
self.symbol_algo_map = {}
29-
self.orderid_algo_map = {}
41+
self.algos: dict = {}
42+
self.symbol_algo_map: dict = {}
43+
self.orderid_algo_map: dict = {}
3044

31-
self.algo_templates = {}
32-
self.algo_settings = {}
45+
self.algo_templates: dict = {}
46+
self.algo_settings: dict = {}
3347

3448
self.load_algo_template()
3549
self.register_event()
3650

37-
def init_engine(self):
51+
def init_engine(self) -> None:
3852
""""""
3953
self.write_log("算法交易引擎启动")
4054
self.load_algo_setting()
4155

42-
def close(self):
56+
def close(self) -> None:
4357
""""""
4458
pass
4559

46-
def load_algo_template(self):
60+
def load_algo_template(self) -> None:
4761
""""""
4862
from .algos.twap_algo import TwapAlgo
4963
from .algos.iceberg_algo import IcebergAlgo
@@ -63,94 +77,94 @@ def load_algo_template(self):
6377
self.add_algo_template(DmaAlgo)
6478
self.add_algo_template(ArbitrageAlgo)
6579

66-
def add_algo_template(self, template: AlgoTemplate):
80+
def add_algo_template(self, template: AlgoTemplate) -> None:
6781
""""""
6882
self.algo_templates[template.__name__] = template
6983

70-
def load_algo_setting(self):
84+
def load_algo_setting(self) -> None:
7185
""""""
72-
self.algo_settings = load_json(self.setting_filename)
86+
self.algo_settings: dict = load_json(self.setting_filename)
7387

7488
for setting_name, setting in self.algo_settings.items():
7589
self.put_setting_event(setting_name, setting)
7690

7791
self.write_log("算法配置载入成功")
7892

79-
def save_algo_setting(self):
93+
def save_algo_setting(self) -> None:
8094
""""""
8195
save_json(self.setting_filename, self.algo_settings)
8296

83-
def register_event(self):
97+
def register_event(self) -> None:
8498
""""""
8599
self.event_engine.register(EVENT_TICK, self.process_tick_event)
86100
self.event_engine.register(EVENT_TIMER, self.process_timer_event)
87101
self.event_engine.register(EVENT_ORDER, self.process_order_event)
88102
self.event_engine.register(EVENT_TRADE, self.process_trade_event)
89103

90-
def process_tick_event(self, event: Event):
104+
def process_tick_event(self, event: Event) -> None:
91105
""""""
92-
tick = event.data
106+
tick: Any = event.data
93107

94-
algos = self.symbol_algo_map.get(tick.vt_symbol, None)
108+
algos: Any = self.symbol_algo_map.get(tick.vt_symbol, None)
95109
if algos:
96110
for algo in algos:
97111
algo.update_tick(tick)
98112

99-
def process_timer_event(self, event: Event):
113+
def process_timer_event(self, event: Event) -> None:
100114
""""""
101115
# 生成列表避免字典改变
102-
algos = list(self.algos.values())
116+
algos: list = list(self.algos.values())
103117

104118
for algo in algos:
105119
algo.update_timer()
106120

107-
def process_trade_event(self, event: Event):
121+
def process_trade_event(self, event: Event) -> None:
108122
""""""
109-
trade = event.data
123+
trade: Any = event.data
110124

111-
algo = self.orderid_algo_map.get(trade.vt_orderid, None)
125+
algo: Optional[AlgoTemplate] = self.orderid_algo_map.get(trade.vt_orderid, None)
112126
if algo:
113127
algo.update_trade(trade)
114128

115-
def process_order_event(self, event: Event):
129+
def process_order_event(self, event: Event) -> None:
116130
""""""
117-
order = event.data
131+
order: Any = event.data
118132

119-
algo = self.orderid_algo_map.get(order.vt_orderid, None)
133+
algo: Optional[AlgoTemplate] = self.orderid_algo_map.get(order.vt_orderid, None)
120134
if algo:
121135
algo.update_order(order)
122136

123-
def start_algo(self, setting: dict):
137+
def start_algo(self, setting: dict) -> str:
124138
""""""
125139
template_name: str = setting["template_name"]
126-
algo_template = self.algo_templates[template_name]
140+
algo_template: AlgoTemplate = self.algo_templates[template_name]
127141

128-
algo = algo_template.new(self, setting)
142+
algo: AlgoTemplate = algo_template.new(self, setting)
129143
algo.start()
130144

131145
self.algos[algo.algo_name] = algo
132146
return algo.algo_name
133147

134-
def stop_algo(self, algo_name: str):
148+
def stop_algo(self, algo_name: str) -> None:
135149
""""""
136-
algo = self.algos.get(algo_name, None)
150+
algo: Optional[AlgoTemplate] = self.algos.get(algo_name, None)
137151
if algo:
138152
algo.stop()
139153
self.algos.pop(algo_name)
140154

141-
def stop_all(self):
155+
def stop_all(self) -> None:
142156
""""""
143157
for algo_name in list(self.algos.keys()):
144158
self.stop_algo(algo_name)
145159

146-
def subscribe(self, algo: AlgoTemplate, vt_symbol: str):
160+
def subscribe(self, algo: AlgoTemplate, vt_symbol: str) -> None:
147161
""""""
148-
contract = self.main_engine.get_contract(vt_symbol)
162+
contract: Optional[ContractData] = self.main_engine.get_contract(vt_symbol)
149163
if not contract:
150164
self.write_log(f'订阅行情失败,找不到合约:{vt_symbol}', algo)
151165
return
152166

153-
algos = self.symbol_algo_map.setdefault(vt_symbol, set())
167+
algos: Any = self.symbol_algo_map.setdefault(vt_symbol, set())
154168

155169
if not algos:
156170
req = SubscribeRequest(
@@ -170,18 +184,18 @@ def send_order(
170184
volume: float,
171185
order_type: OrderType,
172186
offset: Offset
173-
):
187+
) -> str:
174188
""""""
175-
contract = self.main_engine.get_contract(vt_symbol)
189+
contract: Optional[ContractData] = self.main_engine.get_contract(vt_symbol)
176190
if not contract:
177191
self.write_log(f'委托下单失败,找不到合约:{vt_symbol}', algo)
178192
return
179193

180-
volume = round_to(volume, contract.min_volume)
194+
volume: float = round_to(volume, contract.min_volume)
181195
if not volume:
182196
return ""
183197

184-
req = OrderRequest(
198+
req: OrderRequest = OrderRequest(
185199
symbol=contract.symbol,
186200
exchange=contract.exchange,
187201
direction=direction,
@@ -191,73 +205,73 @@ def send_order(
191205
offset=offset,
192206
reference=f"{APP_NAME}_{algo.algo_name}"
193207
)
194-
vt_orderid = self.main_engine.send_order(req, contract.gateway_name)
208+
vt_orderid: str = self.main_engine.send_order(req, contract.gateway_name)
195209

196210
self.orderid_algo_map[vt_orderid] = algo
197211
return vt_orderid
198212

199-
def cancel_order(self, algo: AlgoTemplate, vt_orderid: str):
213+
def cancel_order(self, algo: AlgoTemplate, vt_orderid: str) -> None:
200214
""""""
201-
order = self.main_engine.get_order(vt_orderid)
215+
order: Optional[OrderData] = self.main_engine.get_order(vt_orderid)
202216

203217
if not order:
204218
self.write_log(f"委托撤单失败,找不到委托:{vt_orderid}", algo)
205219
return
206220

207-
req = order.create_cancel_request()
221+
req: CancelRequest = order.create_cancel_request()
208222
self.main_engine.cancel_order(req, order.gateway_name)
209223

210-
def get_tick(self, algo: AlgoTemplate, vt_symbol: str):
224+
def get_tick(self, algo: AlgoTemplate, vt_symbol: str) -> Optional[TickData]:
211225
""""""
212-
tick = self.main_engine.get_tick(vt_symbol)
226+
tick: Optional[TickData] = self.main_engine.get_tick(vt_symbol)
213227

214228
if not tick:
215229
self.write_log(f"查询行情失败,找不到行情:{vt_symbol}", algo)
216230

217231
return tick
218232

219-
def get_contract(self, algo: AlgoTemplate, vt_symbol: str):
233+
def get_contract(self, algo: AlgoTemplate, vt_symbol: str) -> Optional[ContractData]:
220234
""""""
221-
contract = self.main_engine.get_contract(vt_symbol)
235+
contract: Optional[ContractData] = self.main_engine.get_contract(vt_symbol)
222236

223237
if not contract:
224238
self.write_log(f"查询合约失败,找不到合约:{vt_symbol}", algo)
225239

226240
return contract
227241

228-
def write_log(self, msg: str, algo: AlgoTemplate = None):
242+
def write_log(self, msg: str, algo: AlgoTemplate = None) -> None:
229243
""""""
230244
if algo:
231245
msg = f"{algo.algo_name}{msg}"
232246

233-
log = LogData(msg=msg, gateway_name=APP_NAME)
234-
event = Event(EVENT_ALGO_LOG, data=log)
247+
log: LogData = LogData(msg=msg, gateway_name=APP_NAME)
248+
event: Event = Event(EVENT_ALGO_LOG, data=log)
235249
self.event_engine.put(event)
236250

237-
def put_setting_event(self, setting_name: str, setting: dict):
251+
def put_setting_event(self, setting_name: str, setting: dict) -> None:
238252
""""""
239-
event = Event(EVENT_ALGO_SETTING)
253+
event: Event = Event(EVENT_ALGO_SETTING)
240254
event.data = {
241255
"setting_name": setting_name,
242256
"setting": setting
243257
}
244258
self.event_engine.put(event)
245259

246-
def update_algo_setting(self, setting_name: str, setting: dict):
260+
def update_algo_setting(self, setting_name: str, setting: dict) -> None:
247261
""""""
248262
self.algo_settings[setting_name] = setting
249263

250264
self.save_algo_setting()
251265

252266
self.put_setting_event(setting_name, setting)
253267

254-
def remove_algo_setting(self, setting_name: str):
268+
def remove_algo_setting(self, setting_name: str) -> None:
255269
""""""
256270
if setting_name not in self.algo_settings:
257271
return
258272
self.algo_settings.pop(setting_name)
259273

260-
event = Event(EVENT_ALGO_SETTING)
274+
event: Event = Event(EVENT_ALGO_SETTING)
261275
event.data = {
262276
"setting_name": setting_name,
263277
"setting": None
@@ -266,18 +280,18 @@ def remove_algo_setting(self, setting_name: str):
266280

267281
self.save_algo_setting()
268282

269-
def put_parameters_event(self, algo: AlgoTemplate, parameters: dict):
283+
def put_parameters_event(self, algo: AlgoTemplate, parameters: dict) -> None:
270284
""""""
271-
event = Event(EVENT_ALGO_PARAMETERS)
285+
event: Event = Event(EVENT_ALGO_PARAMETERS)
272286
event.data = {
273287
"algo_name": algo.algo_name,
274288
"parameters": parameters
275289
}
276290
self.event_engine.put(event)
277291

278-
def put_variables_event(self, algo: AlgoTemplate, variables: dict):
292+
def put_variables_event(self, algo: AlgoTemplate, variables: dict) -> None:
279293
""""""
280-
event = Event(EVENT_ALGO_VARIABLES)
294+
event: Event = Event(EVENT_ALGO_VARIABLES)
281295
event.data = {
282296
"algo_name": algo.algo_name,
283297
"variables": variables

0 commit comments

Comments
 (0)