本サイトはアフィリエイト広告を利用しています

【VBA知識不要!】楽天RSSで日本株を自動売買で発注する方法②

※ 本サイトにはアフィリエイト広告を利用しています

こんにちは、楽天証券大好き城寝子(@nyaw_loading_22)です。

 

今回も楽天RSSの記事です。

 

楽天RSSを既に入れていて、まだ自動売買までこぎつけていない方はこの記事を最後まで読むことがおすすめです。

 

前回の記事では、

楽天RSS(Microsoft Excel必須)でできること

楽天RSSを使って日本の個別株/ETFを新規発注する

 

を紹介してきました。

 

今回の記事では、

・新規発注した株が約定した後、その銘柄の返済注文を出す

 

続編では、

・既に返済注文が既に執行中(未約定)の状態で訂正注文を出す

 

また、個別銘柄のローソク足データに移動平均MACD、RSIの計算式を入力したセルを追加し、買い/売りサインを立てて発注トリガーを可変にする方法を説明する予定です。

 

↓↓是非Xアカウントもフォローくださいませ♪↓↓

城寝子@NYAW LOADING (@nyaw_loading_22) / X

 

↓↓前回記事↓↓

nyaw-loading.hatenablog.com

 

建玉の返済注文を出す手順

※以下で説明している方法にて発注した株で、いかなる利益/損失が発生しても当方は一切責任を負いません。あくまで楽天RSSの機能である発注関数を使用した注文方法の説明しているにすぎませんのでもし含み損や確定損失が出ても責任を負いかねます。また、誤発注に関する注意も喚起してますので万が一誤発注が発生した場合も同様にこちらは責任を負いません。※

さて、前回のおさらいですが前回は4桁の銘柄CDと最低限必要な引数を使って信用新規注文の出し方をご紹介しました。

 

エクセルのVBAを使わずシート関数のみで自動売買を実現することがこのシリーズの目標ですが、当然ながら新規注文を出したら返済注文も出せるようにならないといけません。(VBA使ったとしてももちろん返済は必要ですが)

 

まず返済注文を出す前に、新規注文出したものが約定しているかExcel上で確認が必要ですね。

 

該当銘柄の注文状況を確認する(RssOrderList関数)

ここで使う便利な関数が、RssOrderList関数です。

マーケットスピードⅡでいうところの「注文照会」メニューで得られる情報を取得できます。

 

この関数については”注文番号”を取得できるため今後説明する訂正注文に関してもほぼ必須の関数となっています

 

この関数引数が一見多いですが面倒であれば、

 

”=RssOrderList()”

 

上記の関数を任意のセルに入力してEnterキー推せば注文照会機能がフルで表示されます。

※横と縦どちらにも大きくセルを占有されてしまうので新規シートとかで試してください。はみ出たセルに既に値が入っていた場合警告なく消えます。そうなっても責任取れませんのであしからず

ただあまり使わない情報も多いです。その場合は例えば下記のように取得したい情報のみの見出し行部分を先に作っておき、RssOrderListの引数であるヘッダー行のところの参照範囲で指定してあげます。

 

分かりづらいと思うので下記の画像参照ください。

 

上記の画像ではA2セルに下記の関数を入力しています。

 

”=RssOrderList($A$3:$K$3, 0, 2, , "A", 0, 0, 0, 0, 0)”

 

赤文字の部分がヘッダー行として指定した範囲です。A3からK3がヘッダー行ですよとユーザー側が指定してあげている訳ですね。そしてA3からK3までに取得したい情報のヘッダーを予めこちらで入力しています。(”注文番号”とか”通常注文状況”とか)

 

この機能で新規発注した自身の注文がエラーなく出されているか、約定しているかを確認することができます。例えば300株発注したものの100株のみ約定であれば通常注文状況に「一部約定」と表示されます。

 

ヘッダー行に何を指定できるのかわからない場合は、

 

Excel上部にあるリボン

→マーケットスピードⅡタブ

→注文約定メニュー

 

以上の順にみていくとプルダウンメニューの中から、RssOrderListを選択した状態で取得項目に表示されている部分が取得可能な項目です。そしてこれがヘッダー部分に来るわけです。

なのでセルに直接関数を入力する方法で説明していますが、慣れていない方はこのメニューから任意のセル(上記画像の表示開始セル)を選択して関数結果を返すことも可能です。

 

nyaw-loading.hatenablog.com

 

ポジション(信用建玉)を確認する(RssMarginPositionList関数)

返済注文を出すうえで注文照会と同じくらいよく使用する関数があります。

それは信用建玉の確認できる関数です。

 

新規発注をして秒で返済注文出したいだけであれば注文照会で約定フラグが付いた瞬間返済注文でもいいですが、通常であれば評価額とか損益率とか確認したいですよね?

 

そこで使うのがRssMarginPositionList関数です。

こちらも引数指定なしで全項目呼び出せますので空きのある新規シートなどでまずはお試しください。勿論不要な項目を非表示にしたい場合は先述の注文約定メニューから必要な項目だけ抜き出してヘッダー行として指定してあげてください。

 

今回ヘッダー行はO3:W3を指定しています。

”=RssMarginPositionList(O3:W3,”銘柄CD(全銘柄の場合は省略)”, "A", 0, 0, 0)”

画像のような書式は見やすいように自前でつけてます。

 

返済注文を発注する(RssMarginCloseOrder関数)

さて最低限必要な注文照会、信用建玉の情報取得の方法について説明してきました。

ここでようやく返済注文についてです。

 

信用返済はRssMarginCloseOrder関数を使います。

 

例えばこんな建玉一覧があったとして、AJ4セルに返済発注関数を入力します。

 

これも引数多いんで大変です。

 

発注ID:前回記事参照

nyaw-loading.hatenablog.com

追加で注意点上げるのであれば発注IDは必ず”値”で入力してください

楽天RSSを使おうとするほどのExel玄人さんであれば言うまでもないと思いますが、見た目数字でも”値”ではなく”文字列”だという場面は偶にありますよね

 

どっかのセル/シート/ブックから見た目数値っぽい形式のデータ引用してくるスタイルにしている場合注意が必要で運が悪ければ取引チャンス到来の時に発注エラーになります。なので参照元が数値として認識されているか不安であればVALUE関数を使ってあげれば心配ないでしょう。

 

VALUE(”参照セル”)” 

勿論参照元が値であることが確実なら一々VALUE関数を使う必要はないです。

 

発注トリガー:前回記事参照

説明もう不要でしょう。別のセルに0か1か表示させそれを参照すれば問題ないです。

今回のケースではAI4セルで操作します。

 

銘柄コード:任意の銘柄CD

これもセル参照で行けます。画像のように信用建玉リストをRssMarginPositionList関数で銘柄CDを取得して参照すれば問題ないでしょう。

 

売買区分:買建の売埋であれば1、売建の買埋であれば3

 

注文区分:前回記事参照

 

SOR区分:前回記事参照

 

信用区分:前回記事参照

返済なので信用新規建てした際の区分を入力。例えば一日信用で建てているのであれば4を指定します。

 

注文数量:返済したい分

今回のケースでは10株建てている分全て返済します。

 

価格区分:成行で決済なら0、指値なら1

 

注文価格:成行なら省略、指値なら入力

 

執行条件:前回記事参照

 

注文期限:前回記事参照

 

口座区分:前回記事参照

 

建日:いつ建てたか。一日信用だったら当日

RssMarginPositionList関数の建日参照(YYYYMMDD形式)

 

建単価:いくらで信用建てしたか

RssMarginPositionList関数で取得できるのでそのセル参照でOK

 

建市場:1/東証、4/JNX、6/Chi-X

寄付で買うスタイルなら東証でしか約定しないはずなので1固定でいいと思います。

そうでなくザラ場ならRssMarginPositionListで建市場を取得できると思うのでそちらのセル参照でOK。

 

ただし取得できるのは「東証」や「JNX」という文字列情報しか取得できないのですが、引数として使用するのは1/東証、4/JNX、6/Chi-Xといった市場コードです。

そのため下記のような関数で注文関数用に変換する必要があります。

 

参照セルはどこのセルにRssMarginPositionList関数で建市場の情報を取得しているかで変わりますのでご注意を

 

”=IF(参照セル="東証",1,IF(参照セル="JNX",4,IF(参照セル="Chi x",6,"")))”

 

これで、東証だったら1、JNXだったら4、Chi Xだったら6といった具合にコードに変換できます。

 

上記は勿論IFS関数を使えるExcelバージョンをお使いの方はIF関数を入れ子にする必要は無いと思うのでアレンジしてください。古いVer.のエクセルでももっとスマートな書き方あるよ等情報あればアドバイスください!

 

指値条件価格:前回記事参照

 

指値条件区分:前回記事参照

 

指値価格:前回記事参照

 

以上の説明で新規返済注文が発注できるようになります。

ここまで説明してきた引数の指定方法を活用してRssMarginCloseOrder関数を入力すれば(画像:AJ4セル)、画像のような感じでトリガーが0であれば待機中と表示されるはず。

 

画像の例ではTOPIXの2倍ブルETFを最低単元である10株持っていて利益が乗ったので成行で返済注文を発注したい場合の一例。

 

ポイントとしては、銘柄CDや注文数量、建単価、建日は全てRssMarginPositionList関数で取得した情報をそのまま参照しているという点が1点目。勿論全決済ではなく一部株数のみ返済したい場合は注文数量に関して他の方法を考える必要があります。

 

2点目は建市場に関してはRssMarginPositionList関数で取得できます(画像:AB列)が、発注関数に対応した市場コードに変換する必要があるためAH列に先ほど紹介したIF関数で市場コードを返す数式を追加してそれを参照する形。

 

参照セルに関しては当然私の環境下での参照ですのでご自身の環境にあった指定をし直す必要がありますが関数全体としては下記のような感じになります。指定が必須ではない引数(逆指値とか)がある場合は下記のようにカンマのみ入力。

 

”=RssMarginCloseOrder(2,AI4,VALUE(W4),1,0,1,4,Z4,0,,1,,0,AC4,AA4,AH4,,,,)”

 

既に建玉に対して返済注文を出している状態でRssMarginCloseOrder関数を使用するとエラーになります。

 

その場合は次回紹介する訂正注文関数であるRssModifyOrder関数が必要になりますので注意。

 

↓↓スプレッドシートで株価管理したい人におすすめ記事↓↓

nyaw-loading.hatenablog.com

 

訂正注文を出す手順

執筆中(別記事に掲載予定)

 

まとめ

大体まとめると、今回の記事を読むことで

 

①自身の発注した注文状況をRssOrderList関数で確認

建玉管理(評価損益・株数等)をRssMarginPositionList関数を通して確認

③自身のポジションをRssMarginCloseOrder関数を使用して返済発注

 

以上の知識が身に付きます。

 

次回は今回の記事で長くなりすぎたため省略した訂正注文に関して紹介します。

 

RSIやMACD等メジャーなテクニカル指標を表示させる方法も記事にする予定ですので興味ある方は最後までお付き合いください!

 

ありがとうございました!