Verify connection to IBKR before scheduling trade entry jobs

This commit is contained in:
moshferatu 2023-12-13 06:39:58 -08:00
parent 0fe6181e7c
commit 1cc0c7867f

View File

@ -1,8 +1,13 @@
import schedule
import time
from dotenv import load_dotenv
from ibkr import Client
from iron_condor import enter_iron_condor
from multiprocessing import Process
from os import getenv
load_dotenv()
# TODO: Look up entry times from database.
entry_times = []
@ -11,10 +16,24 @@ def enter_trade():
job_process = Process(target = enter_iron_condor)
job_process.start()
if __name__ == '__main__':
for entry_time in entry_times:
schedule.every().day.at(entry_time, 'America/Los_Angeles').do(enter_trade)
def connection_successful():
try:
ibkr_host = getenv('IBKR_HOST')
ibkr_port = getenv('IBKR_PORT')
Client(host = ibkr_host, port = ibkr_port)
return True
except:
return False
while True:
schedule.run_pending()
time.sleep(1)
if __name__ == '__main__':
if connection_successful():
print('Connected to IBKR.')
for entry_time in entry_times:
schedule.every().day.at(entry_time, 'America/Los_Angeles').do(enter_trade)
while True:
schedule.run_pending()
time.sleep(1)
else:
print('ERROR: Cannot connect to IBKR. Ensure that TWS / Gateway is running.')