Excelで自動売買ができる岡三RSSの料金

岡三RSS

岡三RSSとは

岡三RSSとは岡三オンライン証券が提供しているExcelのアドインです。

RSSとはリアルタイム・スプレッド・シートの略でリアルタイムに株価の情報をExcelにスプレッドシートに反映します。

ただ、リアルタイムとは人間が見るとだいたいそう見える程度の意味で高速取引などはできません(それでも人間がトレードツールを操作するよりは速いと思いますが)。

ExcelのRSSを使ったサービスには岡三RSSも含め以下のようなものがあります。

証券会社 サービス 対応商品
岡三オンライン証券岡三RSS 日本株
RSS 366 FX FX
RSS 365 CFD CFD
楽天証券MARKET SPEED Ⅱ RSS 日本株
アメリカ株
先物
海外先物
オプション

料金と無料条件

岡三RSSの利用料金は基本的には5,093円/35日です。

ただ、前月の21日〜当月20日の取引手数料が2,000円(税込)以上なら当月25日に35日分の利用料無料日数が付与されます。

そのため、1ヶ月の取引手数料が2,000円以上であれば実質無料で使えます(Excelで自動売買をやろうというのに2,000円未満の取引手数料という人はあまりいないのではないでしょうか)。

ちなみに現物株式の取引手数料(定額プラン)は以下のようになっています。

1日の約定代金合計 取引手数料上限
100万円以下 0円
200万円以下 1,430円
300万円以下 1,950円
400万円以下 2,530円
500万円以下 3,080円
100万円増加ごとに 550円増加

Excelのスキルで売買ロジックを作成・変更できる

個人で自動売買の開発ができるプラットフォームとしてはRSSの他にMT4やkabuステーションAPIがあります。

しかし、MT4もkabuステーションAPIも自動売買するには「プログラミング」が必要です(MT4はプログラミングせずに取引ツールとしてのみ使うこともできますが)。

岡三RSSによる自動売買はVBAで開発することもできますが、Excelのスキルだけでも売買ロジックを作成、変更できるのが大きなメリットです。

ただ、ちょっとしたコツは必要です。

例えば日本株の発注はNEWORDER_CL関数でできます。

=NEWORDER_CL("銘柄コード" , "市場コード" , 売買区分 , 執行条件 , 単価 , 数量 , "期間指定" , 期間 , 預り区分 , 完了メッセージ , "注文画面" , "パスワード" , "発注ID" , 発注条件(逆指値指定時) , 発注単価(逆指値指定時) , 注文確認 , "注意画面" )

NEWORDER_CLのような発注系関数で重要なのが「発注ID」です。

A1セルがTRUEになったら発注する場合、以下のように記述します。

=IF(A1,NEWORDER_CL(……,"発注ID",……))

ExcelはA1セルがFALSEからTRUEに変わった後、1度だけでなく何度もNEWORDER_CL関数を呼び出します(NEWORDER_CLでなくユーザー定義関数でも同様です)。

そのExcelの挙動のために何度も発注が実行されると困ったことになるため、NEWORDER_CLは発注IDを記憶していて複数回呼び出されても過去に使われた発注IDが指定されていれば何もしません。

一旦、Excelを終了して再起動すれば発注IDの記憶はクリアされます。

そのため、発注IDとして何を指定するかがVBAなしで自動売買するキーとなります。

もちろん、VBAからNEWORDER_CL関数を呼び出すこともできるのですが、それでは売買ロジックを変更するたびにプログラム修正が必要になり、RSSのメリットを活かせません。

CSV処理用のユーザー定義関数

株式の保有情報はPOSITION関数でExcelシートに表示させます。

=POSITION( "フィルタリング 1" , "フィルタリング 2" , "日本株保有情報" , 表示先 )

保有情報を見るだけであれば以下の使い方でも問題ありません。

A B C D
1 =POSITION(“”,”0″,”銘柄コード”,A2) =POSITION(“”,”0″,”銘柄名”,B2) =POSITION(“”,”0″,”取得単価”,C2) =POSITION(“”,”0″,”現在値”,D2)
2 1366 iF225Wベア ¥771 ¥612
3 1469 400ベア2倍 ¥1,582 ¥1,149

しかし、「現在値が取得単価の105%以上なら売り注文を出す」を以下のように記述すると誤った注文が出る場合があります

A B C D E F
1 =POSITION(“”,”0″,”銘柄コード”,A2) =POSITION(“”,”0″,”銘柄名”,B2) =POSITION(“”,”0″,”取得単価”,C2) =POSITION(“”,”0″,”現在値”,D2) 発注判定 発注
2 1366 iF225Wベア ¥771 ¥612 =C2*1.05<=D2 =IF(E2,=NEWORDER_CL(……))
3 1469 400ベア2倍 ¥1,582 ¥1,149 =C3*1.05<=D3 =IF(E3,=NEWORDER_CL(……))

上図の2行目以降は株式の保有状況によって変化しますが、異なる銘柄の情報が同じ行に並ぶタイミングがあるためです。

一瞬なので人間が見るだけなら問題にならないのですが、上図のE列が誤った情報でTRUEになるとF列で発注されてしまいます。

この問題に対応するためには以下のように記述します。

A B C D E F G
1 =POSITION(“”,”0″,”CSV”,A2) 銘柄コード 銘柄名 取得単価 現在値 発注判定 発注
2 1366,iF225Wベア,…… =CSV_String(A2,0) =CSV_String(A2,1) =CSV_Currency(A2,14) =CSV_Currency(A2,3) =D2*1.05<=E2 =IF(E2,=NEWORDER_CL(……))
3 1469,400ベア2倍,…… =CSV_String(A3,0) =CSV_String(A3,1) =CSV_Currency(A3,14) =CSV_Currency(A3,3) =D3*1.05<=E3 =IF(E3,=NEWORDER_CL(……))

上図A1セルのようにPOSITION関数に”CSV”を渡すとA2セル以下に

1366,iF225Wベア,東証,604,624,-20,-3.21%,現物,387,0,387,,387,771,771,298377,233748,-64629,-21.66%,特定預り,,,,

のような複数の株式保有情報をCSV(カンマで区切られた複数の値)にした文字列が表示されます。

このCSVを以下のようなユーザー定義関数で処理してシートに表示します。

Private Function CSV_String(csv As String, index As Integer)
    CSV_String = CVErr(xlErrNA)
    If csv = "" Or csv = "***END***" Then
        Exit Function
    End If
    Dim 配列 As Variant
    配列 = Split(csv, ",")
    CSV_String = 配列(index)
End Function

Private Function CSV_Long(csv As String, index As Integer)
    CSV_Long = CVErr(xlErrNA)
    If csv = "" Or csv = "***END***" Then
        Exit Function
    End If
    
    Dim 配列 As Variant
    配列 = Split(csv, ",")
    
    Dim l As Long
    l = 配列(index)
    
    CSV_Long = l
End Function

Private Function CSV_Currency(csv, index As Integer)
    CSV_Currency = CVErr(xlErrNA)
    If IsError(csv) Then
        Exit Function
    End If

    If csv = "" Or csv = "***END***" Then
        Exit Function
    End If
    
    Dim 配列 As Variant
    配列 = Split(csv, ",")
    
    Dim c As Currency
    c = 配列(index)
    
    CSV_Currency = c
End Function

コメント

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