ExcelVBAではじめるバイナリーオプション自動取引

4. 自動取引ツールを作ろう

e.レートを取得する


e. レートを取得する

レートを取得する意味

 2択のバイナリーオプションならばチャートや注文時のレートなど見ないでカンでいけるという人もいるかもしれませんが、それでは期待値をプラスにすることはできず、単なるギャンブルです。

 既に確立した有効な投資手法を持っているという場合は別として、個人が投資で資金を増やしたいと考えるのならば、情報を最大限に利用して、取引における成功率の期待値を僅かでも上げる努力をしなければなりません。

 レート情報を取得することでエクセルを利用したテクニカル分析を行うことができ、それを元にして自分だけのシグナルを構築することは、バイナリーオプションを攻略するための重要な武器になります。

レートを取得するためのIEオブジェクト

 それでは実際にレート情報を取得してみましょう。

 レートを取得することができればどのサイトにアクセスしてもよいのですが、そこそこの頻度でアクセスを繰り返す必要があるため、取引と関係ないサイトを利用するのは好ましくありませんし、重いサイトも避けた方がよいでしょう。

 今は外為オプション取引に利用するための情報を取得するのが目的なので、ここではGMOmobileのサイトを利用することにします。

 レート取得用のIEオブジェクトを作成し、先ほどの要領でGMOmobileのサイトにログインしてみましょう。

GMOmobileからレート情報を取得するコード

 以下はGMOmobileにログインし、「レート一覧(新規注文)」ページへ移動した後、更新をクリックし、「USD/JPY(ドル/円)」の最新レートを取得して変数「rate」に格納し、Sheet1のCells(1,2)に出力するコードです。

Sub Login_GMOmobile() Dim IE_RATE As New InternetExplorer 'InternetExplorerオブジェクトの作成 Dim tags As Variant 'タグ検索用変数 Dim webtime As Variant 'web上の時刻 IE_RATE.Visible = True 'IEを表示する IE_RATE.Navigate2 "https://sec-sso.click-sec.com/mf/" 'GMOmobileのログイン画面 While (IE_RATE.Busy = True) Or (IE_RATE.ReadyState < READYSTATE_COMPLETE) '表示待ち DoEvents '制御を渡す Wend IE_RATE.document.all("j_username").innerText = "●●●●●●●●" 'ユーザーID入力 IE_RATE.document.all("j_password").innerText = "××××××××" 'パスワード入力 IE_RATE.document.all("LoginForm").Click 'ログインボタンクリック While (IE_RATE.Busy = True) Or (IE_RATE.readyState < READYSTATE_COMPLETE) '表示待ち DoEvents Wend For Each tags In IE_RATE.document.getElementsByTagName("a") 'レート一覧(新規注文)を探す If tags.innerText = "レート一覧(新規注文)" Then tags.Click 'レート一覧(新規注文)をクリック Exit For End If Next While (IE_RATE.Busy = True) Or (IE_RATE.readyState < READYSTATE_COMPLETE) '表示待ち DoEvents '制御を渡す Wend For Each tags In IE_RATE.document.getElementsByTagName("a") '更新を探す If tags.innerText = "更新" Then tags.Click '更新をクリック Exit For End If Next While (IE_RATE.Busy = True) Or (IE_RATE.readyState < READYSTATE_COMPLETE) '表示待ち DoEvents Wend tags = IE_RATE.document.body.innerText 'bodyを読み込み Dim rate '最新のレートを格納するための変数 rate = Val((Mid(tags, InStr(tags, "USD/JPY") + 8, 7))) 'レート(USD/JPY)を取得 If rate >= 100 Then '100円以上の場合 rate = Val((Mid(tags, InStr(tags, "USD/JPY") + 8, 8))) 'レート(USD/JPY)を書き換え End If webtime = (Mid(tags, InStr(tags, "更新") - 10, 8)) 'web時刻を取得 Sheet1.Cells(1, 1) = webtime 'セルに時刻を出力 Sheet1.Cells(1, 2) = rate 'セルにレートを出力 End Sub

レート情報を利用する

 上記のコードを実行してみると、Sheet1のセル(1, 1)に取得時間が、セル(1, 2)に指定した通貨(今回はUSD/JPY)のレートが表示されているはずです。これでドル/円のレート情報が取得できました。

 後は定期的にレートを取得してシート上に並べていけば、テクニカル指標でも独自のシグナルでも、好きなように計算を行って導き出すことができます。

 状況に応じて円高か、円安かを決定するための判定式を考え、成績を検証する作業が自動取引において最も重要な作業といっても過言ではありません。

 もし2択の的中率が60%程度で、ある程度の出現頻度を持つシグナルを作ることができれば、それに基づいて自動取引を行うだけで一生お金に困ることがなくなるかもしれません。

コードを簡単に解説

 購入画面を表示するために使った取引用のIEオブジェクトとは別のIEオブジェクトを用意しています。取引用のIEオブジェクトを使ってもレートを取得することはできますが、購入画面ページは比較的重いので何度も読み込まないようにするため、取引用と取得用のIEオブジェクトは分けた方がよいと思います。

 GMOmobileのログイン画面では入力ボックス等にidが付けられていないので、入力及びクリックを行う際に.document.all()でnameを指定してログインしています。

 ログイン後、一旦"レート一覧(新規注文)"のaタグを検索してリンク先へ移動しています。

 "レート一覧(新規注文)"画面では"更新"のaタグをクリックして最新のページを表示します。複数の通貨ペアのレート情報が表示されますが、ひとまず"USD/JPY"を対象として説明を進めます。

 最新のページを読み込んだ後、ドル/円のレート情報を取得します。

 ここでは、.document.body.innerText(body内のテキスト)の中から"USD/JPY"という文字列を探し、その直後から7文字分(レートが100円以上の場合は8文字分)の文字列を数値に変換して変数「rate」へ格納しています。

 また、ここでサイトに表示されている時刻も取得し、変数「webtime」に格納しています。

 最後にwebtimeとrateの内容をSheet1へ出力しています。

 ちなみに「Sheet1.Cells」のSheet1はシート名ではなく、インデックスが1のシートを指しています(Worksheets(1)と同じ)。シート名が「Sheet1」であるシートを指定したい場合は「Worksheets("Sheet1").Cells」のようにしてください。シート名を指定した場合、"Sheet1"(指定したシート名)がブックに存在しない場合はエラーになります。

行き詰まりそうなところ

 このまま取引ができるのなら話は早いのですが、GMOmobileは携帯用サイトであり、このサイトを介して外為オプション取引をPCから行うことは基本的にできないようになっています。

 そしてPCサイトでは外為オプション取引インターフェイスにFLASHが使用されており、HTMLソースをいくら眺めてもどう操作したらよいか分からないと思います。

 次にVBAを使って実際にPCサイトから外為オプション取引を行うための方法を紹介しますが、先に進む前にどうすればよいのか少しだけ考えてみることをおすすめします。