Esempio n. 1
0
    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)
Esempio n. 2
0
    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)
Esempio n. 3
0
    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)
Esempio n. 4
0
    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)
Esempio n. 5
0
    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)
Esempio n. 6
0
    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)
Esempio n. 8
0
    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)
Esempio n. 10
0
    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)