Skip to main content

portal to use various api data service

Project description

Asklora Portal

Shared utilities and helper classes used in Asklora projects

Contents

  1. Clients for external services (MarketData, Broker, PriceData, DAMECAClient, DAMFBClient) and their supporting classes (DAM, pydantic models for xml serialising and de-serialising)
  2. Helper classes (SingletonMeta, ExtendedEnum, PGPHelper)
  3. Helper functions (deep_get, get_file_size, get_file_sha1)

Information on specific sections

Broker, PriceData and MarketData client

required .env config when importing these

  • BROKER_API_URL=brokerurl
  • MARKET_API_URL=market url
  • BROKER_KEY=key
  • BROKER_SECRET=secret

usage

from asklora import Broker

broker = Broker()
broker.create_account(...)

or you can use our Portal class to get the specific model

import asklora

portal = asklora.Portal()

rest = portal.get_broker_client() # get a REST client for trade, user, position , order
marketrest = portal.get_market_client() # get a REST client for market data
eventclient = portal.get_event_client() # get an event client for trade, user, position, order

PriceData (for IEX)

required .env config

  • IEX_API_URL
  • IEX_TOKEN

usage

from asklora import PriceData

price_data = PriceData()
price_data.get_lastestPrice("MSFT")

DAMECAClient and DAMFBClient

required .env config

  • DAM_URL
  • DAM_CSID

usage

For these clients, you can find the Pydantic models needed by some of the class methods in the models and enums module.

for example, in the DAMECAClient, in the generate_application_payload method, the first argument accepts DAMApplicationPayload model that will automatically processed to xml the API endpoint needs.

examples

  • DAMECAClient

    from asklora import DAMECAClient, PGPHelper
    from asklora.models import DAMApplicationPayload
    
    client = DAMECAClient()
    
    # Build payload
    payload = DAMApplicationPayload(
        user_id=56,
        first_name="Jane",
        last_name="Smith",
        ...
    )
    
    # Needed for encryption
    pgp_helper = PGPHelper(
        private_key_path=...,
        public_key_path=...,
        remote_public_key_path=...,
    )
    
    # Send the request
    client.create_account(payload, pgp_helper=pgp_helper)
    
  • DAMFBClient

    from asklora import DAMFBClient, PGPHelper
    from asklora.models import InstructionSet, InternalCashTransfer, CancelTransaction
    
    client = DAMFBClient()
    
    instruction_set = InstructionSet(
        instructions=[
            InternalCashTransfer(
               id=4,
               source="U199516",
               destination="U34516",
               amount=1000,
               currency="USD",
            ),
            CancelTransaction(
               id=5,
               ib_instr_id="3",
               reason="Wrong destination",
            ),
        ]
    )
    pgp_helper = PGPHelper(
        private_key_path=...,
        public_key_path=...,
        remote_public_key_path=...,
    )
    
    client.create_instruction(instruction_set, pgp_helper=pgp_helper)
    
    # if needed, you can also send xml directly
    payload = """<?xml version="1.0" encoding="UTF-8"?>
    <instruction_set
      xmlns="http://www.interactivebrokers.com/fbfb_instruction_set"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.interactivebrokers.com/fbfb_instruction_set fbfb_instruction_set.xsd "
      creation_date="2019-01-11" id="2450" version="1">
      <close_account id="2450">
          <client_ib_acct_id>U1234567</client_ib_acct_id>
          <close_reason> No longer needed </close_reason>
      </close_account>
    </instruction_set>"""
    
    client.create_instruction(payload, pgp_helper=pgp_helper)
    
  • Both

    You can also initialise one or both of the classes above like this:

    from asklora import IBClient
    
    eca_client = IBClient.get_ECA_client()
    fb_client = IBClient.get_FB_client()
    

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

asklora_portal-1.1.13.tar.gz (28.2 kB view hashes)

Uploaded Source

Built Distribution

asklora_portal-1.1.13-py3-none-any.whl (34.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page