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()
marketrest = portal.get_market_client()
eventclient = portal.get_event_client()
PriceData (for IEX)
required .env config
usage
from asklora import PriceData
price_data = PriceData()
price_data.get_lastestPrice("MSFT")
DAMECAClient and DAMFBClient
required .env config
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()
payload = DAMApplicationPayload(
user_id=56,
first_name="Jane",
last_name="Smith",
...
)
pgp_helper = PGPHelper(
private_key_path=...,
public_key_path=...,
remote_public_key_path=...,
)
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)
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()