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_sunnyband import run_sunny_scanner
|
||||||
from screener.t_atr_ema import run_atr_ema_scanner
|
from screener.t_atr_ema import run_atr_ema_scanner
|
||||||
from screener.t_atr_ema_v2 import run_atr_ema_scanner_v2
|
from screener.t_atr_ema_v2 import run_atr_ema_scanner_v2
|
||||||
from utils.data_utils import get_float_input
|
|
||||||
|
|
||||||
def get_scanner_parameters():
|
def run_technical_scanner(scanner_choice: str, start_date: str, end_date: str,
|
||||||
"""Get user input for scanner parameters"""
|
min_price: float, max_price: float, min_volume: int,
|
||||||
min_price = get_float_input("Enter minimum stock price ($): ")
|
portfolio_size: float):
|
||||||
max_price = get_float_input("Enter maximum stock price ($): ")
|
"""
|
||||||
min_volume = int(input("Enter minimum volume: "))
|
Run the selected technical scanner with provided parameters
|
||||||
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):
|
Args:
|
||||||
"""Run the selected technical scanner"""
|
scanner_choice (str): Type of scanner to run
|
||||||
min_price, max_price, min_volume, portfolio_size = get_scanner_parameters()
|
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)
|
||||||
|
}
|
||||||
|
|
||||||
if scanner_choice == "1":
|
scanner_func = scanner_map.get(scanner_choice)
|
||||||
run_sunny_scanner(min_price, max_price, min_volume, portfolio_size)
|
if scanner_func:
|
||||||
elif scanner_choice == "2":
|
return scanner_func()
|
||||||
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)
|
|
||||||
else:
|
else:
|
||||||
print("Invalid scanner choice.")
|
raise ValueError(f"Invalid scanner choice: {scanner_choice}")
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user