vnpy_ctastrategy/engine.py与vnpy_ctastrategy/backtesting.py中对load_bar函数的定义如以下代码所示,为什么load_bar(10),在回测时是加载10个交易日数据用于初始化,实盘中是加载10个自然日数据用于初始化呢? 从代码来看无论是回测还是实盘,start: datetime = end - timedelta(days)都是减少的10个自然日啊? 望解答一下,谢谢
vnpy_ctastrategy/engine.py
def load_bar(
self,
vt_symbol: str,
days: int,
interval: Interval,
callback: Callable[[BarData], None],
use_database: bool
) -> List[BarData]:
""""""
symbol, exchange = extract_vt_symbol(vt_symbol)
end: datetime = datetime.now(DB_TZ)
start: datetime = end - timedelta(days)
bars: List[BarData] = []
# Pass gateway and datafeed if use_database set to True
if not use_database:
# Query bars from gateway if available
contract: Optional[ContractData] = self.main_engine.get_contract(vt_symbol)
if contract and contract.history_data:
req: HistoryRequest = HistoryRequest(
symbol=symbol,
exchange=exchange,
interval=interval,
start=start,
end=end
)
bars: List[BarData] = self.main_engine.query_history(req, contract.gateway_name)
# Try to query bars from datafeed, if not found, load from database.
else:
bars: List[BarData] = self.query_bar_from_datafeed(symbol, exchange, interval, start, end)
if not bars:
bars: List[BarData] = self.database.load_bar_data(
symbol=symbol,
exchange=exchange,
interval=interval,
start=start,
end=end,
)
return bars
vnpy_ctastrategy/backtesting.py
def load_bar(
self,
vt_symbol: str,
days: int,
interval: Interval,
callback: Callable,
use_database: bool
) -> List[BarData]:
""""""
self.callback = callback
init_end = self.start - INTERVAL_DELTA_MAP[interval]
init_start = self.start - timedelta(days=days)
symbol, exchange = extract_vt_symbol(vt_symbol)
bars: List[BarData] = load_bar_data(
symbol,
exchange,
interval,
init_start,
init_end
)
return bars