書き起こし
株の自動売買はさすがにVBAを使用しないとできないだろうと思っていましたが、
VBAなしで簡単に自動売買を行うことができましたのでご紹介したいと思います。
ただし、python,、エクセル、楽天証券のマーケットスピードⅡは使用します。
楽天のサンプルシートを開いて、マーケットスピードⅡに接続します。
pythonのエクセルを操作できるモジュールをimportします。
必要な入力欄にpythonでゴリゴリ書いて、入力していきます。
エクセルを操作するモジュールの代表例は「openpyxl」「xlwings」「win32com」でしょうか。
「openpyxl」はエクセルが閉じられていないとエクセルに入力したりすることができなかったと思います。
エクセルを開いて、マーケットスピードⅡに接続した状態でないと自動売買はできないので、「openpyxl」は役に立ちません。
「xlwings」でも自動売買できると思いますが、今回は「win32com」を使用します。
プログラムの簡単な説明をします。
エクセルに入力したい番地を調べておきます。
エクセル.rangeで入力したいエクセルの番地を入力.value =注文したい銘柄コードや注文数量を記述します。
注文に必要な箇所をpythonで入力させても、本当に株を注文しますかとうようなポップアップされます。
「執行」するために、pyautoguiを使用して、ポップアップをクリックして、ポップアップをアクティブにしてから、「enter」を押して自動売買ができるようにプログラムを書いています。
最後に自動売買の様子を御覧ください。
コード
import time
import win32com.client
xl = win32com.client.GetObject(Class="Excel.Application")
import pyautogui
xl.Range("J9").Value = 3113 #J9銘柄コード
order = 15
order = order + 1
xl.Range("L13").Value = order #L13 発注ID
xl.Range("L14").Value = 1 #L14 発注トリガー
xl.Range("L19").Value = 0 #L19 現物注文
xl.Range("L20").Value = 3 #L20 買い注文
xl.Range("L21").Value = 0 #L21 通常注文
xl.Range("L22").Value = 0 #L21 通常注文
xl.Range("L24").Value = 100 #L22 注文数量
xl.Range("L25").Value = 1 #L25 指値注文
#データベースの終値を取得する 50万円分ぐらい注文したいなら、500000/74=6756.75 切り捨てを行って注文数量
xl.Range("L26").Value = 74 #L26 注文価格
xl.Range("L27").Value = 1 #L27執行条件 本日中
xl.Range("L29").Value = 0 #L29 口座区分
xl.Range("L27").Value = 1 #L27執行条件 本日中
time.sleep(2)
pyautogui.click(1047,382)
time.sleep(2)
pyautogui.keyDown("enter")
補足
〇マーケットスピード II のRSSで注文確認画面、注意喚起画面を表示させたくないのですがどうすればいいですか?
注意喚起画面を表示させないようにすれば、「pyautogui」なしで自動売買ができます。