Smarkets Streaming API Python client.
Compatible with Python 2.7, 3.5 and PyPy 1.9+.
Documentation: http://smarkets-python-sdk.readthedocs.org/en/latest/
Installing using source distribution
When you install smk-python-sdk using PyPI distribution there are no non-Python dependencies. All the Python dependencies will be fetched for you when you install smk-python-sdk.
PyPI page: https://pypi.python.org/pypi/smk_python_sdk
pip install smk-python-sdk
Getting Started
import logging
logging.basicConfig(level=logging.DEBUG)
from smarkets.streaming_api.api import (
SessionSettings, Session, StreamingAPIClient,
)
username = 'username'
password = 'password'
settings = SessionSettings(username, password)
settings.host = 'stream.smarkets.com'
session = Session(settings)
client = StreamingAPIClient(session)
client.login()
client.ping()
client.read()
client.flush()
client.logout()
Registering callbacks
def login_response(message):
print('eto.login_response', msg)
def global_callback(name, message):
print(name, message.protobuf)
client.add_handler('eto.login_response', login_response)
client.add_global_handler(global_callback)
Placing orders
from smarkets.streaming_api.api import SIDE_BID
from smarkets.streaming_api.seto import OrderCreate
def order_accepted(message):
reference = message.order_accepted.reference
order_id = message.order_accepted.order_id
print(
'ORDER_ACCEPTED: reference {} corresponding to order_id {}'.format(
reference, order_id,
)
)
def order_rejected(message):
reference = message.order_rejected.reference
reason = message.order_rejected.reason
print('ORDER_REJECTED with reference {} with reason {}'.format(reference, reason))
client.add_handler('seto.order_accepted', order_accepted)
client.add_handler('seto.order_rejected', order_rejected)
market_id = 100000
contract_id = 200000
order = OrderCreate()
order.quantity = 400000 # £40 payout
order.price = 2500 # 25.00%
order.side = SIDE_BID
order.market_id = market_id
order.contract_id = contract_id
client.send(order)
client.flush()
Cancelling orders
from smarkets.streaming_api.seto import OrderCancel
order_id = ... # received in seto.order_accepted message
def order_cancelled(message):
order_id = message.order_cancelled.order_id
reason = message.order_cancelled.reason
print('ORDER_CANCELLED order_id {} with reason {}'.format(order_id, reason))
def order_cancel_rejected(message):
order_id = message.order_cancel_rejected.order_id
reason = message.order_cancel_rejected.reason
print('ORDER_CANCEL_REJECTED: with order_id {} with reason {}'.format(order_id, reason))
client.add_handler('seto.order_cancelled', order_cancelled)
client.add_handler('seto.order_cancel_rejected', order_cancel_rejected)
cancel = OrderCancel()
cancel.order_id = order_id
client.send(cancel)
client.flush()
Thread Safety
Functions and class members contained in this package are thread safe. Instance members are not thread safe.
Development
GitHub repository: https://github.com/smarkets/smk_python_sdk/
Non-Python dependencies:
piqi
Google protocol buffers compiler and libraries
You can install Python dependencies by executing:
pip install -r requirements.txt
To build and install call:
python setup.py clean build install
Note: building the package does not fetch the most recent piqi files from their respective locations in setup.py. In order to do so, you must call python setup.py clean, and then python setup.py build.
License
Copyright (C) Smarkets Limited <support@smarkets.com>
This module is released under the MIT License: http://www.opensource.org/licenses/mit-license.php (or see the LICENSE file)
Release files for smk_python_sdk 9.4.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| smk_python_sdk-9.4.4.tar.gz | 80.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| smk_python_sdk-9.4.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 147.8 kB
Release files / smk_python_sdk-9.4.4.tar.gz
| Download URL | smk_python_sdk-9.4.4.tar.gz |
|---|---|
| Size | 80.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bf614afed67d37adfefedcb031fb0072870fd6f68cd84a305c68f26527f1bf77
|
|
BLAKE2b-256 checksum How to use checksums |
24fd0489df8a7b0b4580f6aabe322fb6127f8e96fcba1fbf1354770a9dc4c31e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
Python-urllib/3.6
|
Release files / smk_python_sdk-9.4.4-py3-none-any.whl
| Download URL | smk_python_sdk-9.4.4-py3-none-any.whl |
|---|---|
| Size | 67.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
16017c4eed8cff4c6f68ff0fc8a62b15fbbcacc468f67dfda86539b5c417f68f
|
|
BLAKE2b-256 checksum How to use checksums |
f01266d48fb33b2309be82144c7fff03973e5a9a74970918cfe0f1845229bbc2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
Python-urllib/3.6
|