マウスを自在に操る③
マウスを自在に操る①、②をお読みでない方は、まずは下記記事をお読みください。
まずはVBAでマウスを動かしている動画をごらんください。
SBI証券でIFDO注文を出しているところです。
(数値はダミーを使っています。)
私は買いは楽天証券、空売りはSBI証券を使っています。
買いの方は楽天RSS関数で発注、SBI証券は、マウスをVBAで動かして発注しています。
ほかにも、チャートの自動表示やカブコム証券のリマインダ設定など多くの箇所でマウスを動かしています。
さて、上記の動画は以下のVBAコードで動かしています。
宣言部分
Public Declare PtrSafe Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Sub IFDO(Scode,tatene, rikakune, songiri, kabusu)
Path = "C:\●●●\●●●\●●●\●●●\UWSC.exe"
file = "C:\●●●\●●●\●●●\●●●\●●●\SBI取引画面.uws"
Ret = Shell(Path & " " & file, vbNormalFocus)
Sleep 500
SetCursorPos -622, 126 '銘柄コード
mouse_event 2
mouse_event 4
SendKeys "^a"
Sleep 300
SendKeys Scode
Sleep 300
SendKeys "{ENTER}"
SetCursorPos -629, 230 '新規注文ボタン
mouse_event 2
mouse_event 4
SetCursorPos -475, 257 '日計り
mouse_event 2
mouse_event 4
SetCursorPos -470, 284 '売りボタン
mouse_event 2
mouse_event 4
Sleep 200
SetCursorPos -553, 307 '特定口座
mouse_event 2
mouse_event 4
SetCursorPos -312, 335 'IFDO
mouse_event 2
mouse_event 4
Sleep 200
SetCursorPos -564, 419 '株数
mouse_event 2
mouse_event 4
SendKeys "^a"
SendKeys kabusu
Sleep 300
SetCursorPos -569, 467 '通常
mouse_event 2
mouse_event 4
Sleep 200
SetCursorPos -569, 492 '指値
mouse_event 2
mouse_event 4
SetCursorPos -555, 519 '指値価格
mouse_event 2
mouse_event 4
SendKeys "^a"
SendKeys tatene
Sleep 300
SetCursorPos -524, 614 '利確
mouse_event 2
mouse_event 4
SendKeys "^a"
SendKeys rikakune
Sleep 300
SetCursorPos -199, 616 '損切り
mouse_event 2
mouse_event 4
SendKeys "^a"
SendKeys songiri
Sleep 300
SetCursorPos -208, 675 '成行
mouse_event 2
mouse_event 4
SetCursorPos -99, 764 '注目
End Sub
以上がコードです。
Subプロシージャでは5つの引数をとっています。
Scode 銘柄コード
tatene 建値
rikakune 利確値
songiri 損切り値
kabusu 株数
このプロシージャを呼び出すときに引数を生成する必要があります。
Excelシートの2列目に銘柄コード、
12列目に前日終値(RSS関数で取得)
があるとして
r=activecell.row
Scode=cells(r,2)
tatene=int(cells(r,12)*1.05)
rikakune=int(tatene*0.97)
songiri=int(tatene*1.03)
kabusu= int(300000 / tatene/ 100) * 100
call IFDO(Scode,tatene, rikakune, songiri, kabusu)
上記の設定は
前日終値5%で仕掛け、利確、損切りをともに3%
仕掛け金額は上限30万でIFDO発注しますよ、という意味になります。
それではコードの説明をします。
前回の記事で書いた、座標取得ツールを使ってマウスを動かしいたい位置の座標をメモしておきます。
以下の3コードは、
マウスを指定座標に移動
左マウスを押す
左マウスを離す
という意味になります。
SetCursorPos -208, 675
mouse_event 2
mouse_event 4
※座標はメイン画面より左のモニターはマイナスになります。
以下のコードはCTRL+a つまり入力範囲を全選択
という意味になります。
これを入れないと、前のデータの後に入力され、うまくいきません。
SendKeys "^a"
以下のコードは0.3秒間隔を開けるという意味です。
各自のネット通信速度や、PCのスペックで違ってきます。
うまくいかないときは間隔を0.5秒や1秒などに伸ばしてみてください。
Sleep 300
まとめ
VBAの初心者の方には少し難しい部分があるかもしれません。
しかし、すこしVBAができる方には理解できる内容ではないかと思います。
私はこの方法でトレードのかなりの部分、マウス操作を自動化しています。
デイトレの場合、特に9時から9時10分くらいまでの間は、超ゴールデンタイムです。
その半面、ちょっとしたミスでチャンスを取り逃がす時間帯でもあります。
私は毎日のトレードの反省でどこでチャンスを逃がしたか?
それを無くすためにどうすればよいか?
ツールとして改善すべき点はないか?
など日々考えて、システムを改良し続けています。
今回の記事が少しでもお役に立てば幸いです。
この記事が気に入ったらサポートをしてみませんか?