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
예제 #2
0
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)