def run(self): with open(r'roots.pem', 'rb') as f: cert = f.read() credentials = grpc.ssl_channel_credentials(root_certificates=cert) channel = grpc.secure_channel('{0}:{1}'.format(self.server, self.port), credentials) util_stub = util_grpc.UtilityServicesStub(channel) req = util.ConnectRequest(UserName=self.user, Domain=self.domain, Password=self.password, Locale=self.locale) connect_response = util_stub.Connect(req) print('Connect result: ', connect_response.Response) if connect_response.Response == 'success': token = connect_response.UserToken req = util.TodaysNetPositionsRequest(UserToken=token) response = util_stub.GetTodaysNetPositions(req) print('GetTodaysNetPositions result: ', response.Acknowledgement.ServerResponse) if response.Acknowledgement.ServerResponse == 'success': num_pos = len(response.AggregatePositionsList) print('Found {0} positions'.format(num_pos)) for pos in response.AggregatePositionsList: print(pos) req = util.DisconnectRequest(UserToken=token) disconnect_response = util_stub.Disconnect(req) print('Disconnect result: ', disconnect_response.ServerResponse)
def run(self): with open(r'roots.pem', 'rb') as f: cert = f.read() channel = grpc.secure_channel( '{0}:{1}'.format(self.server, self.port), grpc.ssl_channel_credentials(root_certificates=cert)) util_stub = util_grpc.UtilityServicesStub(channel) connect_response = util_stub.Connect( util.ConnectRequest(UserName=self.user, Domain=self.domain, Password=self.password, Locale=self.locale)) print('Connect result: ', connect_response.Response) if connect_response.Response == 'success': ord_stub = ord_grpc.SubmitOrderServiceStub(channel) order_response = ord_stub.SubmitSingleOrder( ord.SubmitSingleOrderRequest( Symbol='GE', Side='BUY', Quantity=5000, Route=self.route, Account=self.account, OrderTag=self.my_order_id, UserToken=connect_response.UserToken)) print('Order result: ', order_response) disconnect_response = util_stub.Disconnect( util.DisconnectRequest(UserToken=connect_response.UserToken)) print('Disconnect result: ', disconnect_response.ServerResponse)
def run(self): with open(r'roots.pem', 'rb') as f: cert = f.read() credentials = grpc.ssl_channel_credentials(root_certificates=cert) channel = grpc.secure_channel('{0}:{1}'.format(self.server, self.port), credentials) util_stub = util_grpc.UtilityServicesStub(channel) req = util.ConnectRequest(UserName=self.user, Domain=self.domain, Password=self.password, Locale=self.locale) connect_response = util_stub.Connect(req) print('Connect result: ', connect_response.Response) if connect_response.Response == 'success': token = connect_response.UserToken ord_stub = ord_grpc.SubmitOrderServiceStub(channel) req = ord.UserAccountsRequest(UserToken=token) response = ord_stub.GetUserAccounts(req) print('GetUserAccounts result: ', response.Acknowledgement.ServerResponse) if (response.Acknowledgement.ServerResponse == 'success'): print(response.Accounts) req = util.DisconnectRequest(UserToken=token) disconnect_response = util_stub.Disconnect(req) print('Disconnect result: ', disconnect_response.ServerResponse)
def run(self): with open(r'roots.pem', 'rb') as f: cert = f.read() channel = grpc.secure_channel( '{0}:{1}'.format(self.server, self.port), grpc.ssl_channel_credentials(root_certificates=cert)) util_stub = util_grpc.UtilityServicesStub(channel) connect_response = util_stub.Connect( util.ConnectRequest(UserName=self.user, Domain=self.domain, Password=self.password, Locale=self.locale)) print('Connect result: ', connect_response.Response) if connect_response.Response == 'success': activity_response = util_stub.GetTodaysActivityJson( util.TodaysActivityJsonRequest( IncludeUserSubmitOrder=True, UserToken=connect_response.UserToken)) df = pd.read_json(activity_response.TodaysActivityJson, convert_dates=False) if not df.empty: xapi_order_id = df.loc[( df['OrderTag'] == self.my_order_id).idxmax(), 'OrderId'] print('The xAPI OrderId for my order is ', xapi_order_id) disconnect_response = util_stub.Disconnect( util.DisconnectRequest(UserToken=connect_response.UserToken)) print('Disconnect result: ', disconnect_response.ServerResponse)
def run(self): with open(r'roots.pem', 'rb') as f: cert = f.read() credentials = grpc.ssl_channel_credentials(root_certificates=cert) channel = grpc.secure_channel('{0}:{1}'.format(self.server, self.port), credentials) util_stub = util_grpc.UtilityServicesStub(channel) req = util.StartLoginSrpRequest(UserName=self.user, Domain=self.domain) srp_start_response = util_stub.StartLoginSrp(req) print('Start SRP result: ', srp_start_response.Response) if srp_start_response.Response == 'success': identity = '{0}@{1}'.format(self.user, self.domain) g_hex = hex(int(srp_start_response.srpg)) n_hex = hex(int(srp_start_response.srpN)) srp.rfc5054_enable(True) usr = srp.User(identity, self.password, hash_alg=srp.SHA256, ng_type=srp.NG_CUSTOM, n_hex=n_hex, g_hex=g_hex) srp.rfc5054_enable(False) _, A = usr.start_authentication() bytes_B = int(srp_start_response.srpb).to_bytes(128, 'big') bytes_s = bytes.fromhex(srp_start_response.srpSalt) M = usr.process_challenge(bytes_s, bytes_B) strMc = hex(int.from_bytes(M, 'big')).lstrip('0x') strEphA = str(int.from_bytes(A, 'big')) srpTransactId = srp_start_response.srpTransactId req = util.CompleteLoginSrpRequest(Identity=identity, srpTransactId=srpTransactId, strEphA=strEphA, strMc=strMc, UserName=self.user, Domain=self.domain, Locale=self.locale) connect_response = util_stub.CompleteLoginSrp(req) print('Connect result: ', connect_response.Response) if connect_response.Response == 'success': req = util.DisconnectRequest( UserToken=connect_response.UserToken) disconnect_response = util_stub.Disconnect(req) print('Disconnect result: ', disconnect_response.ServerResponse)
def run(self): with open(r'roots.pem', 'rb') as f: cert = f.read() credentials = grpc.ssl_channel_credentials(root_certificates=cert) channel = grpc.secure_channel('{0}:{1}'.format(self.server, self.port), credentials) util_stub = util_grpc.UtilityServicesStub(channel) req = util.ConnectRequest(UserName=self.user, Domain=self.domain, Password=self.password, Locale=self.locale) connect_response = util_stub.Connect(req) print('Connect result: ', connect_response.Response) if connect_response.Response == 'success': token = connect_response.UserToken ord_stub = ord_grpc.SubmitOrderServiceStub(channel) req = ord.SubscribeOrderInfoRequest(Level=0, UserToken=token) iter = ord_stub.SubscribeOrderInfo(req) t = Thread(target=self.callback, args=(iter, )) t.start() for i in range(1, 10): print('Sending order from main thread: ', i) req = ord.SubmitSingleOrderRequest(Symbol='GOOG', Side='BUY', Quantity=i * 100, Route=self.route, Account=self.account, OrderTag='MyOrderId', UserToken=token) order_response = ord_stub.SubmitSingleOrder(req) print('Send order result: ', order_response) time.sleep(1) iter.cancel() t.join() req = util.DisconnectRequest(UserToken=token) disconnect_response = util_stub.Disconnect(req) print('Disconnect result: ', disconnect_response.ServerResponse)
def run(self): with open(r'roots.pem', 'rb') as f: cert = f.read() channel = grpc.secure_channel( '{0}:{1}'.format(self.server, self.port), grpc.ssl_channel_credentials(root_certificates=cert)) util_stub = util_grpc.UtilityServicesStub(channel) connect_response = util_stub.Connect( util.ConnectRequest(UserName=self.user, Domain=self.domain, Password=self.password, Locale=self.locale)) print('Connect result: ', connect_response.Response) if connect_response.Response == 'success': disconnect_response = util_stub.Disconnect( util.DisconnectRequest(UserToken=connect_response.UserToken)) print('Disconnect result: ', disconnect_response.ServerResponse)
def run(self): with open(r'roots.pem', 'rb') as f: cert = f.read() channel = grpc.secure_channel( '{0}:{1}'.format(self.server, self.port), grpc.ssl_channel_credentials(root_certificates=cert)) util_stub = util_grpc.UtilityServicesStub(channel) connect_response = util_stub.Connect( util.ConnectRequest(UserName=self.user, Domain=self.domain, Password=self.password, Locale=self.locale)) print('Connect result: ', connect_response.Response) if connect_response.Response == 'success': md_stub = md_grpc.MarketDataServiceStub(channel) response = md_stub.SubscribeLevel1Ticks( md.Level1MarketDataRequest( Symbols=['TSLA'], Request=True, Advise=True, UserToken=connect_response.UserToken)) t = Thread(target=self.handle_data, args=(response, )) t.start() for i in range(5): print('Hello from main thread: ', i) time.sleep(1) response.cancel() t.join() disconnect_response = util_stub.Disconnect( util.DisconnectRequest(UserToken=connect_response.UserToken)) print('Disconnect result: ', disconnect_response.ServerResponse)
def run(self): with open(r'roots.pem', 'rb') as f: cert = f.read() channel = grpc.secure_channel( '{0}:{1}'.format(self.server, self.port), grpc.ssl_channel_credentials(root_certificates=cert)) util_stub = util_grpc.UtilityServicesStub(channel) connect_response = util_stub.Connect( util.ConnectRequest(UserName=self.user, Domain=self.domain, Password=self.password, Locale=self.locale)) print('Connect result: ', connect_response.Response) if connect_response.Response == 'success': activity_response = util_stub.GetTodaysActivityJson( util.TodaysActivityJsonRequest( IncludeExchangeTradeOrder=True, UserToken=connect_response.UserToken)) df = pd.read_json(activity_response.TodaysActivityJson, convert_dates=False) if not df.empty: g = df.groupby(["Symbol", "Side"]).agg( tot_filled_vol=pd.NamedAgg('Volume', 'sum'), num_fills=pd.NamedAgg('Volume', 'count'), vwap=pd.NamedAgg( 'Price', lambda x: np.average( x, weights=df.loc[x.index, 'Volume']))) print('fills:\n', g) disconnect_response = util_stub.Disconnect( util.DisconnectRequest(UserToken=connect_response.UserToken)) print('Disconnect result: ', disconnect_response.ServerResponse)
def run(self): with open(r'roots.pem', 'rb') as f: cert = f.read() credentials = grpc.ssl_channel_credentials(root_certificates=cert) channel = grpc.secure_channel('{0}:{1}'.format(self.server, self.port), credentials) util_stub = util_grpc.UtilityServicesStub(channel) req = util.ConnectRequest(UserName=self.user, Domain=self.domain, Password=self.password, Locale=self.locale) connect_response = util_stub.Connect(req) print('Connect result: ', connect_response.Response) if connect_response.Response == 'success': token = connect_response.UserToken ord_stub = ord_grpc.SubmitOrderServiceStub(channel) req = ord.SubscribeOrderInfoRequest(Level=0, UserToken=token) iter = ord_stub.SubscribeOrderInfo(req) t = Thread(target=self.callback, args=(iter, )) t.start() # Place multiple orders in 1 request account = self.account.split(';') ord_request = ord.OrderRow() ord_request.DispName = 'GOOG' ord_request.Buyorsell = 'BUY' ord_request.Volume.value = 1000 ord_request.Bank = account[0] ord_request.Branch = account[1] ord_request.Customer = account[2] ord_request.Deposit = account[3] ord_request.GoodUntil = 'DAY' ord_request.Type = 'UserSubmitOrder' ord_request.Route = self.route ord_request.ExtendedFields['ORDER_TAG'] = 'XAP-{0}'.format( str(uuid4())) ord_request1 = ord.OrderRow() ord_request.DispName = 'MSFT' ord_request.Buyorsell = 'BUY' ord_request.Volume.value = 1000 ord_request.Bank = account[0] ord_request.Branch = account[1] ord_request.Customer = account[2] ord_request.Deposit = account[3] ord_request.GoodUntil = 'DAY' ord_request.Type = 'UserSubmitOrder' ord_request.Route = self.route ord_request.ExtendedFields['ORDER_TAG'] = 'XAP-{0}'.format( str(uuid4())) basket_order = ord.BasketOrderRequest() basket_order.Orders.extend([ord_request, ord_request1]) basket_order.UserToken = token response = ord_stub.SubmitBasketOrder(basket_order) if response.ServerResponse == 'success': print("Successfully Submitted Basket Order") else: print(response.OptionalFields["ErrorMessage"]) time.sleep(10) iter.cancel() t.join() req = util.DisconnectRequest(UserToken=token) disconnect_response = util_stub.Disconnect(req) print('Disconnect result: ', disconnect_response.ServerResponse)