チャートから分足を保存(複数銘柄対応)

  • UWSCのスクリプトで、チャート上の右クリックで表示される「CSV形式でデータ出力」を行います。
  • CodeList.csvに記入したカテゴリ名,銘柄コードを利用して、CSVをカテゴリ毎のフォルダに保存します。
  • ノムラ・エクスプレス(野村証券)、ネットストック・ハイスピード(松井証券)のログインも実行します。

ダウンロード

無料ダウンロード PricesDownload.zip

設定

  • カテゴリ利用 カテゴリのフォルダに保存するならTRUE。しないなら、FALSE。
  • folderPath データを保存するフォルダパスを、に設定します。
  • ファイル名日付利用 Trueにすると、日付+銘柄コードのファイル名。Falseにすると、銘柄コードのファイル名で保存されます。

ネットストック・ハイスピードを利用する場合

  • nshs.uwsで、IDとパスワードを設定します。
  • PricesDownload.uwsで、証券会社をFALSEにします。

ノムラ・エクスプレスを利用する場合

PricesDownload.uwsで、

  • passwordを設定します。
  • 証券会社をTRUEにします。
  • appPathを、ノムラ・エクスプレスのプログラムパスにします。

CodeList.txt

カテゴリ名,コード,銘柄名1,銘柄名2,銘柄名3,銘柄名4

銘柄名は、4つまで設定できます。保存したCSVファイルの1行目にある銘柄名にします。保存後、銘柄名をチェックして違う場合はエラーとなりそのファイルを削除します。

例:

食品,2579,コカウエスト,コカコーラ,,

カテゴリ名を「-」にすると、その行は利用しません。

チャート表示を設定

ノムラ・エクスプレス、ネットストック・ハイスピードを起動した時に、上記画像のように株式チャートの画面が出てくるように設定しておきます。チャート画面は単独のウインドウで表示されるように、MDI画面(メインウインドウ内に子ウインドウが開く)ではなくてSDI画面(ドキュメント毎にウインドウが開く)にしておきます。

チャート画面

20110308fig2.png

CSVファイルを開くプログラムを変更

拡張子CSVのファイルは、Excelでは無くて、例えばメモ帳などのテキストエディタで常に開く設定にしておきます。

20110508fig1b.png

CSV形式でデータ出力

20120618fig1.png

「CSV形式でデータ出力」の上でクリックされない場合は、x,yを調節して下さい。

スクリプト

PricesDownload.uws

// チャートからCSVを保存(複数銘柄対応)
// http://www.moderns.co.jp/trade/
// 2012-08-17

カテゴリ利用 = TRUE	//カテゴリのフォルダに保存するならTRUE。しないなら、FALSE。
fileName = "CodeList.csv"	//銘柄リストのファイル名

password = ""	// 野村用 ログインパスワードを設定して下さい。

証券会社 = FALSE	//ノムラエクスプレス(野村證券)にログインするならTRUE。ネットストック・ハイスピード(松井証券)を利用するなら、FALSE。
folderPath = "C:\"	//データを保存するフォルダパス。このフォルダ以下に、[日付 + Data]のフォルダが作成される。

//ノムラ・エクスプレスのプログラムパス
appPath = "C:\Program Files\nomuraExpress\Module\JoinvestExpress.exe"

ファイル名日付利用 = FALSE	// ファイル名に日付を付けるならTRUE。しないなら、FALSE。

//チャート画面上で右クリック後カーソル移動幅。調節して下さい。
x = 69
y = 260		//フォントがMS Pゴシックなら、220

//windowTitle = "指数先物OPチャート"
windowTitle = "株式チャート"

IFB 証券会社 THEN
	appTitle = "ノムラ・エクスプレス"
	野村ログイン(appPath,password)
ELSE
	appTitle = "ネットストック・ハイスピード"
	CALL nshs.uws
ENDIF

GETTIME(0)

//CSVを保存するフォルダ 
folderPath = folderPath + G_TIME_YY4 + G_TIME_MM2 + G_TIME_DD2 + " Data\"


dateFileName = ""
//ファイル名の日付部分を設定する。
IFB ファイル名日付利用 THEN
	dateFileName = G_TIME_YY4 + G_TIME_MM2 + G_TIME_DD2 + " "	//例 20080815
ENDIF

//チャート画面が開くまで待機。
WHILE GETID( windowTitle ) < 0
	SLEEP(1)
WEND
SLEEP(10)		//長すぎるなら適宜修正

wNum = GETID(windowTitle)
CTRLWIN(wNum, ACTIVATE)
	
DIM FSO = CreateOLEObj("Scripting.FileSystemObject")

//folderPathのフォルダが無ければ作成する。
IFB FSO.FolderExists(folderPath) = FALSE THEN
	FSO.CreateFolder (folderPath)
ENDIF

fid = FOPEN(fileName, F_READ)



FOR= 1 TO FGET(fid, -1)		// 行数分を繰り返す
	カテゴリ = FGET(fid,, 1)
	code = FGET(fid,,2)	// 行のデータを取り出す

	IF カテゴリ="-" THEN
		CONTINUE
	ENDIF
		
	IFB カテゴリ利用 THEN
		IFB FSO.FolderExists(folderPath + カテゴリ) = FALSE THEN
			FSO.CreateFolder (folderPath + カテゴリ)
		ENDIF
	ENDIF

	対応名1 = STRCONV(FGET(fid,, 3), SC_HALFWIDTH)
	対応名2 = STRCONV(FGET(fid,, 4), SC_HALFWIDTH)
	対応名3 = STRCONV(FGET(fid,, 5), SC_HALFWIDTH)
	対応名4 = STRCONV(FGET(fid,, 4), SC_HALFWIDTH)
	// LogRecord( 対応名1 +  " " + 対応名2  +  " " + 対応名3 + " " + 対応名4)
	
	//PRINT code
	FileName = dateFileName + code

	//ウインドウの座標・大きさを取得
	xx = STATUS( wNum, ST_X )
	yy = STATUS( wNum, ST_Y )
	width = STATUS( wNum, ST_CLWIDTH )
	height =  STATUS( wNum, ST_CLHEIGHT )

	SLEEP(1)

	//銘柄のCode入力処理開始。
	w_ID = GetID(windowTitle)
	o_HND = GetCtlHND(w_ID, "ComboBox")
	o_ID = HNDtoID(o_HND)
	CTRLWIN(w_ID, ACTIVATE)
	SENDSTR(o_ID, code, 1, True)	
	KBD(VK_RETURN)
	//銘柄のCode入力処理終了
	
	SLEEP(0.5)
	wNum = GETID( windowTitle )
	CTRLWIN( wNum, ACTIVATE)

	// カーソルの状態で判断。
	startTime = GETTIME(0)
	WHILE MUSCUR() <> 2  AND (GETTIME(0) < startTime + 5)	//5秒間で中断
		LogRecord( code +  "カーソル待機")
		SLEEP(0.5)
	WEND
	
	//CSVを保存
	BTN(RIGHT, CLICK, xx+200, yy+height/3, 300)	//右クリック
	BTN(LEFT, CLICK, xx+200+x, yy+height/3+y, 300)	//「CSV形式でデータ出力」の文字列の上をクリック

	//「出力」ダイアログが開くまで待機。
	startTime = GETTIME(0)
	WHILE GETID("出力") < 0  AND (GETTIME(0) < startTime + 10)	//10秒間で中断
		SLEEP(0.5)
	WEND
	SLEEP(0.5)
	wNum2 = GETID("出力")
	DIM SavePath = ""
	
	SELECT wNum2
		CASE -1
			LogRecord("カテゴリ: " + カテゴリ + " Code : " + code + " 保存できませんでした。")
		DEFAULT
			IFB カテゴリ利用 THEN
				SavePath = folderPath + カテゴリ + "\"+ FileName
				SENDSTR(wNum2, SavePath)
			ELSE
				SavePath =  folderPath + FileName
				SENDSTR(wNum2,SavePath)
			ENDIF
			KBD(VK_RETURN, DOWN, 40)
			SLEEP(0.5)
	SELEND

	CTRLWIN(wNum, ACTIVATE)
	SavePath = SavePath + ".CSV"
	SavedCSV = FOPEN(SavePath , F_READ)
	SavedMeigara = FGET( SavedCSV,1,1 )
	FCLOSE(SavedCSV)  
	// LogRecord( "CSV File " + SavePath)
	// LogRecord(" MeigaraName " + SavedMeigara)
	SavedMeigara = STRCONV( SavedMeigara, SC_HALFWIDTH )
	IF !( 対応名1= SavedMeigara OR 対応名2 = SavedMeigara OR 対応名3 =  SavedMeigara  OR 対応名4 =  SavedMeigara OR (対応名1="" AND 対応名2 ="" AND 対応名3 ="" AND 対応名4 ="")) THEN
		FSO.DeleteFile(SavePath)
		LogRecord( "カテゴリ: " + カテゴリ + " Code : " + code + "で保存したファイル は" + 対応名1 + "などでは無いため、削除しました。")
	ENDIF

NEXT
FCLOSE( fid )

// ログを表示する。
DIM filePath = GET_CUR_DIR + "\log.txt"
DOSCMD(filePath)

//EXIT //アプリケーションを閉じないなら、コメントをはずす。

// アプリケーションを閉じる
CTRLWIN(GETID(appTitle), CLOSE2 )
SLEEP(2)
CLKITEM(GETID(appTitle,"#32770"), "はい", clk_acc or clk_short, true, 1)



Procedure 野村ログイン(appPath,password)
	Exec(appPath)		//アプリを起動。

	WHILE GETID("ログイン","#32770") < 0
		SLEEP(1)
	WEND
	CTRLWIN( GETID("ログイン","#32770"), ACTIVATE)

	IDnum = GETID("ログイン","#32770")
	SENDSTR(IDnum, password , 2, true)	//パスワード入力
	KBD(VK_RETURN, CLICK, 40)

Fend

Procedure BusyWait(ie)
	repeat
	Sleep(0.2)
	until (! ie.busy) and (ie.readyState=4)
Fend

Procedure LogRecord(logText)
	DIM FSO = CreateOLEObj("Scripting.FileSystemObject")
	DIM filePath = GET_CUR_DIR + "\log.txt"
	logFile =  FSO.OpenTextFile(filePath,8,TRUE)

	GetTime(0)
	logFile.writeline(G_TIME_YY4 +G_TIME_MM2 +G_TIME_DD2 + " " +logText)
	logFile.Close
Fend

コードリスト

CodeList.txt

食品,2002,日清粉G,,,
食品,2212,山パン,,,
食品,2264,森永乳,,,
食品,2282,日ハム,,,
食品,2501,サッポロ,,,
(以下、省略)

トラブルシューティング

  • ジョインベスト・エクスプレスからノムラ・エクスプレスに自動的にアップデートされた場合、ファイルのパスは変わらないようです。
    従って、スクリプトを次のように変更して下さい。
    appPath = "C:\Program Files\joinvestExpress\Module\JoinvestExpress.exe"
    
  • Windows VISTA,7の場合、「ユーザーアカウント制御の設定」を「通知しない」にする必要があるかもしれません。

    ユーザーアカウント制御の設定


使用規約

  • このソフトウェアを使用したことによる一切の損害について作者は責任を負いません。

履歴

2012-08-17
ダウンロードしたCSVファイルの1行目にある銘柄名を読み取り、ダウンロードが成功したかどうかをチェックする機能を追加。
エラーをログに記録する機能を追加。
2011-05-08
ネットストック・ハイスピード(松井証券)のログインに対応。CSVファイルをExcelで開かない前提に変更した。
2010-11-07
銘柄2.txtを利用し、カテゴリ名のフォルダ毎にCSVを保存できるようにした。銘柄のCode入力処理を変更。CSVにデータが無くファイルが開かれない場合に対処。
2010-08-12
スクリプトを改良。
2009-11-26
「ジョインベスト・エクスプレス」から「ジョイ・エクスプレス」に変更。
2008-08-25
掲載