def awaitMarketOpen(): isOpen = tradeapi.get_clock().is_open while(not isOpen): clock = tradeapi.get_clock() openingTime = clock.next_open.replace(tzinfo=datetime.timezone.utc).timestamp() currTime = clock.timestamp.replace(tzinfo=datetime.timezone.utc).timestamp() timeToOpen = int((openingTime - currTime) / 60) print(str(timeToOpen) + " minutes till market open.") time.sleep(60) isOpen = tradeapi.get_clock().is_open
def run(): orders=tradeapi.list_orders(status='open') for order in orders: tradeapi.cancel_order(order_id) # Wait for opening tAMO=threading.Thread(target=awaitMarketOpen) tAMO.start() tAMO.join() print('Mkt opened') # Check for signals every minute, making necessary trades while True: # Cover All positions 15 mins before Mkt close clock=tradeapi.get_clock() closingTime=clock.next_close.replace(tzinfo=datetime.timezone.utc).timestamp() currTime=clock.timestamp.replace(tzinfo=datetime.timezone.utc).timestamp() timeToClose=closingTime - currTime if timeToClose < (60*15): print("Mkt closing soon, Closing positions") positions = tradeapi.list_positions() for position in positions(): if (position.side=='long'): orderSide='sell' else: orderSide='buy' qty=abs(int(float(position.qty))) resp_stock_orders=[] tSubmitOrder=threading.Thread(target=submitOrder(qty,position.symbol, orderSide,resp_stock_orders)) tSubmitOrder.start() tSubmitOrder.join() # Run script again after market close for next trading day. # print("Sleeping until market close (15 minutes).") # time.sleep(60 * 15) else: # Trading signals activated tSystem=threading.Thread(target=OMS) tSystem.start() tSystem.join() time.sleep(60)
def check_Open_Positions_5m_before_close_and_exit(): clock=tradeapi.get_clock() closingTime=clock.next_close.replace(tzinfo=datetime.timezone.utc).timestamp() currTime=clock.timestamp.replace(tzinfo=datetime.timezone.utc).timestamp() timeToClose=closingTime - currTime try: if timeToClose < (60*5): # List of all open positions porfolio=tradeapi.list_positions() print("Mkt closing soon, Closing positions") for position in portfolio: print('\n{} Shares of {}'.format(position.qty, position.symbol)) except: if portfolio is Null: print ('No Open positions')
import alpaca_trade_api as tradeapi import os APCA_API_BASE_URL = os.environ['APCA_API_BASE_URL'] APCA_API_KEY_ID = os.environ['APCA_API_KEY_ID'] APCA_API_SECRET_KEY = os.environ['APCA_API_SECRET_KEY'] api = tradeapi.REST(base_url=APCA_API_BASE_URL, key_id=APCA_API_KEY_ID, secret_key=APCA_API_SECRET_KEY) clock = tradeapi.get_clock() print(f"The market id {'open' if clock.is_open else 'close'}")