oandapy é um wrapper python para a API REST da OANDA.
Usando pip:
$ pip install git+https://github.com/oanda/oandapy.git
oandapy depende de solicitações python, que serão instaladas automaticamente.
Inclua o módulo oandapy e crie uma instância oandapy com as credenciais da sua conta. Para FxGame e FxTrade, um token de acesso deve ser fornecido.
import oandapy
oanda = oandapy.API(environment="practice", access_token="abcdefghijk...")
Os argumentos de palavra-chave para funções são mapeados para as funções disponíveis para cada ponto de extremidade nos documentos da API Oanda, portanto, as alterações na API não são impedidas de serem usadas por esta biblioteca. Para cada chamada de API, oandapy retorna um objeto python nativo, convertido de JSON para que você não precise fazer isso.
A classe EndpointsMixin em oandapy.py contém um mix de todos os endpoints da 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
)
Crie uma classe de streamer personalizada para configurar como você deseja lidar com os dados. Cada tick é enviado através das funções on_success
e on_error
. Como esses métodos são abstratos, você precisa substituí-los para lidar com os dados de streaming.
O exemplo a seguir imprime a contagem de ticks do fluxo e depois desconecta.
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()
Inicialize uma instância do seu streamer personalizado e comece a conectar-se ao stream. Consulte http://developer.oanda.com/rest-live/streaming/ para obter mais documentação.
account = "12345"
stream = MyStreamer(environment="practice", access_token="abcdefghijk...")
stream.rates(account, instruments="EUR_USD,EUR_JPY,US30_USD,DE30_EUR")
O mesmo procedimento pode ser usado para eventos de streaming.
stream = MyStreamer(environment="practice", access_token="abcdefghijk...")
stream.events(ignore_heartbeat=False)