[bug fix]

This commit is contained in:
msincenselee 2020-02-03 14:17:42 +08:00
parent f9aad85db9
commit ec75d5ffc5
3 changed files with 23 additions and 12 deletions

View File

@ -825,7 +825,12 @@ class CtaEngine(BaseEngine):
level=logging.CRITICAL)
def add_strategy(
self, class_name: str, strategy_name: str, vt_symbol: str, setting: dict
self, class_name: str,
strategy_name: str,
vt_symbol: str,
setting: dict,
auto_init: bool = False,
auto_start: bool = False
):
"""
Add a new strategy.
@ -858,8 +863,8 @@ class CtaEngine(BaseEngine):
self.put_strategy_event(strategy)
# 判断设置中是否由自动初始化和自动启动项目
if setting.get('auto_init', False):
self.init_strategy(strategy_name, auto_start=setting.get('auto_start', False))
if auto_init:
self.init_strategy(strategy_name, auto_start=auto_start)
def init_strategy(self, strategy_name: str, auto_start: bool = False):
"""
@ -1315,10 +1320,12 @@ class CtaEngine(BaseEngine):
for strategy_name, strategy_config in self.strategy_setting.items():
self.add_strategy(
strategy_config["class_name"],
strategy_name,
strategy_config["vt_symbol"],
strategy_config["setting"]
class_name=strategy_config["class_name"],
strategy_name=strategy_name,
vt_symbol=strategy_config["vt_symbol"],
setting=strategy_config["setting"],
auto_init=strategy_config.get('auto_init', False),
auto_start=strategy_config.get('auto_start', False)
)
def update_strategy_setting(self, strategy_name: str, setting: dict):
@ -1327,10 +1334,14 @@ class CtaEngine(BaseEngine):
"""
strategy = self.strategies[strategy_name]
strategy_config = self.strategy_setting.get('strategy_name', {})
self.strategy_setting[strategy_name] = {
"class_name": strategy.__class__.__name__,
"vt_symbol": strategy.vt_symbol,
"setting": setting,
"auto_init": strategy_config.get('auto_init', False),
"auto_start": strategy_config.get('auto_start', False),
"setting": setting
}
save_json(self.setting_filename, self.strategy_setting)

View File

@ -854,12 +854,12 @@ class PortfolioTestingEngine(object):
if 'auto_start' in strategy_setting:
strategy_setting.update({'auto_start': False})
# 强制更新回测为True
strategy_setting.update({'backtesting': True})
# 策略参数设置
setting = strategy_setting.get('setting', {})
# 强制更新回测为True
setting.update({'backtesting': True})
# 创建实例
strategy = strategy_class(self, strategy_name, vt_symbol, setting)

View File

@ -874,7 +874,7 @@ class CtaProTemplate(CtaTemplate):
# 找出非主力合约的持仓网格
for g in self.gt.get_opened_grids(direction=Direction.SHORT):
none_mi_symbol = g.snapshot.get('miSymbol')
none_mi_symbol = g.snapshot.get('mi_symbol')
if none_mi_symbol is None or none_mi_symbol == self.vt_symbol:
continue
if not g.open_status or g.order_status or g.volume - g.traded_volume <= 0: