def market_maker_one(trader: shift.Trader, ticker: str): tickSize = 0.01 # james code need to change maybe? today = trader.get_last_trade_time() endTime = dt.time(15, 30, 0) dayEnd = dt.datetime.combine(today, dt.datetime(endTime)) rightNow = trader.get_last_trade_time() #right < the end of day at 3:50 while today < dayEnd: ''' check inventory here ''' trader.sub_all_order_book() lastPrice = trader.get_last_price("AAPL") limitBuyPrice = lastPrice - tickSize limitSellPrice = lastPrice + tickSize limit_buy = shift.Order(shift.Order.Type.LIMIT_BUY, "AAPL", 1, limitBuyPrice) limit_sell = shift.Order(shift.Order.Type.LIMIT_SELL, "AAPL", 1, limitSellPrice) # market_buy = shift.Order(shift.Order.Type.MARKET_BUY, "AAPL", 1) # trader.submit_order(market_buy) trader.submit_order(limit_buy) trader.submit_order(limit_sell) time.sleep(10) return
def main(trader: shift.Trader) -> None: """ main entrypoint """ trader = shift.Trader(credentials.my_username) try: trader.connect("initiator.cfg", credentials.my_password) trader.sub_all_order_book() except shift.IncorrectPasswordError as e: print(e) except shift.ConnectionTimeoutError as e: print(e) time.sleep(2) check_time = 5 # minutes current = trader.get_last_trade_time() start_time = dt.combine(current, dt.datetime(10, 0, 0)) end_time = dt.combine(current, dt.datetime(15, 30, 0)) while trader.get_last_trade_time() < start_time: sleep(check_time * 60) processes = run_processes(trader) while trader.get_last_trade_time() < end_time: sleep(check_time * 60) for order in trader.get_waiting_list(): trader.submit_cancellation(order) for item in trader.get_portfolio_items().values(): ticker = item.get_symbol() sell = shift.Order(shift.Order.Type.MARKET_SELL, ticker, item.get_shares()) trader.submit_order(sell) time_wait_sell = 60 # seconds sleep(time_wait_sell) stop_processes(processes) # print stuff routine_summary(trader)