1
0
mirror of https://github.com/microsoft/qlib.git synced 2026-07-05 12:00:58 +08:00

Merge branch 'nested_decision_exe' of github.com:microsoft/qlib into nested_decision_exe

This commit is contained in:
Young
2021-07-16 03:12:09 +00:00
4 changed files with 24 additions and 20 deletions

View File

@@ -128,8 +128,8 @@ class OrderHelper:
code: str,
amount: float,
direction: OrderDir,
start_time: Union[str, pd.Timestamp]=None,
end_time: Union[str, pd.Timestamp]=None,
start_time: Union[str, pd.Timestamp] = None,
end_time: Union[str, pd.Timestamp] = None,
) -> Order:
"""
help to create a order
@@ -410,7 +410,7 @@ class BaseTradeDecision:
_start_idx, _end_idx = max(0, _start_idx), min(self.total_step - 1, _end_idx)
return _start_idx, _end_idx
def get_data_cal_range_limit(self, rtype: str="full", raise_error: bool = False) -> Tuple[int, int]:
def get_data_cal_range_limit(self, rtype: str = "full", raise_error: bool = False) -> Tuple[int, int]:
"""
get the range limit based on data calendar

View File

@@ -100,7 +100,7 @@ class TradeCalendarManager:
Parameters
----------
trade_step : int, optional
the number of trading step finished, by default None to indicate
the number of trading step finished, by default None to indicate current step
shift : int, optional
shift bars , by default 0
@@ -239,8 +239,9 @@ class LevelInfrastructure(BaseInfrastructure):
if self.has("trade_calendar"):
self.get("trade_calendar").reset(freq, start_time=start_time, end_time=end_time)
else:
self.reset_infra(trade_calendar=TradeCalendarManager(freq, start_time=start_time, end_time=end_time,
level_infra=self))
self.reset_infra(
trade_calendar=TradeCalendarManager(freq, start_time=start_time, end_time=end_time, level_infra=self)
)
def set_sub_level_infra(self, sub_level_infra: LevelInfrastructure):
"""this will make the calendar access easier when acrossing multi-levels"""

View File

@@ -313,7 +313,9 @@ class SBBStrategyEMA(SBBStrategyBase):
if isinstance(instruments, str):
self.instruments = D.instruments(instruments)
self.freq = freq
super(SBBStrategyEMA, self).__init__(outer_trade_decision, level_infra, common_infra, trade_exchange=trade_exchange, **kwargs)
super(SBBStrategyEMA, self).__init__(
outer_trade_decision, level_infra, common_infra, trade_exchange=trade_exchange, **kwargs
)
def _reset_signal(self):
trade_len = self.trade_calendar.get_trade_len()
@@ -396,11 +398,9 @@ class ACStrategy(BaseStrategy):
if isinstance(instruments, str):
self.instruments = D.instruments(instruments)
self.freq = freq
super(ACStrategy, self).__init__(outer_trade_decision,
level_infra,
common_infra,
trade_exchange=trade_exchange,
**kwargs)
super(ACStrategy, self).__init__(
outer_trade_decision, level_infra, common_infra, trade_exchange=trade_exchange, **kwargs
)
def _reset_signal(self):
trade_len = self.trade_calendar.get_trade_len()
@@ -561,11 +561,14 @@ class RandomOrderStrategy(BaseStrategy):
if step_time_start in self.volume_df:
for stock_id, volume in self.volume_df[step_time_start].dropna().sample(frac=self.sample_ratio).items():
order_list.append(
self.common_infra.get("trade_exchange").get_order_helper().create(
self.common_infra.get("trade_exchange")
.get_order_helper()
.create(
code=stock_id,
amount=volume * self.volume_ratio,
direction=self.direction,
))
)
)
return TradeDecisionWO(order_list, self, self.trade_range)
@@ -575,7 +578,9 @@ class FileOrderStrategy(BaseStrategy):
- This class provides an interface for user to read orders from csv files.
"""
def __init__(self, file: Union[IO, str, Path], trade_range: Union[Tuple[int, int], TradeRange]= None, *args, **kwargs):
def __init__(
self, file: Union[IO, str, Path], trade_range: Union[Tuple[int, int], TradeRange] = None, *args, **kwargs
):
"""
Parameters

View File

@@ -91,10 +91,9 @@ class BaseStrategy:
1. Users want to initialize his strategy by overriding `reset`, but they don't want to affect the `_reset` called
when initialization
"""
self._reset(level_infra=level_infra,
common_infra=common_infra,
outer_trade_decision=outer_trade_decision,
**kwargs)
self._reset(
level_infra=level_infra, common_infra=common_infra, outer_trade_decision=outer_trade_decision, **kwargs
)
def _reset(
self,
@@ -114,7 +113,6 @@ class BaseStrategy:
if outer_trade_decision is not None:
self.outer_trade_decision = outer_trade_decision
def generate_trade_decision(self, execute_result=None):
"""Generate trade decision in each trading bar