diff --git a/src/screener/scanner_controller.py b/src/screener/scanner_controller.py index f90b903..e57e6e8 100644 --- a/src/screener/scanner_controller.py +++ b/src/screener/scanner_controller.py @@ -1,25 +1,30 @@ from screener.t_sunnyband import run_sunny_scanner from screener.t_atr_ema import run_atr_ema_scanner from screener.t_atr_ema_v2 import run_atr_ema_scanner_v2 -from utils.data_utils import get_float_input -def get_scanner_parameters(): - """Get user input for scanner parameters""" - min_price = get_float_input("Enter minimum stock price ($): ") - max_price = get_float_input("Enter maximum stock price ($): ") - min_volume = int(input("Enter minimum volume: ")) - portfolio_size = get_float_input("Enter portfolio size ($) or 0 to skip position sizing: ") - return min_price, max_price, min_volume, portfolio_size - -def run_technical_scanner(scanner_choice: str): - """Run the selected technical scanner""" - min_price, max_price, min_volume, portfolio_size = get_scanner_parameters() +def run_technical_scanner(scanner_choice: str, start_date: str, end_date: str, + min_price: float, max_price: float, min_volume: int, + portfolio_size: float): + """ + Run the selected technical scanner with provided parameters - if scanner_choice == "1": - run_sunny_scanner(min_price, max_price, min_volume, portfolio_size) - elif scanner_choice == "2": - run_atr_ema_scanner(min_price, max_price, min_volume, portfolio_size) - elif scanner_choice == "3": - run_atr_ema_scanner_v2(min_price, max_price, min_volume, portfolio_size) + Args: + scanner_choice (str): Type of scanner to run + start_date (str): Start date in YYYY-MM-DD format + end_date (str): End date in YYYY-MM-DD format + min_price (float): Minimum stock price + max_price (float): Maximum stock price + min_volume (int): Minimum volume + portfolio_size (float): Portfolio size for position sizing + """ + scanner_map = { + "sunnybands": lambda: run_sunny_scanner(min_price, max_price, min_volume, portfolio_size), + "atr-ema": lambda: run_atr_ema_scanner(min_price, max_price, min_volume, portfolio_size), + "atr-ema_v2": lambda: run_atr_ema_scanner_v2(min_price, max_price, min_volume, portfolio_size) + } + + scanner_func = scanner_map.get(scanner_choice) + if scanner_func: + return scanner_func() else: - print("Invalid scanner choice.") + raise ValueError(f"Invalid scanner choice: {scanner_choice}")