fix get_positions in simulation trader

This commit is contained in:
zhiyong 2025-05-10 23:29:52 +08:00
parent 89b8ffe767
commit e525c9e5f7

View File

@ -9,6 +9,8 @@ from trade_constants import (
from position_manager import PositionManager from position_manager import PositionManager
from base_trader import BaseTrader from base_trader import BaseTrader
import random import random
from typing import Dict
from local_position import LocalPosition
class SimulationTrader(BaseTrader): class SimulationTrader(BaseTrader):
@ -130,11 +132,11 @@ class SimulationTrader(BaseTrader):
self.logger.info(message) self.logger.info(message)
position_managers = self.get_all_position_managers() position_managers = self.get_all_position_managers()
positions = {} positions: Dict[str, LocalPosition] = {}
for position_manager in position_managers.values(): for position_manager in position_managers.values():
positions.update(position_manager.get_positions()) positions.update(position_manager.get_positions())
# convert to json list # convert to json list
return [position.to_dict() for position in positions.values()] return [{"account_id": "simulation", "code": position.code, "total_amount": position.total_amount, "closeable_amount": position.closeable_amount} for position in positions.values()]
def get_today_trades(self): def get_today_trades(self):
message = "模拟交易:查询今日成交" message = "模拟交易:查询今日成交"
@ -157,15 +159,16 @@ class SimulationTrader(BaseTrader):
Returns: Returns:
dict: 持仓详情如果未持有则返回None dict: 持仓详情如果未持有则返回None
""" """
positions = self.position_manager.get_positions(strategy_name) position_manager = self.get_position_manager(strategy_name)
positions = position_manager.get_positions()
if stock_code in positions: if stock_code in positions:
position_info = positions[stock_code] position_info = positions[stock_code]
return { return {
"account_id": "simulation", "account_id": "simulation",
"stock_code": stock_code, "code": stock_code,
"strategy_name": strategy_name, "strategy_name": strategy_name,
"volume": position_info.total_amount, "total_amount": position_info.total_amount,
"can_use_volume": position_info.closeable_amount, "closeable_amount": position_info.closeable_amount,
} }
return None return None