Hinweis. Beide verwenden das JSON-Format und sind daher sehr kompatibel.
Von hier vorerst. Auslassen der Umgebungskonstruktion von Python
Vergessen Sie nicht, den Behälter in Ihren PFAD zu legen. (Ich habe vergessen) http://qiita.com/yoh-nak/items/f0c429f10347ae7ec98b http://qiita.com/t-koyama/items/9b8804cbec59b3c93eb0
pip install pymongo
pip install oandapy
http://qiita.com/saba1024/items/f2ad56f2a3ba7aaf8521 http://www.cuspy.org/diary/2012-04-17/the-little-mongodb-book-ja.pdf
http://developer.oanda.com/docs/jp/ Übrigens habe ich nicht versucht, die Sandbox-Umgebung zu verwenden, daher empfehle ich, die fxTrade Practice-Umgebung von Anfang an zu verwenden.
http://api.mongodb.com/python/
https://github.com/oanda/oandapy
import oandapy
oanda = oandapy.API(environment="practice", access_token="your_token")
response = oanda.get_history(instrument="EUR_USD",granularity="D",count=500)
EUR_USD_D = response.get("candles")
Allein damit können Sie die täglichen Euro-Dollar-Daten (500 Schritte) überwinden. Sie können auch Start und Ende angeben.
from pymongo import MongoClient
client = MongoClient('localhost',27017)
db = client.ex_rate
collection = db.eur_usd_d
collection.insert_many(d for d in EUR_USD_D)
Allein damit können die oben im JSON-Format erfassten täglichen Daten (500 Schritte) in der Sammlung (Tabelle) [eur_usd_d] der MongoDB-Datenbank [ex_rate] gespeichert werden. Selbst wenn der Inhalt von MongoDB leer ist, erstellen sie Datenbanken und Sammlungen ohne Erlaubnis.
import oandapy
import pandas as pd
oanda = oandapy.API(environment="practice", access_token="your_token")
Geben Sie die Konto-ID in #account_id ein (nicht die ID bei der Anmeldung). response = oanda.get_instruments(account_id="xxxxxxx") insts = response.get("instruments") #In Pandas für eine einfache Anzeige df = pd.DataFrame(list(insts)) df.head()
↓ Ausgabe
displayName instrument maxTradeUnits pip
0 AUD/CAD AUD_CAD 10000000 0.0001
1 AUD/CHF AUD_CHF 10000000 0.0001
2 AUD/HKD AUD_HKD 10000000 0.0001
3 AUD/JPY AUD_JPY 10000000 0.01
4 AUD/NZD AUD_NZD 10000000 0.0001
Sie können es kontinuierlich abrufen, auch wenn die Anzahl, die Sie erhalten möchten, die Obergrenze von 5000 durch das folgende Verfahren überschreitet. Es kann einen klügeren Weg geben.
Holen Sie sich die neueste Datengruppe und erhalten Sie die höchste (älteste) "Zeit" -Reformieren Sie die "Zeit" -Daten und geben Sie eine Anfrage erneut als "Ende" aus.
import oandapy import datetime as dt
oanda = oandapy.API(environment="practice", access_token="your_token")
response1 = oanda.get_history(instrument="EUR_USD",granularity="D",count=2) EUR_USD_H1 = response1.get("candles")
dtime = dt.datetime.strptime(EUR_USD_H1[0]['time'],'%Y-%m-%dT%H:%M:%S.%fZ')
#Konvertieren Sie erneut in das RFC3339-Format rfc_endtime = dtime.isoformat('T')
response2 = oanda.get_history(instrument="EUR_USD",granularity="D",end=rfc_endtime,count=2)
EUR_USD_H2 = response2.get("candles")
for d in EUR_USD_H2:
print(d)
for d in EUR_USD_H1:
print(d)
↓ Ausgabe
{'time': '2017-08-28T21:00:00.000000Z', 'openBid': 1.19762, 'openAsk': 1.19787, 'highBid': 1.20698, 'highAsk': 1.20712, 'lowBid': 1.19451, 'lowAsk': 1.19471, 'closeBid': 1.19709, 'closeAsk': 1.19728, 'volume': 73642, 'complete': True}
{'time': '2017-08-29T21:00:00.000000Z', 'openBid': 1.19697, 'openAsk': 1.19731, 'highBid': 1.19839, 'highAsk': 1.19853, 'lowBid': 1.18803, 'lowAsk': 1.18821, 'closeBid': 1.18828, 'closeAsk': 1.18856, 'volume': 56980, 'complete': True}
{'time': '2017-08-30T21:00:00.000000Z', 'openBid': 1.18827, 'openAsk': 1.18857, 'highBid': 1.19119, 'highAsk': 1.19139, 'lowBid': 1.18225, 'lowAsk': 1.18238, 'closeBid': 1.19079, 'closeAsk': 1.19102, 'volume': 59987, 'complete': True}
{'time': '2017-08-31T21:00:00.000000Z', 'openBid': 1.19078, 'openAsk': 1.19103, 'highBid': 1.19794, 'highAsk': 1.19807, 'lowBid': 1.18485, 'lowAsk': 1.18508, 'closeBid': 1.18572, 'closeAsk': 1.18625, 'volume': 76954, 'complete': True}
Recommended Posts