feat(populate): add indicator calculation to populate script
This commit is contained in:
parent
d87733b80e
commit
46662a37a4
17
populate.py
17
populate.py
@ -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)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user