Skip to content

Commit

Permalink
[Mod] 优化代码细节实现
Browse files Browse the repository at this point in the history
  • Loading branch information
vnpy committed Nov 25, 2022
1 parent 37dab93 commit 1be99be
Show file tree
Hide file tree
Showing 5 changed files with 106 additions and 88 deletions.
1 change: 0 additions & 1 deletion vnpy_algotrading/algos/best_limit_algo.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
from vnpy.trader.constant import Direction
from vnpy.trader.object import TradeData, OrderData, TickData
from vnpy.trader.engine import BaseEngine
from vnpy.trader.utility import round_to

from ..template import AlgoTemplate

Expand Down
18 changes: 11 additions & 7 deletions vnpy_algotrading/engine.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from collections import defaultdict
from typing import Dict, List, Optional, Set
from typing import Dict, List, Optional, Set, Type

from vnpy.event import EventEngine, Event
from vnpy.trader.engine import BaseEngine, MainEngine
Expand Down Expand Up @@ -38,11 +38,11 @@ def __init__(self, main_engine: MainEngine, event_engine: EventEngine) -> None:
"""构造函数"""
super().__init__(main_engine, event_engine, APP_NAME)

self.algo_templates: Dict[str, Type[AlgoTemplate]] = {}

self.algos: Dict[str, AlgoTemplate] = {}
self.symbol_algo_map: Dict[str, Set[AlgoTemplate]] = defaultdict(set)
self.orderid_algo_map: dict = {}

self.algo_templates: dict = {}
self.orderid_algo_map: Dict[str, AlgoTemplate] = {}

self.load_algo_template()
self.register_event()
Expand All @@ -53,7 +53,7 @@ def init_engine(self) -> None:

def close(self) -> None:
"""关闭引擎"""
pass
self.stop_all()

def load_algo_template(self) -> None:
"""载入算法类"""
Expand Down Expand Up @@ -118,6 +118,7 @@ def process_order_event(self, event: Event) -> None:

def start_algo(
self,
template_name: str,
vt_symbol: str,
direction: Direction,
offset: Offset,
Expand All @@ -131,7 +132,6 @@ def start_algo(
self.write_log(f'算法启动失败,找不到合约:{vt_symbol}')
return ""

template_name: str = setting["template_name"]
algo_template: AlgoTemplate = self.algo_templates[template_name]

# 创建算法实例
Expand Down Expand Up @@ -261,7 +261,11 @@ def write_log(self, msg: str, algo: AlgoTemplate = None) -> None:

def put_algo_event(self, algo: AlgoTemplate, data: dict) -> None:
"""推送更新"""
if algo in self.algos.values() and algo.status in [AlgoStatus.STOPPED, AlgoStatus.FINISHED]:
# 移除运行结束的算法实例
if (
algo in self.algos.values()
and algo.status in [AlgoStatus.STOPPED, AlgoStatus.FINISHED]
):
self.algos.pop(algo.algo_name)

for algos in self.symbol_algo_map.values():
Expand Down
14 changes: 9 additions & 5 deletions vnpy_algotrading/template.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from typing import Dict, Optional
from typing import Dict, Optional, TYPE_CHECKING

from vnpy.trader.engine import BaseEngine
from vnpy.trader.object import TickData, OrderData, TradeData, ContractData
Expand All @@ -7,6 +7,9 @@

from .base import AlgoStatus

if TYPE_CHECKING:
from .engine import AlgoEngine


class AlgoTemplate:
"""算法模板"""
Expand All @@ -19,7 +22,7 @@ class AlgoTemplate:

def __init__(
self,
algo_engine: BaseEngine,
algo_engine: "AlgoEngine",
algo_name: str,
vt_symbol: str,
direction: Direction,
Expand All @@ -38,9 +41,10 @@ def __init__(
self.price: float = price
self.volume: int = volume

self.status: str = AlgoStatus.PAUSED
self.status: AlgoStatus = AlgoStatus.PAUSED
self.traded: float = 0
self.traded_price: float = 0

self.active_orders: Dict[str, OrderData] = {} # vt_orderid:order

def update_tick(self, tick: TickData) -> None:
Expand Down Expand Up @@ -217,9 +221,9 @@ def get_data(self) -> dict:
"price": self.price,
"volume": self.volume,
"status": self.status,
"traded_price": self.traded_price,
"traded": self.traded,
"nottraded": self.volume - self.traded,
"left": self.volume - self.traded,
"traded_price": self.traded_price,
"parameters": self.get_parameters(),
"variables": self.get_variables()
}
Expand Down
4 changes: 1 addition & 3 deletions vnpy_algotrading/ui/display.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"status": "算法状态",
"traded_price": "成交均价",
"traded": "成交数量",
"nottraded": "剩余数量",
"left": "剩余数量",
"order_volume": "单笔委托",
"timer_count": "本轮读秒",
"total_count": "累计读秒",
Expand All @@ -24,10 +24,8 @@
"spread_up": "价差上限",
"spread_down": "价差下限",
"max_pos": "最大持仓",

"start_time": "开始时间",
"end_time": "结束时间",

"min_volume": "最小委托量",
"max_volume": "最大委托量",
"volume_change": "委托量变化"
Expand Down
Loading

0 comments on commit 1be99be

Please sign in to comment.