refactor: Modify scanner_controller to accept parameters directly and use dictionary mapping
This commit is contained in:
parent
9e1cccd3b6
commit
0dd86ebe42
@ -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}")
|
||||
|
||||
Loading…
Reference in New Issue
Block a user