楽天マーケットスピードとRSSとの自動起動

ここでは、楽天証券のマーケットスピードとRSSとをできるだけ確実に自動で起動させる方法を記します。
自動売買を行うには、この2つが必要になることが多いですが、これらの自動起動を確実に行おうと思ったら意外と難しいのです。

楽天RSS

マーケットスピード

ログイン方法

マーケットスピード8.0を例にします。

マーケットスピードを起動した時に、「総合サマリー」画面に移動し、Enterキーを押すと、ログインウインドウを開くことができます。(参考:楽天RSSの使い方4

「総合サマリー」画面

マーケットスピードの設定

ショートカットキー設定

「総合サマリー」へのショートカットキーを設定します。例では、ALT+F10

ログインID設定

ログインIDの設定を行います。

起動とログイン (ファイル名:MSSstart.UWS)

表示される可能性のあるダイアログ

ログイン時に表示されるかもしれないダイアログは3つ。表示された場合、OKボタンを押して処理を続行します。

ネットワークに接続できません
「未読の重要なお知らせ」があります。
お知らせがあります。

// 設定
PassWord = "*****"	//ログイン用パスワードを設定
MSFolderPath = "C:\Program Files\MarketSpeed\MarketSpeed" //MarketSpeed.exeのあるフォルダを設定

MSNAME = "Market Speed Ver"

// 変数を設定
PUBLIC エラーチェック
エラーチェック = 0	// MSSstart.UWSでは使用しない。

// Market Speedが起動していたら一端終了させる。
IFB GETID(MSNAME) >= 0 THEN
	CTRLWIN(GETID(MSNAME, "MDIFrame"), CLOSE)
	SLEEP(5)
ENDIF

// Market Speedを起動する。
EXEC(MSFolderPath + "\MarketSpeed.exe")

// Market Speedが起動するまでSleepする。
現在時刻秒 = GETTIME(0)
WHILE (GETID(MSNAME) < 0 ) AND (GETTIME(0) < 現在時刻秒 + 60)	//60秒間で中断
	SLEEP(1)
WEND
SLEEP(5)

// ログインする。
CTRLWIN(GETID(MSNAME, "MDIFrame"), ACTIVATE)
SLEEP(1)
SCKEY(GETID(MSNAME, "MDIFrame"), VK_ALT, VK_F10)	// 「総合サマリー」画面に設定したショーカットキーを送る。
SCKEY(GETID(MSNAME, "MDIFrame"), VK_RETURN)
SLEEP(5)
LoginWindow = GETID("Market Speed - ログイン")
SENDSTR(LoginWindow, PassWord)
SLEEP(1)
SCKEY(LoginWindow, VK_RETURN)

// ログインに失敗した場合に備えたログイン処理。(ログインが出来ないのは、サーバが混んでいる時か?)
// Market Speed - ログインの表示は出ており、パスワード入力が出来なかった状態を想定する。
// 未読の重要なお知らせのウインドウを閉じる処理。
現在時刻秒 = GETTIME(0)
WHILE (GETID("Market Speed - ログイン") > 0) AND (GETTIME(0) < 現在時刻秒 + 60)	//60秒間で中断
	id = GETID("Market Speed", "#32770")
	wks = GETSTR(id, 2, STR_STATIC)
	IF POS("ネットワークに接続できません", wks) > 0 THEN CLKITEM(id, "OK", CLK_BTN)
	IF POS("「未読の重要なお知らせ」があります。", wks) > 0 THEN CLKITEM(id, "OK", CLK_BTN)
	IF POS("お知らせがあります。", wks) > 0 THEN CLKITEM(id, "OK", CLK_BTN)

	ID2 = GETID("Market Speed - ログイン")
	IFB ID2 >= 0 THEN
		SENDSTR(ID2, PassWord , 2)
		CLKITEM(ID2, "OK", CLK_BTN)
		SLEEP(2)
	ENDIF
WEND

// RSSを起動する。
EXEC(MSFolderPath + "\RSS.exe")

CALL MSScheck.UWS	// RSSの接続を確認するなら呼び出す。

RSSが接続したかをチェックする(ファイル名:MSScheck.UWS)

コンピュータ名 = DOSCMD("echo %computername%")	//http://www.nagomi-jp.net/~liners/p01.htm

// タスクトレイのチェック
DIM Check = FALSE
FOR i = 0 TO GETITEM(GETID("", "Shell_TrayWnd"), ITM_TOOLBAR) - 1
	//PRINT ALL_ITEM_LIST[i]
	IF ALL_ITEM_LIST[i] = "RSS  接続中" THEN Check = TRUE
NEXT

GETTIME(0)

IFB Check = TRUE AND エラーチェック = 0 THEN
	件名   = コンピュータ名 + "定時確認"
	文書   = コンピュータ名 + "マーケットスピードを起動/再ログインしました<#CR>" + G_TIME_HH2 + "時" + G_TIME_NN2 + "分" + G_TIME_SS2 + "秒"
ELSE
	件名   = コンピュータ名 + "MSS Error"
	文書   = コンピュータ名 + "エラーチェックNo." + エラーチェック + "<#CR>マーケットスピードにログインできませんでした。<#CR>" + G_TIME_HH2 + "時" + G_TIME_NN2 + "分" + G_TIME_SS2 + "秒"
ENDIF

// メール送信
CALL mail.uws
送信元 = "HOGE@FUGA.or.jp"
送信先 = "FUGE@HOGA.or.jp"
sendMail(送信元, 送信先, 件名, 文書)	// mailfrom,mailto,subject,body

EXIT

マーケットスピードにログインしRSSに接続している、ということをできるだけ確実に確認する方法として、色々試したみた上で、タスクトレイのRSSのアイコンのポップアップを利用することにした。画像のように、RSSの接続の状態によってポップアップの内容が変わる。

ポップアップ

通知のカスタマイズで、アイコンを常に表示する設定にして下さい。

常に表示

タスクトレイにあるアイコンのポップアップ文字列の取得

ALL_ITEM_LIST[i]に、タスクトレイのアイコンなどのポップアップの文字列が代入されます。「RSS 接続中」の文字があればログインしたと判断できます。

処理結果をメールで送信

// メール送信
CALL mail.uws

の部分には、UWSCでメール送信mail.uws利用します。
mail.uwsMSScheck.UWSと同じフォルダに配置します。

起動する例

  1. タスクを使って、8:45頃に、UWSCを起動させます。(Windowsのアクセサリ>システムツール>タスクで設定します。)
  2. UWSCのスケジュール設定から、8:50頃に、MSSstart.UWS を起動し、ログインを行います。
  3. 複数のPCでログイン処理を行うなら、ログイン処理が重ならないように起動時間をずらした方が良いと思います。
  4. 225先物の夜間取引の為には、16:15分頃に、MSSstart.UWS を起動して、マーケットスピードを一端閉じログインし直すと良いでしょう。

履歴

2012-06-18
一部記事を補足に移動し、再構成した。
2010-08-15
Tipsを追記。
2009-12-31
「処理結果をメールで送信 方法1」をUWSCでメール送信の利用に変更。
2009-11-29
「ログインIDの設定」を追記。
2009-08-14
「表示される可能性のあるダイアログ」を追記。
2009-08-09
メール送信 方法2を追加。スクリプト部分の細かい修正。
2009-08-05
mss(Market Speed Shortcut)を利用しない方法に変更。「RSS 接続中」の確認処理を内部化。UWSCのスクリプトを修正。
2009-03-15
「昼にRSSが一端途切れるのを回避する方法」を追記。
2008-08-12
細かい修正。
2008-04-01
エラーNo.2が発生する場合の条件に追記。
2008-03-28
エラーNo.2が発生する場合の条件を追記。
2007-08-27
「ログアウトします」のダイアログと「サーバとの接続が切断されました」のダイアログとに対応するようにMSSreStart.UWSを変更。
2007-08-17
MSSreStart.UWSの処理の不具合を修正。MSScheck.UWSを変更。
2007-07-02
MSSstart.UWSとMSSreStart.UWSとに、「CTRLWIN(GETID(MSNAME,"MDIFrame"),NORMAL) 」などを追加。
2007-07-01
ログイン状態を確認しメールで送信する処理について掲載。その他大幅に変更。
2007-02-27
UWSCのスクリプトを、マーケットスピード6.0に対応しかつ改善した。
2006-12-12
別所で記載したことを、修正し再掲載