コード例 #1
0
ファイル: bot.py プロジェクト: ggjack/JaneStreetETC2018
def main():
    exchange = connect()
    bank = Bank()
    helloResponse = sendHello(exchange)
    stocksState = AllStocks(helloResponse)
    bank.updateStateFromResponse(helloResponse)
    orderCounter = 1

    while True:
        #sleep(0.1)
        read = read_from_exchange(exchange)
        #if 'symbol' in read and read['symbol'] == 'BOND':
        #	print(read)

        if read['type'] == 'open':
            stocksState.openStocks(read)
        elif read['type'] == 'book':
            stocksState.updateStocks(read)
        elif read['type'] == 'trade':
            # SOMEONE ELSE TRADED DO SOMETHING
            #print("Trade has happened")
            some = 9
        elif read['type'] == 'close':
            stocksState.closeStocks(read)
        elif read['type'] == 'ack':
            orderID = read['order_id']
            if orderID in bank.getOrders():
                order = bank.getOrders()[orderID]
                print("Success " + order.stock + " " + order.orderType + " " +
                      str(order.price) + " " + str(order.quantity))
                order.orderStatus = "success"
        elif read['type'] == 'error' or read['type'] == 'reject':
            print("Got an Error: " + read['error'], file=sys.stderr)
            OrderID = -1
            if read['type'] == 'reject':
                orderID = read['order_id']
            if orderID in bank.getOrders():
                order = bank.getOrders()[orderID]
                print("here is why: " + order.stock)
                order.orderStatus = "cancel"
                sendCancel(exchange, orderID)
        elif read['type'] == 'out':
            orderID = read['order_id']
            if orderID in bank.getOrders():
                order = bank.getOrders()[orderID]
                if order.orderType == "SELL" and order.orderStatus == "cancel":
                    bank.deltaQuantity(order.stock, order.quantity)
                bank.deleteOrder(read['order_id'])
        elif read['type'] == 'fill':
            orderID = read['order_id']
            if orderID in bank.getOrders():
                order = bank.getOrders()[orderID]
                print("FILLED " + order.stock + " " + order.orderType + " " +
                      str(order.price) + " " + str(order.quantity))
                order.orderStatus = "fill"
                bank.deltaState(read['dir'], read['price'], read['size'],
                                read['symbol'])

        orderCounter = handleTrade(orderCounter, exchange, stocksState, bank)