
前回は岡三オンライン証券の岡三RSSを使ってExcel上で日経平均先物を売買する方法を説明した。
その際、注文関数はExcelシートのセルに直接記入したが、マクロで注文関数を呼び出して売買を実行することもできる。
今回はマクロを使用する方法を説明する。
岡三RSSをExcelマクロで使用するための事前準備についても触れる。
日経平均先物の新規注文(Excelマクロ使用)
下のExcel記入例は、前回のExcel直接記入例と1点を除いて同じである。
違いは、S2セルが1になっていることだけ。
Excelマクロ上で、S2が1かどうかを判定して、注文関数を実行するようにすればよい。
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S |
先物コード | 限月 | 取引種類 | 建玉番号 | 建玉枝番号 | 売買区分 | 執行条件 | 単価 | 数量 | 注文確認 | 完了 メッセージ | 注文画面 | パスワード | 発注 ID | 有効期間区分 | メモ | 発注条件(逆指値) | 発注単価(逆指値) | 発注関数 1の時発注される |
N225mini | 0 | 1 | 3 | 8 | 20000 | 1 | 1 | 1 | 1 | abcdefgh | ="FN"&ROW()&TEXT(TODAY(),"YYMMDD") | 1 | autobuy | 1 |
それをするためのVBAコードは最後に示す。
ここでは、S列のセルの値が1の場合に注文を出すようにすることを覚えておけばよい。
また、使用するExcelシートのシート名はSheet1であることを想定している。
日経平均先物の決済注文(Excelマクロ使用)
すでに持っている建玉を決済する場合もExcelシートの記入はほとんど同じである。
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S |
先物コード | 限月 | 取引種類 | 建玉番号 | 建玉枝番号 | 売買区分 | 執行条件 | 単価 | 数量 | 注文確認 | 完了 メッセージ | 注文画面 | パスワード | 発注 ID | 有効期間区分 | メモ | 発注条件(逆指値) | 発注単価(逆指値) | 発注関数 1の時発注される |
N225mini | 0 | 2 | 20180122E01N30946334 | 1 | 1 | 8 | 20000 | 1 | 1 | 1 | 1 | abcdefgh | ="FR"&ROW()&TEXT(TODAY(),"YYMMDD") | 1 | autobuyR | 1 |
新規注文との違いは、取引種類を「2」とすることと、建玉番号、建玉枝番号を入れることである。
また、使用するExcelシートのシート名はSheet2を想定している。
それと、売買区分は「3」が買いを意味し、「1」が売りを意味する。
従って、買いエントリーを売りで決済する場合は売買区分は「1」にする。
Excel VBAソースコード
注文を出すためのExcel VBAのソースことを下に示す。
Sub TradeGo()
Dim i As Long
Dim norder As String
With Worksheets("Sheet1")
For i = 2 To 31
If .Cells(i, 19) = 1 Then
norder = FNEWORDER(.Cells(i, 1), .Cells(i, 2), .Cells(i, 3), .Cells(i, 4), .Cells(i, 5), .Cells(i, 6), .Cells(i, 7), .Cells(i, 8), .Cells(i, 9), .Cells(i, 10), .Cells(i, 11), .Cells(i, 12), .Cells(i, 13), .Cells(i, 14), .Cells(i, 15), .Cells(i, 16), .Cells(i, 17), .Cells(i, 18))
End If
Next i
End With
With Worksheets("Sheet2")
For i = 2 To 31
If .Cells(i, 19) = 1 Then
norder = FNEWORDER(.Cells(i, 1), .Cells(i, 2), .Cells(i, 3), .Cells(i, 4), .Cells(i, 5), .Cells(i, 6), .Cells(i, 7), .Cells(i, 8), .Cells(i, 9), .Cells(i, 10), .Cells(i, 11), .Cells(i, 12), .Cells(i, 13), .Cells(i, 14), .Cells(i, 15), .Cells(i, 16), .Cells(i, 17), .Cells(i, 18))
End If
Next i
End With
End Sub
ここでは、新規注文の判定と決済注文判定を行い、S列のセルが1である場合にFNEWORDER関数で注文を出すようにしている。
マクロで岡三RSSのコマンドがうまく動作しない場合は下記を参考にしてVBAの参照設定で岡三RSSにチェックが入っているか確認する。
これでExcelマクロを使って先物の新規注文と決済が可能になった。
自動売買を行うためには、S1セルにただの数字の1ではなく、ある条件を満たしたときに1となるようにIf文で条件設定をしてやればよい。
条件文の例も今後示していくつもり。