def main(): try: with open("DEFAULT_STOCK.txt") as infile: venue, symbol = infile.readline().split() except: venue, symbol = "TESTEX", "FOOBAR" account = "NZ" + str(random.randint(0, 999999999)) # account = "NOISEBOTS" sf.change_api_key("unused") orderType = "limit" all_orders = [] while 1: try: price = sf.quote(venue, symbol)["last"] if price == 0: price = 5000 except: price = 5000 price += random.randint(-100, 100) qty = 100 qty += random.randint(-50, 50) direction = random.choice(["buy", "sell"]) r = sf.execute_d( { "price": price, "qty": qty, "direction": direction, "orderType": orderType, "account": account, "venue": venue, "stock": symbol, }, verbose=True, ) try: id = r["id"] all_orders.append(id) except: print("Trouble getting ID.") time.sleep(0.5) if len(all_orders) > 10: id = all_orders.pop(0) sf.cancel(venue, symbol, id, verbose=True)
def main(): try: with open("DEFAULT_STOCK.txt") as infile: venue, symbol = infile.readline().split() except: venue, symbol = "BUYEX", "DOGS" account = "NZ" + str(random.randint(0, 999999999)) orderType = "limit" all_orders = [] while 1: try: price = sf.quote(venue, symbol)["last"] if price == 0: price = 5000 except: price = 5000 price += random.randint(-100, 100) qty = 100 qty += random.randint(-50, 50) direction = random.choice(["buy", "sell"]) r = sf.execute_d( { "price": price, "qty": qty, "direction": direction, "orderType": orderType, "account": account, "venue": venue, "stock": symbol }, verbose=True) try: id = r["id"] all_orders.append(id) except: print("Trouble getting ID.") time.sleep(0.5) if len(all_orders) > 10: id = all_orders.pop(0) sf.cancel(venue, symbol, id, verbose=True)
def main(): global account global venue global symbol orderType = "limit" all_orders = [] while 1: try: price = sf.quote(venue, symbol)["last"] if price == 0: price = 5000 except: price = 5000 price += random.randint(-100, 100) qty = 100 qty += random.randint(-50, 50) direction = random.choice(["buy", "sell"]) r = sf.execute_d( { "price": price, "qty": qty, "direction": direction, "orderType": orderType, "account": account, "venue": venue, "stock": symbol, }, verbose=True, ) try: id = r["id"] all_orders.append(id) except: print("Trouble getting ID.") time.sleep(random.uniform(0.3, 0.7)) if len(all_orders) > 10: id = all_orders.pop(0) sf.cancel(venue, symbol, id, verbose=True)
def main(): try: with open("DEFAULT_STOCK.txt") as infile: venue, symbol = infile.readline().split() except: venue, symbol = "TESTEX", "FOOBAR" account = "LH" + str(random.randint(0,999999999)) # account = "BLSHBOTS" sf.change_api_key("unused") orderType = "limit" last_id = None last_price = None active_ids = [] myshares, mycents = 0, 0 print("Waiting to see some prices before placing orders...") while 1: try: last_price = sf.quote(venue, symbol)["last"] except: time.sleep(5) continue if len(active_ids) > 10: r = sf.cancel(venue, symbol, active_ids[0], verbose = True) if r: deltas = sf.parse_fills_from_response(r) myshares += deltas["shares"] mycents += deltas["cents"] print("\nShares: {}, Cents: {}, NAV: {} (current price: {})\n".format(myshares, mycents, myshares * last_price + mycents, last_price)) active_ids.pop(0) qty = 100 qty += random.randint(-25, 0) if myshares < 0: direction = "buy" elif myshares > 0: direction = "sell" else: direction = random.choice(["buy", "sell"]) if direction == "buy": price = last_price - 50 else: price = last_price + 50 print("Placing order...") r = sf.execute_d( { "price" : price, "qty" : qty, "direction" : direction, "orderType" : orderType, "account" : account, "venue" : venue, "stock" : symbol }, verbose = False) try: active_ids.append(r["id"]) except: print("Trouble getting ID.") time.sleep(0.5)
def main(): global account global venue global symbol orderType = "limit" last_id = None last_price = None active_ids = [] myshares, mycents = 0, 0 print("Waiting to see some prices before placing orders...") # The strategy of this stupid bot is: # # If we have positive shares, try to sell above current price # If we have negative shares, try to buy below current price while 1: try: last_price = sf.quote(venue, symbol)["last"] except: time.sleep(5) continue if len(active_ids) > 10: r = sf.cancel(venue, symbol, active_ids[0], verbose = True) if r: deltas = sf.parse_fills_from_response(r) myshares += deltas["shares"] mycents += deltas["cents"] print("\nShares: {}, Cents: {}, NAV: {} (current price: {})\n".format(myshares, mycents, myshares * last_price + mycents, last_price)) active_ids.pop(0) qty = 100 qty += random.randint(-25, 0) if myshares < 0: direction = "buy" elif myshares > 0: direction = "sell" else: direction = random.choice(["buy", "sell"]) if direction == "buy": price = last_price - 50 else: price = last_price + 50 print("Placing order...") r = sf.execute_d( { "price" : price, "qty" : qty, "direction" : direction, "orderType" : orderType, "account" : account, "venue" : venue, "stock" : symbol }, verbose = False) try: active_ids.append(r["id"]) except: print("Trouble getting ID.") time.sleep(0.5)
print("ORDER RESULT: {}: {} vs {}".format(field, res1[field], res2[field])) except KeyError: pass if results_match: print("Results MATCH", end=" --- ") fills = res1["fills"] for fill in fills: print({"price": fill["price"], "qty": fill["qty"]}, end="") print() else: discrepancies += 1 # Randomly cancel a slightly old order with p = 33% if random.choice([True, False, False]): set_from_account_1(INFO) sf.cancel(INFO.venue, INFO.symbol, id1 - 5) set_from_account_2(INFO) sf.cancel(INFO.venue, INFO.symbol, id2 - 5) print() # time.sleep(0.1) print("TEST_SIZE =", TEST_SIZE) print("SEED =", SEED) print() print("Discrepancies:", discrepancies) input()
def main(): try: with open("DEFAULT_STOCK.txt") as infile: venue, symbol = infile.readline().split() except: venue, symbol = "BUYEX", "DOGS" account = "LH" + str(random.randint(0,999999999)) orderType = "limit" last_id = None last_price = None active_ids = [] myshares, mycents = 0, 0 while 1: try: last_price = sf.quote(venue, symbol)["last"] except: time.sleep(5) continue if len(active_ids) > 10: r = sf.cancel(venue, symbol, active_ids[0], verbose = True) if r: deltas = sf.parse_fills_from_response(r) myshares += deltas["shares"] mycents += deltas["cents"] print("\nShares: {}, Cents: {}, NAV: {} (current price: {})\n".format(myshares, mycents, myshares * last_price + mycents, last_price)) active_ids.pop(0) qty = 100 qty += random.randint(-25, 0) if myshares < 0: direction = "buy" elif myshares > 0: direction = "sell" else: direction = random.choice(["buy", "sell"]) if direction == "buy": price = last_price - 50 else: price = last_price + 50 print("Placing order...") r = sf.execute_d( { "price" : price, "qty" : qty, "direction" : direction, "orderType" : orderType, "account" : account, "venue" : venue, "stock" : symbol }, verbose = False) try: active_ids.append(r["id"]) except: print("Trouble getting ID.") time.sleep(0.5)