|
7 | 7 | import yfinance as yf |
8 | 8 | from alpaca.data.historical import OptionHistoricalDataClient |
9 | 9 | from alpaca.data.requests import OptionLatestQuoteRequest |
| 10 | +from zoneinfo import ZoneInfo |
10 | 11 |
|
11 | 12 | load_dotenv() |
12 | 13 | GOOGLE_SCRIPT_URL = os.environ.get("GOOGLE_SCRIPT_URL") |
@@ -47,22 +48,24 @@ def update_trade(trade_data): |
47 | 48 | return None |
48 | 49 |
|
49 | 50 | def is_time_to_open(earnings_date, when): |
50 | | - now = datetime.now() |
| 51 | + eastern = ZoneInfo("America/New_York") |
| 52 | + now = datetime.now(tz=eastern) |
51 | 53 | market_close = time(16, 0) |
52 | 54 | if when == "BMO": |
53 | | - open_dt = datetime.combine(earnings_date - timedelta(days=1), market_close) - timedelta(minutes=15) |
| 55 | + open_dt = datetime.combine(earnings_date - timedelta(days=1), market_close, tzinfo=eastern) - timedelta(minutes=15) |
54 | 56 | else: # AMC |
55 | | - open_dt = datetime.combine(earnings_date, market_close) - timedelta(minutes=15) |
56 | | - return now >= open_dt and now < open_dt + timedelta(minutes=30) |
| 57 | + open_dt = datetime.combine(earnings_date, market_close, tzinfo=eastern) - timedelta(minutes=15) |
| 58 | + return open_dt <= now < open_dt + timedelta(minutes=30) |
57 | 59 |
|
58 | 60 | def is_time_to_close(earnings_date, when): |
59 | | - now = datetime.now() |
| 61 | + eastern = ZoneInfo("America/New_York") |
| 62 | + now = datetime.now(tz=eastern) |
60 | 63 | open_time = time(9, 30) |
61 | 64 | if when == "BMO": |
62 | | - close_dt = datetime.combine(earnings_date, open_time) + timedelta(minutes=15) |
| 65 | + close_dt = datetime.combine(earnings_date, open_time, tzinfo=eastern) + timedelta(minutes=15) |
63 | 66 | else: # AMC |
64 | | - close_dt = datetime.combine(earnings_date + timedelta(days=1), open_time) + timedelta(minutes=15) |
65 | | - return now >= close_dt and now < close_dt + timedelta(minutes=30) |
| 67 | + close_dt = datetime.combine(earnings_date + timedelta(days=1), open_time, tzinfo=eastern) + timedelta(minutes=15) |
| 68 | + return close_dt <= now < close_dt + timedelta(minutes=30) |
66 | 69 |
|
67 | 70 | def select_expiries_and_strike_yahoo(stock, earnings_date): |
68 | 71 | """ |
|
0 commit comments