OandaPyを使ってみました

前置き

昨年、FXのシステムトレードを始め、いろいろなプログラム(EA)を購入して検証を行っていました。今年は昨年購入したプログラムを一年間フォワードテストを行い、そこそこ良い結果が出たのではないかと感じています。

しかし、自作ではないプログラムを動作させるということは、手法がほぼブラックボックスであり、システムの評価にとどまり、実力の出なくなったプログラムの何が悪かったのか、分からずじまいなので、完全に自分のロジックで利益を伸ばしたいと考えるようになりました。(自然な流れですよね^^;)

MT4なり、pythonなり、技術的な部分は、検索すればある程度構築することは容易だと思いますが、最も重要なのは、勝つことのできるロジックです。

自分の信念を持てる期待値の高いロジックは経験以外得られないな、と考え、裁量取引に取り組んでみました。

特に、スキャルピングの手法を中心に勉強を行なっています。

スキャルピングなどの短期において、リアルタイムに動作するロウソク足の実体、ヒゲの出具合などは、非常に重要な判断基準になります。

そこで、プログラムも価格をリアルタイムに取得して、その動作を取り入れることはできないかと感じており、今回の記事に至ります。調べると、いろいろな人が良質な記事を書いており、あえて書く必要もないと思いましたが、備忘録も兼ねて記述します。

作成するもの

oandaからusdjpyの価格をリアルタイムに取得して表示する。

開発環境など

googleのcolaboratory

PythonのIDEは色々ありますが、サクッと検証できたため、colaboratoryを使いました。

oandapy

oandaデモアカウントAPIキー(もちろん、本番口座でもOK)

colaboratoryでoandapyをインストールする

colaboratoryで、「Python3の新しいノートブック」を作成。

作成したブロックに、

!pip install git+https://github.com/oanda/oandapy.git

を行います。

Successfully built oandapyとコンソール出力されたら成功です。

OandaJapanにデモアカウントを取得

OandaJapanにデモアカウントを作成し、ログインします。

ログイン画面右下に、APIキーの発行があるので、発行します。

ここで取得したAPIキーは、紛失しないようにします。

oandapyでusd_jpy価格を取得するプログラム

新しいコードセルを追加し、以下のプログラムを記述します。

import oandapy
val_ask = 0
val_ask_pre = 0
val_bid = 0
val_bid_pre = 0

myapi = oandapy.API(environment="practice", access_token="ここにAPIキーを入力")
while 1:
 price = myapi.get_prices(instruments='USD_JPY')
 val_ask_pre = val_ask
 val_ask = price['prices'][0]['ask']
 val_bid_pre = val_bid
 val_bid = price['prices'][0]['bid']
 if val_ask != val_ask_pre:
  print("ask:" + str(val_ask) + " bid:" + str(val_bid))

上記プログラムは、whileループで、価格をできるだけ早く取得するループを回しています。

前回取得価格と、今回取得価格に変化がある場合、コンソールに出力するようにしています。

これで、チャートを目で見ているように、価格の変化がわかるようになりました。

これを線で表現するとTickチャートのようになると思いますので、もう少し込み入った実装を行う際に実装していきたいと思います。