feat(populate): add indicator calculation to populate script

This commit is contained in:
Giulio De Pasquale 2025-10-18 11:33:59 +01:00
parent d87733b80e
commit 46662a37a4

View File

@ -7,6 +7,7 @@ from paperone.utils import (
get_last_n_trading_days, get_last_n_trading_days,
) )
from paperone.database import TradingDataCRUD from paperone.database import TradingDataCRUD
from paperone.indicators import IndicatorService
from paperone.client import Fetcher from paperone.client import Fetcher
from rich.progress import track from rich.progress import track
from datetime import datetime from datetime import datetime
@ -19,6 +20,7 @@ DB_FILE = "trading_data.db"
def main() -> NoReturn: def main() -> NoReturn:
fetcher = Fetcher() fetcher = Fetcher()
crud = TradingDataCRUD(f"sqlite:///{DB_FILE}") crud = TradingDataCRUD(f"sqlite:///{DB_FILE}")
ind = IndicatorService(crud)
date = datetime.now() date = datetime.now()
days_range = 360 * 10 days_range = 360 * 10
@ -48,17 +50,28 @@ def main() -> NoReturn:
for ticker in tickers + reference_tickers: for ticker in tickers + reference_tickers:
trading_days = get_last_n_trading_days(date, days_range) trading_days = get_last_n_trading_days(date, days_range)
start_date = trading_days[0] start_date = trading_days[0]
end_date = trading_days[-1] end_date = trading_days[-1]
all_ohlcv_data = fetcher.ticker_data_for(ticker, start_date, end_date) all_ohlcv_data = fetcher.ticker_data_for(ticker, start_date, end_date)
for ohlcv in track(all_ohlcv_data, description=f"{ticker}"):
ohlcv_dates = []
for ohlcv in track(all_ohlcv_data, description=f"{ticker} OHLCV"):
existing = crud.get_ohlcv(ticker, ohlcv.date) existing = crud.get_ohlcv(ticker, ohlcv.date)
if not existing: if not existing:
crud.create_ohlcv(ohlcv) crud.create_ohlcv(ohlcv)
ohlcv_dates.append(ohlcv.date)
for calc_date in track(ohlcv_dates, description=f"{ticker} Indicators"):
existing_indicator = crud.get_indicators(ticker, calc_date)
if existing_indicator:
continue
ind.calculate_and_save_indicators(ticker=ticker, target_date=calc_date)
exit(0) exit(0)