mirror of
https://github.com/microsoft/qlib.git
synced 2026-07-03 11:00:57 +08:00
* Refine previous version RL codes
* Polish utils/__init__.py
* Draft
* Use | instead of Union
* Simulator & action interpreter
* Test passed
* Migrate to SAOEState & new qlib interpreter
* Black format
* . Revert file_storage change
* Refactor file structure & renaming functions
* Enrich test cases
* Add QlibIntradayBacktestData
* Test interpreter
* Black format
* .
.
.
* Rename receive_execute_result()
* Use indicator to simplify state update
* Format code
* Modify data path
* Adjust file structure
* Minor change
* Add copyright message
* Format code
* Rename util functions
* Add CI
* Pylint issue
* Remove useless code to pass pylint
* Pass mypy
* Mypy issue
* mypy issue
* mypy issue
* Revert "mypy issue"
This reverts commit 8eb1b0174e.
* mypy issue
* mypy issue
* Fix the numpy version incompatible bug
* Fix a minor typing issue
* Try to skip python 3.7 test for qlib simulator
* Resolve PR comments by Yuge; solve several CI issues.
* Black issue
* Fix a low-level type error
* Change data name
* Resolve PR comments. Leave TODOs in the code base.
Co-authored-by: Young <afe.young@gmail.com>
59 lines
1.7 KiB
Python
59 lines
1.7 KiB
Python
# Copyright (c) Microsoft Corporation.
|
|
# Licensed under the MIT License.
|
|
|
|
from typing import cast
|
|
|
|
import pandas as pd
|
|
|
|
from qlib.backtest import Exchange, Order
|
|
from .pickle_styled import IntradayBacktestData
|
|
|
|
|
|
class QlibIntradayBacktestData(IntradayBacktestData):
|
|
"""Backtest data for Qlib simulator"""
|
|
|
|
def __init__(self, order: Order, exchange: Exchange, start_time: pd.Timestamp, end_time: pd.Timestamp) -> None:
|
|
super(QlibIntradayBacktestData, self).__init__()
|
|
self._order = order
|
|
self._exchange = exchange
|
|
self._start_time = start_time
|
|
self._end_time = end_time
|
|
|
|
self._deal_price = cast(
|
|
pd.Series,
|
|
self._exchange.get_deal_price(
|
|
self._order.stock_id,
|
|
self._start_time,
|
|
self._end_time,
|
|
direction=self._order.direction,
|
|
method=None,
|
|
),
|
|
)
|
|
self._volume = cast(
|
|
pd.Series,
|
|
self._exchange.get_volume(
|
|
self._order.stock_id,
|
|
self._start_time,
|
|
self._end_time,
|
|
method=None,
|
|
),
|
|
)
|
|
|
|
def __repr__(self) -> str:
|
|
return (
|
|
f"Order: {self._order}, Exchange: {self._exchange}, "
|
|
f"Start time: {self._start_time}, End time: {self._end_time}"
|
|
)
|
|
|
|
def __len__(self) -> int:
|
|
return len(self._deal_price)
|
|
|
|
def get_deal_price(self) -> pd.Series:
|
|
return self._deal_price
|
|
|
|
def get_volume(self) -> pd.Series:
|
|
return self._volume
|
|
|
|
def get_time_index(self) -> pd.DatetimeIndex:
|
|
return pd.DatetimeIndex([e[1] for e in list(self._exchange.quote_df.index)])
|