Brighten up your day !!

【oandapyV20】OandaAPIでローソクを取得

【oandapyV20】OandaAPIでローソクを取得

+1

この記事ではoandapyV20を使ってローソクチャートを取得する方法について記載します。ローソクの長さ、取得データの種類、取得期間の指定方法なども含めて記載します。

oandapyV20では、PricingInfoというクラスで/v3/instruments/{instrument}/candlesをGet通信で叩いています。

ドル円のローソクチャートを取得基本のコードはこちらです。

# -*- coding: utf-8 -*-
import json
from oandapyV20 import API
from oandapyV20.endpoints.pricing import PricingInfo
from oandapyV20.exceptions import V20Error
import oandapyV20.endpoints.instruments as instruments
import datetime
import pandas

def main():
    account_id="XXX-XXX-XXXXXXX-XXX"
    access_token = "***************************************************************"
    api = API(access_token=access_token, environment="practice")#or live

    params = {"instruments": "USD_JPY"}
    pricing_info = PricingInfo(accountID=account_id, params=params)


    r = instruments.InstrumentsCandles(instrument="USD_JPY",
                                    params={
                                        "granularity": "S15", # ロウソク足の種類を選択
                                        "alignmentTimezone": "Japan", # タイムゾーン
                                        #"from":datetime.datetime.now()
                                    }
    )
    data = api.request(r)
    for candle in r.response["candles"]:
        print(candle)

if __name__ == "__main__":
    main()

データの返り値であるcandleの変数には下記の値が入ります

(Pdb) candle
{'complete': True, 'volume': 117597, 'time': '2020-11-05T08:00:00.000000000Z', 'mid': {'o': '104.314', 'h': '104.388', 'l': '103.360', 'c': '103.424'}}

ローソク足の長さを指定する

上記ではローソクの長さを15秒に指定しますが、最短で5秒、最大で1ヶ月まで変更できます。oandapyV20では、InstrumentsCandlesをインスタンス化する際のparamという変数で様々な取得条件を指定しますが、ローソク足の長さはgranularityというキーで指定します。これに対応する値は文字列型で下記で指定します。

    r = instruments.InstrumentsCandles(instrument="USD_JPY",
                                    params={
                                        "granularity": "S15", # ロウソク足の種類を選択
                                        "alignmentTimezone": "Japan", # タイムゾーン
                                        #"from":datetime.datetime.now()
                                    }
    )
引数間隔
S55秒間
S1010秒間
S1515秒間
S3030秒間
M11分間
M22分間
M33分間
M44分間
M55分間
M1010分間
M1515分間
M3030分間
H11時間
H22時間
H33時間
H44時間
H66時間
H88時間
H1212時間
D1日
W1週間
M1ヶ月

総データ取得期間の指定

総データ取得期間を指定する際は、同様にparamという辞書の中で指定します。この中でfromとtoというキーで時間を「文字列型」のUNIXTIMEで指定します。

r = instruments.InstrumentsCandles(
                        instrument="USD_JPY",
                        params={
                            "granularity": "D",
                            "alignmentTimezone": "Japan",
                            "from":str((datetime.datetime.now()-datetime.timedelta(days=30)).timestamp()),
                            "to":str((datetime.datetime.now()-datetime.timedelta(days=25)).timestamp())
                            }
                        )

キャンドルの本数の指定

データの期間を指定する代わりに、キャンドルの本数で総データ取得期間を指定することもできます。デフォルトは500本となります。キャンドルの本数で帰って来るデータの量を指定したい場合はcount引数を整数で指定します。なお、期間をfrom,toで指定した場合こちらは使用できません。countの最大は5000本です。

r = instruments.InstrumentsCandles(
instrument="USD_JPY",
params={
"granularity": "D",
"alignmentTimezone": "Japan",
"count":100}
)

ローソクの価格種を指定する

ask,bid,middleのいずれのローソクを取得するかについてはparamsでpriceキーで指定できます。“M” はmidpoint candles、 “B” はbid candles)、 “A” はask candlesとのことで、デフォルトは”M”となります。

midの場合

(Pdb) candle
{'complete': True, 'volume': 117597, 'time': '2020-11-05T08:00:00.000000000Z', 'mid': {'o': '104.314', 'h': '104.388', 'l': '103.360', 'c': '103.424'}}

bidの場合

(Pdb) candle
{'complete': True, 'volume': 117597, 'time': '2020-11-05T08:00:00.000000000Z', 'bid': {'o': '104.308', 'h': '104.382', 'l': '103.354', 'c': '103.418'}}

通貨を指定する

これはinstrument引数で指定します。通貨のペアを/ではなく_でつないで指定します。

例えば,よく使うものを列挙すると

ペアコード
ドル円USD_JPY
ドルユーロEUR_USD
ユーロ円EUR_JPY

https://www.oanda.jp/course/currencypair

参考文献

https://oanda-api-v20.readthedocs.io/en/latest/endpoints/instruments/instrumentlist.html

https://developer.oanda.com/rest-live-v20/instrument-ep/

リアルタイムでデータを取得したい場合はこちらの記事をご覧ください。

+1

⭐️Brighten up your day with NP-Systems⭐️


  • GAEでPythonをデプロイする

    更新日時:2021年4月4日 21時17分

    0 2021年はPython37が良さそう.requirements.txtはpip3 listで表示されたものを書く. 0


  • Angular(Ionic)でHTTPリクエスト

    更新日時:2021年3月24日 18時23分

    0 AngularでバックエンドAPIへアクセスしてデータを取得する際、認証情報やクエリパラメータを付与したい時がある。 Post通信 Get通信 0


  • 3月15日AngularでAdsense

    更新日時:2021年3月15日 06時46分

    0 もう3月を中旬ですね。もう春ですね!Yoasobiに最高にハマっています。 昨日ようやくAngular(Ionic)でAdsenseを表示できるようになりました。 http://ocr-app.np-sys.com/…


  • Oandaのデモ口座における改悪について

    更新日時:2021年2月19日 08時06分

    0 2021年2月はじめに突然Oandaからメールがきて多くの改悪を行うということでびっくりしました。今までも一方的な変更が突然起こり辟易して来ましたが、今回の変化は大きすぎます。 【重要】デモ口座の利用期限およびオーダ…


  • 【oandapyV20】OandaAPIでオーダブック、ポジションブックを取得する

    更新日時:2020年12月7日 21時26分

    0 この記事ではoandapyV20を使ってオーダブック、ポジションブックを取得する方法について記載します。 oandapyV20では、オーダーブックをとるためにはoandapyV20.endpoints.instrum…


  • 【oandapyV20】OandaAPIで価格をStreaming配信で取得する

    更新日時:2020年12月8日 21時29分

    0 この記事ではoandapyV20を使ってStreaming配信でリアルタイムに価格を取得する方法について記載します。 Streaming配信は非常に便利であるものの、最大で250msごとのデータしか提供されませんので…


  • 【oandapyV20】OandaAPIでローソクを取得

    更新日時:2020年12月6日 20時46分

    +1 この記事ではoandapyV20を使ってローソクチャートを取得する方法について記載します。ローソクの長さ、取得データの種類、取得期間の指定方法なども含めて記載します。 oandapyV20では、PricingInf…


  • Adsenseの住所確認の日数と手順について

    更新日時:2020年12月4日 21時42分

    0 Google Adsenseでは、収益が1000円程度を超えると住所確認のために郵送でPINコードが発送されます。振り込み準備に向けて、これに印字された6桁の番号をAdsenseのHPで入力し、住所が正しいことを認証…


  • GAEでPythonをデプロイする

    更新日時:2021年4月4日 21時17分

    0 2021年はPython37が良さそう.requirements.txtはpip3 listで表示されたものを書く. 0


  • Angular(Ionic)でHTTPリクエスト

    更新日時:2021年3月24日 18時23分

    0 AngularでバックエンドAPIへアクセスしてデータを取得する際、認証情報やクエリパラメータを付与したい時がある。 Post通信 Get通信 0


this is single-default.php