ソフトウェア投資

【VBA知識不要!】Excel(エクセル)を使い楽天RSSで日本株を自動売買で発注する方法②

ソフトウェア
この記事は約16分で読めます。
記事内に広告が含まれています。
かけだしシステムトレーダー君
かけだしシステムトレーダー君

とりあえず、楽天RSSの発注関数については理解したけど返済(利確)注文は

どう出せばいいのかな?

Kotack<br>(ZACK IT編集)
Kotack
(ZACK IT編集)

楽天RSSにはもちろん返済用の関数も用意されているので今回は

その関数について解説していくよ。

前回から解説している楽天証券が提供している無料機能の「楽天RSS」についてだが今回は返済注文の発注方法についてだ。

この記事を最後まで読めば、

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

ここまでマスターできれば簡単なシステムトレード(自動売買)のプログラムは構築可能だろう。次回以降は既に発注した注文の訂正方法や、おまけ編ではMACDやRSIといったインジケータをトリガーに新規発注や返済を出すコーナーをお届けする予定なのでお楽しみに。

スポンサーリンク

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

※以下で説明している方法にて発注した株で、いかなる利益/損失が発生しても当サイトは一切責任を負わないものとする。あくまで楽天RSSの機能である発注関数を使用した注文方法の説明しているにすぎず、万一含み損や確定損失が出ても責任を負いかねる点に注意してほしい。※

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

エクセルのVBAを使わずシート関数のみで自動売買を実現することがこのシリーズの目標だが、当然ながら新規注文を出したら返済注文も出せるようにならないとシステムトレード(自動売買)として成立しない。

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

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

発注や約定履歴で活用する便利な関数が、RssOrderList関数

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

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

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

=RssOrderList()

と、このように引数無しで設定されているすべての履歴を参照することができる。

※横と縦どちらにも大きくセルを占有されてしまうので新規シートで一度試すことを強く勧める。はみ出たセルに既に値が入っていた場合警告なく消えてしまう事となる。

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

いまいち分かりづらいと感じた方は下の画像を参照してほしい。

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

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

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

※例)”注文番号”や”通常注文状況”等

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

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

  1. Excel上部にあるリボンのメニューを確認
  2. マーケットスピードⅡタブをみる
  3. 注文約定メニュー

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

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

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

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

それがRssMarginPositionList関数

新規発注をした瞬間に即座に返済注文を出したいだけであれば注文照会で約定フラグが付いた瞬間返済注文でもいいが、通常であれば評価額とか損益率とか確認したうえで返済をするのが通例だろう。

そこで必要不可欠になってくるのがRssMarginPositionList関数。

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

今回ヘッダー行はO3:W3を指定。

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

画像のような書式(罫線や色など)は見やすいように当サイトで加工。

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

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

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

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

例えば下記のような建玉一覧があったとして、AJ4セルに返済発注関数を入力する。

これも新規発注関数と同様引数が多いため頑張ってついてきてほしい。

発注ID:前回記事参照

URL添付

追加で注意点上げるのであれば発注IDは必ず”値”で入力すること。

楽天RSSを使おうとするほどのExel玄人であれば言うまでもないと思うが、見た目数字でも”数値”ではなく”文字列”だという場面は偶にあることだろう。その点には十分注意してほしい。

参照元の値が数値かどうか不明な場合はVALUE関数を使ってあげれば心配ないだろう。

VALUE("参照セル")

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

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

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

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

これもセル参照での引数指定が可能。上の画像のように信用建玉リストをRssMarginPositionList関数で銘柄CDを取得して参照すれば問題ないだろう。

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

注文区分:前回記事参照

SOR区分:前回記事参照

信用区分:前回記事参照

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

注文数量:返済したい分

今回のケースではETFで10株建てているため、建てている分全てを返済する。

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

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

執行条件:前回記事参照

注文期限:前回記事参照

口座区分:前回記事参照

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

RssMarginPositionList関数で表示可能な建日を参照するといい。(YYYYMMDD形式)

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

こちらもRssMarginPositionList関数で取得できるのでそのセル参照でOK。

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

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

ザラ場中のトレードの場合SOR注文を有効にしているとJNXやChi-Xで約定するケースもあるため、RssMarginPositionListで建市場を取得して参照しよう。

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

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

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

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

検証で使用しているExcelバージョンが2016のためIFS関数を使用していないが、IFS関数を使用できるバージョンであれば当然IFS関数で書いた方がすっきりする為あくまで上記の数式は参考程度にとどめてほしい。この数式により、東証だったら1、JNXだったら4、Chi Xだったら6といった具合にコードに変換が可能。

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

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

逆指値価格:前回記事参照

まとめると…

ここまで説明してきた引数の指定方法を活用して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関数が必要になりますので注意。

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

訂正注文を出す手順

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

おわりに

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

  1. 自身の発注した注文状況をRssOrderList関数で確認
  2. 建玉管理(評価損益・株数等)をRssMarginPositionList関数を通して確認
  3. 自身のポジションをRssMarginCloseOrder関数を使用して返済発注

以上の知識を身に付けることができた。

次回は今回の記事で長くなりすぎたため省略した訂正注文に関しての解説記事を紹介する予定だ。

RSIやMACD等メジャーなテクニカル指標を表示させてテクニカルシステムトレードプログラムを構築する方法も記事にする予定なのでぜひX/Twitterもしくは当ブログをブックマークしてお付き合いいただきたい。

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