概要
FXの自動取引システムを構築して欲しいと知り合いに頼まれたので、色々と試してみました。
Oandaが様々な言語でoanda REST APIのWrapperを提供しているので、デモ申込を行いサンプルコードを書いてみました。
後々機械学習で運用することも考えて、Python版のWrapperであるoandapyを使用してみることにしました。
環境の準備
pyenvとpyenv-virtualenvをインストール
手元のmacにはpyenvとpyenv-virtualenvは導入されている状態だったのですが、一応インストール方法は以下のような感じだったはずです。
$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv
$ git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
$ vi ~/.bash_profile
export PYENV_ROOT="${HOME}/.pyenv"
if [ -d "${PYENV_ROOT}" ]; then
export PATH=${PYENV_ROOT}/bin:$PATH
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
fi
$ source ~/.bash_profile
oandapy用の環境を作成
pyenvとpyenv-virtualenvを用いて、環境を作成します。
$ pyenv install 3.6.3
$ pyenv virtualenv 3.6.3 oanda
$ mkdir /path/to/workspace
$ pyenv local oanda
プロンプトが(oanda) $
みたいな表示になればOKです。
oandapyをインストール
pipを使用してoandapyモジュールをインストールします。
また、表示を整えるためにpandasもインストールしておきます。
$ pip install git+https://github.com/oanda/oandapy.git
$ pip install pandas
oandaのデモアカウントを作成
APIを使用して取引をしたりデータを取得したりするには、自分のアカウントを作成する必要があります。
Oandaのデモアカウントを作成しておきましょう。
デモアカウント作成ページで作成した後、メールでIDとパスワードが送られてきます。
ログインページでログインをしましょう。
本番口座とデモ口座を選択できるようになっていますが、ここではもちろんデモ口座を選択します。
ログインすると、トップページにデモ用の口座番号があります。
後で使用することになるのでメモに控えておきます。
また、右上のハンバーガーメニューから、APIアクセスの管理を選択し、API用のアクセストークンを発行します。
このアクセストークンも後ほど使用するので、メモに控えておきます。
これでAPIの仕様準備は全て整いました。
サンプルコード
作成
oandapyのREADMEに書かれているサンプルを実行します。
import oandapy
import pandas as pd
if __name__ == '__main__':
API_KEY = "xxxxxxxxxxx..." # アクセストークンに置き換え
ACCOUNT_ID = "xxxxxxx" # 口座番号に置き換え
oanda = oandapy.API(environment="practice", access_token=API_KEY)
response = oanda.get_prices(instruments="USD_JPY,EUR_JPY,AUD_JPY")
prices = response.get("prices")
df = pd.DataFrame(list(prices))
print(df.head())
instrumentsには通貨ペアを入力するが、'/'は'_'に置き換えて指定する。
実行
$ python sample.py
ask bid instrument status time
0 113.087 113.027 USD_JPY halted 2018-01-05T21:59:59.574889Z
1 136.059 135.967 EUR_JPY halted 2018-01-05T21:59:59.518365Z
2 88.970 88.830 AUD_JPY halted 2018-01-05T21:59:59.475339Z
askは買い、bidは売りです。
まとめ
oandapyを使用することでoandaのデータを簡単に取ってくることができました。
今回はレートの取得までしかできませんでしたが、次回は仮想取引をできるようにしたいと思います。