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

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

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

こんにちは、最近楽天RSSを活用した日本株の自動売買にハマっている城寝子(@nyaw_loading_22)です。

 

2023年8月頃からテスト運用を開始して、約2か月。

何とかプラス運用できているためそろそろ株数増やしてトライしていこうかと思っている日々です。

 

マーケットスピードⅡとExcelを開いておくだけで日本株で月2~3万の利ざやを出せるとしたら結構割のいいトレードですよね?(開発にかかった時間を見ない振りしながら

 

この記事では、

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

楽天RSSを使って日本(東証上場)の個別株を新規発注する

 

続編では、

楽天RSS(Microsoft Excel必須)を使って株の返済発注する

④売買判定条件を作り発注トリガーを自動で変更する(自動売買への一歩)

 

他にも思いついたこと(RSSを使う上で便利なExcelの機能等々)をシリーズ化し、最終的にはVBAに関して簡単に実装できてかつ便利なもの等皆様にお届けできればと思っています。

 

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

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

楽天RSSでできること

簡単に言うと楽天証券が提供しているExcelのアドイン機能であり、できることとしてはExcelシート上での株価リアルタイム更新の他、信用倍率決算日情報などの投資指標などは大方表示でき、なおかつ複数銘柄にわたってリアルタイム監視できる機能(銘柄上限数あり)です。

 

もうRSS入れてる人向けに説明してますが、もしまだの人はこちらの楽天証券のページから確認するか、楽天RSSでググってください。利用は無料ですが口座があってもRSS利用規約に同意してないと使えなかったと思います。

https://marketspeed.jp/ms2_rss/

 

勿論PERPBR、テクニカルでいえば移動平均なども標準で表示できるため非常に利便性は高い一方、それだけ見れば別にマーケットスピード2でよくね?という機能ばかりです。(ちなみに標準機能としてはありませんが当然Excelなので計算してできることは大体何でもできます。RSIとかMACDとかレジサポラインとか)

 

しかし楽天RSSで最も大きいメリットは自動売買Excel上で実現できることです。楽天RSSには発注関数が実装されていますのでそれを利用することで、買い/売りサインが出た場合に新規/返済注文を出すことが可能になっています。

 

自動売買と聞くとAPIキーを発行している証券会社などでPythonを使ってプログラミングするイメージを持たれるかもしれませんがExcel上でできると聞いたら少しハードルが下がった気がしますよね?

 

~まず必ず必要なもの~

・パソコン(推奨環境→https://marketspeed.jp/ms2_rss/)

Microsoft Excel

楽天証券の口座

Excel関数の知識(一通り。VBA使わない代わりに配列数式やマイナーな関数を色々使います)

 

あとは株を買えるだけの資金を用意したら次へGo!

 

VBAなしで日本株を新規発注する方法

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

 

次回記事

nyaw-loading.hatenablog.com

多くの人はExcelで自動売買できるといってもどうせVBA使わないといけないんでしょ?と思っていることでしょう。

 

確かにVBAの知識があったほうが色々できる幅も広がりますし、便利なのですが...このシリーズでは徹底的にVBAの知識を排除した方法で自動売買を実現するところまでご説明します。(今回は手動発注まで)

 

まず前提として自分自身信用口座で自動売買をしているため全て信用口座前提での発注条件で説明します。もし需要があれば現物注文での関数で説明した記事を出すかもしれません。使う発注関数と若干引数が異なるだけで、考え方はほぼ同じです。

 

次に発注関数ですが...Excelのシート関数、VBA関数ともに用意されてます。

今回はシート関数を使うことでVBA知識を一旦不要としています。

 

以降から新規発注できるまでの細かい手順を説明していきます。

 

発注関数の内容を理解する(基礎中の基礎)

まず自動売買云々抜きにして、発注関数の中身を理解しておくことが大事です。

 

正直発注関数は引数(システム側に渡さなければいけない情報)が多すぎて初見で嫌になること間違いなしですが頑張りましょう。

 

例えば下記の画像のようなシートがあったとして、M2セルに発注関数を入力するとします。A2に入力されている銘柄CD:7912の大日本印刷(あくまで発注関数の説明のための一例であり買い推奨銘柄ではない)を発注したいという訳ですね。

そうするとまず信用新規で買建する前提で使う関数はRssMarginOpenOrder関数です。

必要な引数だけ羅列しても訳わかめだと思うので例示も併せてします。

・発注ID:1~ 

一意の値である必要があります。つまり1を一度使ったらエクセルを一度再起動するまでは二度と使えません。なので2、3、4と加算していくか完全ランダムに作っていくかいくつか方法はあります。

桁の上限数なのですが、マニュアル見落としあったらすみませんが分かりませんでした。しかし8か9桁までは使えたことを報告しておきます。(間違いあったらご指摘ください)

後々登場しますが発注IDと注文番号は異なるのでご注意ください。(注文番号は訂正注文時必要になります...なんで発注IDと一緒じゃねぇんだよ...)

 

なおRANDBETWEEN関数は使えません。確かにこの関数を使えば膨大なパターンの乱数を生成できるため一見よさそうに見えます。が、使ったら壊れたスロットのように永遠に数字が変わり続け最後にはフリーズしました。RSSの更新間隔との相性と思われます。またごくわずかな確率だと思いますが、たまたま重複する乱数にあたるとか?6とか7桁で重複する数字出すまでに何回回せばいいのか確率的にわかりませんがw(→数学ダメな人

 

とにかく、RSSの内部的に更新間隔(1秒?)ごとにシートを更新しているので、RANDBETWEENで生成されたランダム整数もまた更新されてしまい、無限ループしてしまっている様子。最悪応答なくなって強制終了しか手段なくなるのでやらないことをお勧めします。

 

もしこのあたりまで読んで楽天RSSまだよくわからないという方でも焦らなくて大丈夫です!

 

楽天証券では投資信託のクレジットカードつみたてをすることができ、そのクレカ設定には楽天カードが定番です。

 

楽天RSSExcel自動売買の構築についてゆっくり学びながらも、クレジットカード積立で投資信託をつみたてて楽天ポイントをお得にためながら資産形成していくことも会社員投資家にはおすすめです。

 

新規入会とカード利用の特典でポイントが進呈されるキャンペーンを実施しているほか、投資信託のつみたて設定額に応じて毎月ポイントが還元されます。

(年会費永年無料)

 

楽天RSSを使った投資戦略のヒント

nyaw-loading.hatenablog.com

 

発注トリガー:0または1(セル参照でイけます)

これは簡単です。0は待機(注文されない状態)、1は注文したら飛ぶ状態(誤発注注意!)

察しがいい方はお気づきかと思いますが、ここが1に変われば勝手に発注されるので、判定条件を作り0から1に値が変わるよう関数を書いておけば自動で発注がされます。返済注文もあらかじめ関数と条件を作っておけば自動売買成立となるわけです。

 

※トリガーが1になっている間は際限なく注文が飛び続けます。つまり発注IDさえ被っていなければ、重複発注も十分あり得るということ。最初の頃100株注文するつもりが1000株分くらい重複で飛んでいたらしく死にかけました。絶対誤発注せぬようご注意ください。

あくまで参考アイデアとしてですが、注文照会(RssOrderList関数)を活用して、該当銘柄の返済注文が注文照会に載った場合はトリガーを0に戻すなど対策すればいいかと思います。あるいは発注が正常に飛んだことを確認できるまで発注IDを変更しなければ少なくとも重複注文が飛んで資金いっぱいまで買われることはありません。

 

銘柄コード:7912(今回の例では大日本印刷のため)

特に説明不要かと思います。もちろんセル参照で行けるため上の画像で説明するとA2選択でOKです。

 

売買区分:1/売・3/買

買建オンリーの人は3しか使わないと思います。自分もそうです。

売建に自信ある方は1も使われるといいでしょう。(ここでいう売買はあくまで新規注文です。返済注文とは別です)

 

注文区分:0/通常注文、1/逆指値付き通常注文、2/逆指値注文

お好きなものを選んでください。自分は新規発注では0/通常注文しか使いません。

 

SOR区分:0/通常注文、1/SOR注文

詳しく覚えていませんが、1のSORは東証の他JNXやChi-Xなど、自分の注文に対して有利な条件価格があればそっちで約定させてあげますよという内容だったかと。自分はとりあえず1/SOR注文。

 

信用区分:1/制度信用、2/一般信用(無期限)、3/一般信用(14日)、4/一般信用(一日)

自分はデイなので4/一般信用(一日)使ってます。その場合は必ず大引までに返済するようにしましょう。

 

注文数量:100~

まあ最初は資金沢山あってもテスト運用で100でいいと思います。

 

価格区分:0/成行、1/指値

これは例とかないので手法やタイミングに合わせて使ってください。

 

注文価格:指値の場合は入力(成行の場合は省略可)

1/指値の際は呼値に注意。例えば1ティック5円なのに10,001円で発注してもエラーで発注飛びません。その場合は10,005円や10,000円で発注しなければいけない。呼値って何の人はまずそれ調べてきてください。

 

執行条件:大体の場合は1/本日中。場合によっては6/大引不成とか使うかも?

指値で期間指定したい場合は、5/期間指定を選んでください。

 

注文期限:執行条件で5/期間指定を選んだ場合は入力(それ以外は省略可)

期間指定の書式はYYYYMMDDです。

今日(2023/9/23)から1か月後とかにしたいんだったら下記みたいな感じで指定できます。MONTH(NOW())+1にすれば9月+1で10になるって感じですね。

 

”TEXT(YEAR(NOW()),"0000")&TEXT(MONTH(NOW())+1,"00")&TEXT(DAY(NOW()),"00")”

 

ただ期間指定をしたことないですが、祝日や土日などってどうなるんだろう避けなきゃってなると色々面倒ですね。

祝日シート作って、WORKDAY関数でいけるかな?

 

口座区分:0/特定、1/一般

大体の場合は0/特定ではないでしょうか。

 

指値条件価格:逆指値付き注文にした場合は条件価格を入力(それ以外は省略可)

新規注文で逆指値あまり使ったことないのでわかりませんが、とりあえず指値で待ち構えておくけど、節目の価格をブレイクして上がってしまう場合乗り遅れるので成行にしたいとかですかね。

 

その場合「10,000円」以上になったら成行発注するのであれば10,000を引数にすればOKです。

 

呼値に注意。例えば1ティック5円なのに10,001円で発注してもエラーで発注飛びません。その場合は10,005円や10,000円で発注しなければいけない。呼値って何の人はまずそれ調べ(ry

 

指値条件区分:1/以上、2/以下

例えば10,000以上になったら成行発注するといった逆指値トリガーを予約したい場合、逆指値条件価格に10,000と入力し、逆指値条件区分1/以上を選択します。

 

指値価格区分:0/成行、1/指値

指値はそもそも新規ではなく返済で使うことが自分は多いですが使うのであれば十中八九逆指値使う場合は0/成行を使うのではないでしょうか。

例を挙げると10,000以上になったら成行発注するといった感じです。

 

指値価格:逆指値価格区分が指値の場合は指値を入力(成行の場合は省略可)

呼値に注意。例えば1ティック5円なのに10,001円で発注してもエラーで発注飛びません。その場合は10,005円や10,000円で発注しなければいけない。呼値って何の人はま(ry

 

セット注文区分:0/通常(予約しない)、1/セット注文(予約する)

例えばこの関数の前半で指定している銘柄の新規買い建て注文が約定したとします。するとすぐさまそれの利確のための予約注文がされるわけです。便利ですが使い時は限られるかも。また、一日信用を使っている場合は大引不成もしくは不成を選択しないとエラーになりますので注意。

 

セット注文価格区分:セット注文ありの場合、1/指値、2/値幅指定(セット注文しない場合は省略可)

意外と値幅指定が便利かも。10円利益のったら利確したい的な。勿論株価の利幅です。1,000円の株が1,010円で売りたいなら利幅は10円で指定してください。

1/指値の場合は呼値に注意。例えば1ティック5円なのに10,001円で発注してもエラーで発注飛びません。その場合は10,005円や10,000円で発注しなければいけない。呼値っt(ry

 

セット注文価格:セット注文価格区分1/指値選択した場合は指定

1/指値の場合は呼値に注(ry

 

セット注文執行条件:通常注文の執行条件と同じなのでそちら参照

 

セット注文期限:通常注文の注文期限と同じなのでそちら参照

 

ど、どうだったでしょうか。だいぶ条件定義が長いですよね。

全てまとめるとM2セルにはこんな感じになります。今回省略可のところは”,(カンマ)”だけにしてます。

”=RssMarginOpenOrder(1,0,A2,3,0,1,4,100,0,,1,,0,,,,,0,,,,)”

M2セルの末尾に”=>待機中”と表示されていれば成功です。発注トリガーが1になって建余力がある場合はもう後は勝手に発注してザラ場であればキャンセルできず約定しますので(成行なら)ご注意を。

 

よくある注意点

まだ発注するうえでいくつか見落としがちな注意点があります。

ExcelのマーケットスピードⅡのタブにて、発注不可の状態になっている場合は発注トリガーが1の状態でも発注されません。せっかくいい自動売買ロジックができたから寄付から試すぞー!って思って中々発注されないからなんでだろうと思ってよく見たら発注ロックがかかっていた状態だと悲しいですよね

 

同じくExcelのマーケットスピードⅡのタブにて、各種設定の中にあるRSSの設定ですが、おそらく初期設定は発注上限金額が0円だったと思います。これも変更してあげないといつまでも発注されませんのでご注意ください。

 

こちらはマーケットスピードⅡの環境設定にある、注文・約定2の画面です。

この二つにチェックを入れて右に隠れてしまっていますが、取引暗証番号をあらかじめ入力して適用しておいてください。(一体何か所に発注制限メニュー散らせば気が済むんだよ...)

 

おわりに

さて、いかがだったでしょうか?

今回は楽天RSSを活用して自動売買を実現するために必要不可欠なまずは新規発注を手動で行うというところまで説明させていただきました。

 

言ってしまえば自動で売買を行うことは今日学んだことの応用なのでここがまだ少しよくわからないよという方はぜひX(旧Twitter)の私のアカウントへブログ読んだ旨伝えて質問してもらえればわかる範囲で答えます。(ログイン頻度毎日じゃないので回答遅くてもご了承くださいませ。またわからないことはわからないためそこも合わせてお願いします)

 

次回は返済注文の関数について説明します。

 

それでは次回もよろしくお願いします(@^^)/~~~

 

次回記事→

nyaw-loading.hatenablog.com