I have my bot set up and working. I implemented the bot turning itself on and off when the market is open and closed. The one problem I have is figuring out how to get the bot to liquidate all positions let’s say around 5 minutes before market close. Does anyone know the best way to implement this? Thanks!
1 Like
Try following on your paper account:
api.close_all_positions()
1 Like
I just wrote this in Python. Haven’t tested during market hours yet, but works with other times.
import datetime as dt
import pytz
import pandas as pd
def close_all_positions_end_of_day():
# First, check if the market is currently open. No point in checking if closed.
if api.get_clock().is_open:
# Get the current time (New York time)
time_now = dt.datetime.now(pytz.timezone('US/Eastern'))
# Calculate the timestamp for 5 mins before close (15:55) today.
five_mins_before_end_of_day = pd.Timestamp(year=time_now.year, month=time_now.month, day=time_now.day, hour=15,
minute=55, second=00, tz='US/Eastern')
# If the current time is the same as (or after) 15:55, close all positions.
if time_now.isoformat() >= five_mins_before_end_of_day.isoformat():
print('Closing all positions...')
api.close_all_positions()
else:
print('Not yet 3:55pm!')
else:
print('Market currently closed!')
Bear in mind that your bot would need to be regularly/frequently calling this function to check if the current time is at/after the timestamp.
1 Like