refactor: Update scanner initialization to accept start and end dates as parameters
This commit is contained in:
parent
3b2cd794ec
commit
c387396254
@ -1,3 +1,4 @@
|
|||||||
|
from datetime import datetime
|
||||||
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
|
||||||
@ -18,10 +19,14 @@ def run_technical_scanner(scanner_choice: str, start_date: str, end_date: str,
|
|||||||
portfolio_size (float): Portfolio size for position sizing
|
portfolio_size (float): Portfolio size for position sizing
|
||||||
interval (str): Time interval for data (default: "1d")
|
interval (str): Time interval for data (default: "1d")
|
||||||
"""
|
"""
|
||||||
|
# Convert string dates to datetime objects
|
||||||
|
start_dt = datetime.strptime(start_date, "%Y-%m-%d")
|
||||||
|
end_dt = datetime.strptime(end_date, "%Y-%m-%d")
|
||||||
|
|
||||||
scanner_map = {
|
scanner_map = {
|
||||||
"sunnybands": lambda: run_sunny_scanner(min_price, max_price, min_volume, portfolio_size, interval),
|
"sunnybands": lambda: run_sunny_scanner(min_price, max_price, min_volume, portfolio_size, interval, start_dt, end_dt),
|
||||||
"atr-ema": lambda: run_atr_ema_scanner(min_price, max_price, min_volume, portfolio_size, interval),
|
"atr-ema": lambda: run_atr_ema_scanner(min_price, max_price, min_volume, portfolio_size, interval, start_dt, end_dt),
|
||||||
"atr-ema_v2": lambda: run_atr_ema_scanner_v2(min_price, max_price, min_volume, portfolio_size, interval)
|
"atr-ema_v2": lambda: run_atr_ema_scanner_v2(min_price, max_price, min_volume, portfolio_size, interval, start_dt, end_dt)
|
||||||
}
|
}
|
||||||
|
|
||||||
scanner_func = scanner_map.get(scanner_choice)
|
scanner_func = scanner_map.get(scanner_choice)
|
||||||
|
|||||||
@ -56,11 +56,19 @@ def check_entry_signal(df: pd.DataFrame) -> list:
|
|||||||
|
|
||||||
return signals
|
return signals
|
||||||
|
|
||||||
def run_atr_ema_scanner(min_price: float, max_price: float, min_volume: int, portfolio_size: float = None, interval: str = "1d") -> None:
|
def run_atr_ema_scanner(min_price: float, max_price: float, min_volume: int,
|
||||||
|
portfolio_size: float = None, interval: str = "1d",
|
||||||
|
start_date: datetime = None, end_date: datetime = None) -> None:
|
||||||
try:
|
try:
|
||||||
# Initialize scanner components
|
# Initialize scanner components with all parameters
|
||||||
interval, start_date, end_date, qualified_stocks, calculator = initialize_scanner(
|
interval, start_date, end_date, qualified_stocks, calculator = initialize_scanner(
|
||||||
min_price, max_price, min_volume, portfolio_size, interval
|
min_price=min_price,
|
||||||
|
max_price=max_price,
|
||||||
|
min_volume=min_volume,
|
||||||
|
portfolio_size=portfolio_size,
|
||||||
|
interval=interval,
|
||||||
|
start_date=start_date,
|
||||||
|
end_date=end_date
|
||||||
)
|
)
|
||||||
|
|
||||||
if not qualified_stocks:
|
if not qualified_stocks:
|
||||||
|
|||||||
@ -3,7 +3,9 @@ from utils.data_utils import get_user_input, get_stock_data, get_qualified_stock
|
|||||||
from screener.user_input import get_interval_choice, get_date_range
|
from screener.user_input import get_interval_choice, get_date_range
|
||||||
from trading.position_calculator import PositionCalculator
|
from trading.position_calculator import PositionCalculator
|
||||||
|
|
||||||
def initialize_scanner(min_price: float, max_price: float, min_volume: int, portfolio_size: float = None, interval: str = "1d") -> tuple:
|
def initialize_scanner(min_price: float, max_price: float, min_volume: int,
|
||||||
|
portfolio_size: float = None, interval: str = "1d",
|
||||||
|
start_date: datetime = None, end_date: datetime = None) -> tuple:
|
||||||
"""
|
"""
|
||||||
Initialize common scanner components
|
Initialize common scanner components
|
||||||
|
|
||||||
@ -13,10 +15,14 @@ def initialize_scanner(min_price: float, max_price: float, min_volume: int, port
|
|||||||
min_volume (int): Minimum volume threshold
|
min_volume (int): Minimum volume threshold
|
||||||
portfolio_size (float, optional): Portfolio size for position calculations
|
portfolio_size (float, optional): Portfolio size for position calculations
|
||||||
interval (str, optional): Time interval for data (default: "1d")
|
interval (str, optional): Time interval for data (default: "1d")
|
||||||
|
start_date (datetime, optional): Start date for scanning
|
||||||
|
end_date (datetime, optional): End date for scanning
|
||||||
"""
|
"""
|
||||||
print(f"\nScanning for stocks ${min_price:.2f}-${max_price:.2f} with min volume {min_volume:,}")
|
print(f"\nScanning for stocks ${min_price:.2f}-${max_price:.2f} with min volume {min_volume:,}")
|
||||||
|
|
||||||
start_date, end_date = get_date_range()
|
# Remove the get_date_range() call and use the passed parameters
|
||||||
|
if not start_date or not end_date:
|
||||||
|
raise ValueError("start_date and end_date must be provided")
|
||||||
|
|
||||||
qualified_stocks = get_qualified_stocks(start_date, end_date, min_price, max_price, min_volume)
|
qualified_stocks = get_qualified_stocks(start_date, end_date, min_price, max_price, min_volume)
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user