Skip to content

Commit

Permalink
修复在open_auction中获取current_snapshot的last为当天的close,应为open
Browse files Browse the repository at this point in the history
  • Loading branch information
Zhou-JiaJun committed Aug 25, 2023
1 parent e9fb651 commit 97580ee
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 4 deletions.
9 changes: 5 additions & 4 deletions rqalpha/data/data_proxy.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,17 +22,18 @@
import numpy as np
import pandas as pd

from rqalpha.const import INSTRUMENT_TYPE, TRADING_CALENDAR_TYPE
from rqalpha.const import INSTRUMENT_TYPE, TRADING_CALENDAR_TYPE, EXECUTION_PHASE
from rqalpha.utils import risk_free_helper, TimeRange, merge_trading_period
from rqalpha.data.trading_dates_mixin import TradingDatesMixin
from rqalpha.model.bar import BarObject, NANDict, PartialBarObject
from rqalpha.model.tick import TickObject
from rqalpha.model.instrument import Instrument
from rqalpha.model.order import TWAPOrder, VWAPOrder, ALGO_ORDER_STYLES
from rqalpha.model.order import ALGO_ORDER_STYLES
from rqalpha.utils.functools import lru_cache
from rqalpha.utils.datetime_func import convert_int_to_datetime, convert_date_to_int
from rqalpha.utils.typing import DateLike, StrOrIter
from rqalpha.interface import AbstractDataSource, AbstractPriceBoard
from rqalpha.core.execution_context import ExecutionContext


class DataProxy(TradingDatesMixin):
Expand Down Expand Up @@ -219,7 +220,7 @@ def tick_fields_for(ins):
]
_FUTURE_FIELD_NAMES = _STOCK_FIELD_NAMES + ['open_interest', 'prev_settlement']

if ins.type == 'Future':
if ins.type == INSTRUMENT_TYPE.FUTURE:
return _STOCK_FIELD_NAMES
else:
return _FUTURE_FIELD_NAMES
Expand All @@ -230,7 +231,7 @@ def tick_fields_for(ins):
if not bar:
return None
d = {k: bar[k] for k in tick_fields_for(instrument) if k in bar.dtype.names}
d['last'] = bar['close']
d["last"] = bar["open"] if ExecutionContext.phase() == EXECUTION_PHASE.OPEN_AUCTION else bar["close"]
d['prev_close'] = self._get_prev_close(order_book_id, dt)
return TickObject(instrument, d)

Expand Down
17 changes: 17 additions & 0 deletions tests/api_tests/test_api_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
# 在此前提下,对本软件的使用同样需要遵守 Apache 2.0 许可,Apache 2.0 许可与本许可冲突之处,以本许可为准。
# 详细的授权流程,请联系 [email protected] 获取。v

from datetime import date

__config__ = {
"base": {
"start_date": "2016-12-01",
Expand Down Expand Up @@ -253,6 +255,21 @@ def init(_):
return locals()


def test_get_current_snapshot():

def open_auction(context, bar_dict):
if date(2016, 12, 12) == context.now.date():
bar = current_snapshot("000001.XSHE")
assert bar["last"] == 9.65, "早盘集合竞价的current_snapshot的last不等于当天的open"

def handle_bar(context, bar_dict):
if date(2016, 12, 12) == context.now.date():
bar = current_snapshot("000001.XSHE")
assert bar["last"] == 9.5, "尾盘集合竞价的current_snapshot的last不等于当天的close"

return locals()


def test_get_previous_trading_date():
def init(_):
assert str(get_previous_trading_date('2017-01-03').date()) == '2016-12-30'
Expand Down

0 comments on commit 97580ee

Please sign in to comment.