oandapy عبارة عن غلاف بيثون لـ 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...")
يتم تعيين وسيطات الكلمات الأساسية للوظائف إلى الوظائف المتاحة لكل نقطة نهاية في مستندات Oanda API، لذا فإن التغييرات التي يتم إجراؤها على واجهة برمجة التطبيقات لا تمنعك من استخدامها بواسطة هذه المكتبة. لكل استدعاء لواجهة برمجة التطبيقات، يُرجع oandapy كائن python الأصلي، والذي تم تحويله من JSON حتى لا تضطر إلى ذلك.
تحتوي فئة EndpointsMixin في oandapy.py على مزيج من جميع نقاط نهاية Oanda API.
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)