feat(data): DataReader SQLite + 交易所判断 + vnpy 4.4.0 spike 点
This commit is contained in:
@@ -12,6 +12,7 @@ import pandas as pd
|
||||
from datetime import datetime
|
||||
from vnpy.trader.object import BarData
|
||||
from vnpy.trader.constant import Exchange, Interval
|
||||
from vnpy.trader.database import get_database
|
||||
|
||||
def read_parquet_daily(symbol: str, start: str, end: str, cfg) -> list[BarData]:
|
||||
daily_dir = Path(cfg.data_paths["daily_dir"])
|
||||
@@ -32,7 +33,7 @@ def read_parquet_daily(symbol: str, start: str, end: str, cfg) -> list[BarData]:
|
||||
def _row_to_bar(symbol: str, row, interval: Interval) -> BarData:
|
||||
return BarData(
|
||||
symbol=symbol,
|
||||
exchange=Exchange.SSE, # Task 4 改为 guess_exchange
|
||||
exchange=guess_exchange(symbol), # Task 4 已改为 guess_exchange
|
||||
datetime=pd.to_datetime(row["date"]).to_pydatetime(),
|
||||
interval=interval,
|
||||
open_price=float(row["open"]),
|
||||
@@ -42,3 +43,25 @@ def _row_to_bar(symbol: str, row, interval: Interval) -> BarData:
|
||||
volume=float(row["volume"]),
|
||||
gateway_name="DATA",
|
||||
)
|
||||
|
||||
|
||||
def guess_exchange(symbol: str) -> Exchange:
|
||||
"""按代码前缀判断交易所:6/68/5x→SSE,0/3/15x→SZSE"""
|
||||
if symbol.startswith(("60", "68", "51", "56", "58")):
|
||||
return Exchange.SSE
|
||||
if symbol.startswith(("00", "30", "15")):
|
||||
return Exchange.SZSE
|
||||
return Exchange.SSE
|
||||
|
||||
|
||||
def read_db_daily(symbol: str, start: str, end: str, cfg) -> list[BarData]:
|
||||
db = get_database()
|
||||
start_dt = datetime.strptime(start, "%Y-%m-%d")
|
||||
end_dt = datetime.strptime(end, "%Y-%m-%d")
|
||||
return db.load_bar_data(
|
||||
symbol=symbol,
|
||||
exchange=guess_exchange(symbol),
|
||||
interval=Interval.DAILY,
|
||||
start=start_dt,
|
||||
end=end_dt,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user