diff --git a/src/screener/t_atr_ema.py b/src/screener/t_atr_ema.py index dbedda2..e086bc1 100644 --- a/src/screener/t_atr_ema.py +++ b/src/screener/t_atr_ema.py @@ -78,20 +78,30 @@ def run_atr_ema_scanner(min_price: float, max_price: float, min_volume: int, por ticker, window_start, close, - volume + volume, + toDate(toDateTime(window_start/1000000000)) as trade_date FROM stock_db.stock_prices WHERE window_start BETWEEN {start_ts} AND {end_ts} AND toDateTime(window_start/1000000000) <= now() - AND close BETWEEN {min_price} AND {max_price} - AND volume >= {min_volume} + ), + daily_data AS ( + SELECT + ticker, + trade_date, + argMax(close, window_start) as daily_close, + sum(volume) as daily_volume + FROM filtered_data + GROUP BY ticker, trade_date + HAVING daily_close BETWEEN {min_price} AND {max_price} + AND daily_volume >= {min_volume} ), latest_data AS ( SELECT ticker, - argMax(close, window_start) as last_close, - sum(volume) as total_volume, - max(window_start) as last_update - FROM filtered_data + argMax(daily_close, trade_date) as last_close, + sum(daily_volume) as total_volume, + max(trade_date) as last_update + FROM daily_data GROUP BY ticker ) SELECT diff --git a/src/screener/t_atr_ema_v2.py b/src/screener/t_atr_ema_v2.py index 47bb62f..34c0771 100644 --- a/src/screener/t_atr_ema_v2.py +++ b/src/screener/t_atr_ema_v2.py @@ -87,20 +87,30 @@ def run_atr_ema_scanner_v2(min_price: float, max_price: float, min_volume: int, ticker, window_start, close, - volume + volume, + toDate(toDateTime(window_start/1000000000)) as trade_date FROM stock_db.stock_prices WHERE window_start BETWEEN {start_ts} AND {end_ts} AND toDateTime(window_start/1000000000) <= now() - AND close BETWEEN {min_price} AND {max_price} - AND volume >= {min_volume} + ), + daily_data AS ( + SELECT + ticker, + trade_date, + argMax(close, window_start) as daily_close, + sum(volume) as daily_volume + FROM filtered_data + GROUP BY ticker, trade_date + HAVING daily_close BETWEEN {min_price} AND {max_price} + AND daily_volume >= {min_volume} ), latest_data AS ( SELECT ticker, - argMax(close, window_start) as last_close, - sum(volume) as total_volume, - max(window_start) as last_update - FROM filtered_data + argMax(daily_close, trade_date) as last_close, + sum(daily_volume) as total_volume, + max(trade_date) as last_update + FROM daily_data GROUP BY ticker ) SELECT diff --git a/src/screener/t_sunnyband.py b/src/screener/t_sunnyband.py index 891bf8d..f94db76 100644 --- a/src/screener/t_sunnyband.py +++ b/src/screener/t_sunnyband.py @@ -221,20 +221,30 @@ def run_sunny_scanner(min_price: float, max_price: float, min_volume: int, portf ticker, window_start, close, - volume + volume, + toDate(toDateTime(window_start/1000000000)) as trade_date FROM stock_db.stock_prices WHERE window_start BETWEEN {start_ts} AND {end_ts} AND toDateTime(window_start/1000000000) <= now() - AND close BETWEEN {min_price} AND {max_price} - AND volume >= {min_volume} + ), + daily_data AS ( + SELECT + ticker, + trade_date, + argMax(close, window_start) as daily_close, + sum(volume) as daily_volume + FROM filtered_data + GROUP BY ticker, trade_date + HAVING daily_close BETWEEN {min_price} AND {max_price} + AND daily_volume >= {min_volume} ), latest_data AS ( SELECT ticker, - argMax(close, window_start) as last_close, - sum(volume) as total_volume, - max(window_start) as last_update - FROM filtered_data + argMax(daily_close, trade_date) as last_close, + sum(daily_volume) as total_volume, + max(trade_date) as last_update + FROM daily_data GROUP BY ticker ) SELECT