Python言語に触れよう!③(OANDAチャート取得編)

FX自動売買

FXの裁量トレードではほとんど勝てない。
おはこんばんちは。自動売買で不労所得生活を夢見る chibamaxです。

今回はOANDAデモ口座で為替レートを取得しよう!というテーマです。

前回からいきなりコードが長くなってさっぱりなんだけど…

たしかにいきなり見たこともないコードに焦ってしまいますよね。

しかしながら中身を全て理解せずとも、プログラムが思い通りの動きさえしてくれれば問題ないのです。

コードを組み合わせてプログラムを作っていくことが大事だと言えます。

今回はOANDAデモ口座を利用して為替レートを取得する方法を紹介しています。

★前回記事

アクセストークンを用意しよう

OANDAデモ口座の作成方法は前回記事で紹介しました。

APIを利用するにはデモ口座のアカウントIDとアクセストークンが必要となります。
取得していない方は前回記事を参照願います。

アクセストークン

※アクセストークンは一度しか確認できないので注意が必要です。(忘れてしまった場合は再発行して必ずメモしてください)

これならOANDAの口座を開設しなくてもレートを簡単に取得できるわね

チャートを取得する

まずはoandapyV20というライブラリをインストールします。

pip install oandapyV20

下記のコードがドル円1時間足のチャート取得コードです。
pair = “USD_JPY”がドル円、”granularity”: “H1″が1時間足という意味です。
アカウントIDとアクセストークンを””内に貼り付けてください。

from oandapyV20 import API
import oandapyV20.endpoints.instruments as instruments

# OANDA API アクセストークンと口座ID
accountID = ""
access_token = ""

# OANDA APIのデモ用へ接続 本番はenvironment="live"
api = API(access_token=access_token, environment="practice")
pair = "USD_JPY"
chart = {
    "alignmentTimezone": "Japan",
    "granularity": "H1"

chart = instruments.InstrumentsCandles(instrument=pair, params=chart)
api.request(chart)

print(chart.response['candles'])

実行してみると…

ドル円チャート

何やら大量に出てきましたね…(滝汗)

これ実はドル円1時間足過去全てのチャートが表示されてしまっています。
凄まじくわかりにくいので最新の情報を1つだけ抜き出してみましょう。
chart内に”count”という欄を追加して1と指定します。(デフォルトは500件)

chart = {
    "alignmentTimezone": "Japan",
    "count": 1,
    "granularity": "H1"
}

今度は大分スッキリしましたね。

チャート1

軽く意味を説明すると、
complete : (False=時間足が確定していない状態、True=確定)
volume : 出来高
time : 足の時間情報(タイムゾーンをJapanにしているのですが、なぜか世界標準時間で表示されてしまう)
mid(中値): o:始値 h:高値 l:安値 c:終値(今回の場合、最新の価格は終値となり、始値以外は変動します)

変数を書き換えることによって様々なチャート情報が得られるのね

細かく分けて表示させる

上記のコードの場合、データを丸ごと表示させてしまっているため非常に見ずらいです。
データを細分化し、必要な情報のみを抜き取っていきましょう。

from oandapyV20 import API
import oandapyV20.endpoints.instruments as instruments

# OANDA API アクセストークンと口座ID
accountID = ""
access_token = ""

# OANDA APIのデモ用へ接続 本番はenvironment="live"
api = API(access_token=access_token, environment="practice")
pair = "USD_JPY"
chart = {
    "alignmentTimezone": "Japan",
    "count": 1,
    "granularity": "H1"

chart = instruments.InstrumentsCandles(instrument=pair, params=chart)
api.request(chart)

time = []
open = []
high = []
low = []
close = []

for i in chart.response['candles']:
    time.append(i["time"])
    open.append(i['mid']['o'])
    high.append(i['mid']['h'])
    low.append(i['mid']['l'])
    close.append(i['mid']['c'])

print(time)
print(open)
print(high)
print(low)
print(close)

時間、始値、高値、安値、終値をリスト化することによって少しは見やすくなりましたね。

チャート細分化

ちなみにカウントの数字を変えることによって表示数は増えます。

チャート5時間分

膨大なチャートを読み込むことによってテクニカル分析などか可能になってきます。

カウントの値を変えることによって最大過去5000件のデータを取得することができるのね

最新APIの仕様書は全て英語

OANDAが提供しているAPIにはV1とV20というバージョンが存在しますが、現在はV20のみ(?)のようです。(英語版はV1は2018年1月で終了、日本でも2019年2月で移行となっています)

OANDA API V1(日本語サイト)

OANDA API V20(英語サイト)

2020/02現在、V20の仕様書サイトは英語のみとなっています。
英語の苦手な方(自分も含)にとっては非常にやりにくい環境と言えますね。

エキサイト翻訳(爆)や日本語の紹介サイトを参考にコードを作っていくしかないのね(泣)

まとめ

いかがでしたでしょうか?

OANDAのAPIを利用すれば、膨大な過去データをリアルタイムで取得することができます。
APIはチャート取得だけでなく発注、ポジションや残高確認をすることもでき、
無論、ドル円だけでなく様々な通貨ペアの情報を5秒足~月足まで取得することもできるのです。

次回以降は注文方法、テクニカル分析などについて解説していきたいと思います。

にほんブログ村 投資ブログへ
投資の素晴らしさを皆さんに知ってもらいたいので、ブログ村の応援クリックよろしくお願い致します。

コメント

  1. diet より:

    Greetings from Los angeles! I’m bored to tears at work so I decided to browse your site on my iphone during lunch break. I really like the info you provide here and can’t wait to take a look when I get home. I’m surprised at how quick your blog loaded on my mobile .. I’m not even using WIFI, just 3G .. Anyhow, great blog!|

タイトルとURLをコピーしました