portal to use various api data service
Project description
Asklora Portal
Shared utilities and helper classes used in Asklora projects
Contents
- Clients for external services (MarketData, Broker, PriceData, DAMECAClient, DAMFBClient) and their supporting classes (DAM, pydantic models for xml serialising and de-serialising)
- Helper classes (SingletonMeta, ExtendedEnum, PGPHelper)
- 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
Release history Release notifications | RSS feed
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)
Built Distribution
Close
Hashes for asklora_portal-1.1.13-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e60c44675d5bd4fe987546c8b449f01e84277e33f328e2b506bf89b2ba61a5dd |
|
MD5 | c718cda6fa41aa6d77f42c04bcc92755 |
|
BLAKE2b-256 | d84c4a5d06f58fd20c3b6a7b3a97b4025ad2e2b4dfd6349264b47d7da50cf97a |