oandapy — это оболочка Python для REST API OANDA.
Использование пипа:
$ pip install git+https://github.com/oanda/oandapy.git
oandapy зависит от запросов Python, которые будут установлены автоматически.
Включите модуль oandapy и создайте экземпляр oandapy с учетными данными вашей учетной записи. Для FxGame и FxTrade необходимо предоставить токен доступа.
import oandapy
oanda = oandapy.API(environment="practice", access_token="abcdefghijk...")
Аргументы ключевых слов для функций сопоставляются с функциями, доступными для каждой конечной точки в документации API Oanda, поэтому эта библиотека не удерживает изменения в API от их использования. Для каждого вызова API oandapy возвращает собственный объект Python, преобразованный из JSON, поэтому вам не нужно этого делать.
Класс EndpointsMixin в oandapy.py содержит миксин всех конечных точек API Oanda.
response = oanda.get_prices(instruments="EUR_USD")
prices = response.get("prices")
asking_price = prices[0].get("ask")
# required datetime functions
from datetime import datetime, timedelta
# sample account_id
account_id = 1813880
# set the trade to expire after one day
trade_expire = datetime.utcnow() + timedelta(days=1)
trade_expire = trade_expire.isoformat("T") + "Z"
response = oanda.create_order(account_id,
instrument="USD_CAD",
units=1000,
side='sell',
type='limit',
price=1.15,
expiry=trade_expire
)
Создайте собственный класс стримера, чтобы настроить способ обработки данных. Каждый тик отправляется через функции on_success
и on_error
. Поскольку эти методы являются абстрактными, вам необходимо переопределить их для обработки потоковых данных.
В следующем примере из потока выводится количество тактов, а затем отключается.
class MyStreamer(oandapy.Streamer):
def __init__(self, count=10, *args, **kwargs):
super(MyStreamer, self).__init__(*args, **kwargs)
self.count = count
self.reccnt = 0
def on_success(self, data):
print data, "n"
self.reccnt += 1
if self.reccnt == self.count:
self.disconnect()
def on_error(self, data):
self.disconnect()
Инициализируйте экземпляр своего пользовательского стримера и начните подключаться к потоку. Дополнительную документацию см. на http://developer.oanda.com/rest-live/streaming/.
account = "12345"
stream = MyStreamer(environment="practice", access_token="abcdefghijk...")
stream.rates(account, instruments="EUR_USD,EUR_JPY,US30_USD,DE30_EUR")
Ту же процедуру можно использовать для потоковой передачи событий.
stream = MyStreamer(environment="practice", access_token="abcdefghijk...")
stream.events(ignore_heartbeat=False)