システムトレードブログ

UWSCでイザナミを自動的に操作する(6)

トレシズ自動売買の開発方法

今日はイザナミを使って複数の戦略の仕掛けシグナルと手仕舞いシグナルを自動的に抽出する方法について解説させていただきます。

この方法を使いますと、複数売買ルールを使う必要がなくなるためかなり便利です笑

今回は仕掛けシグナルと手仕舞いシグナルCSVの抽出方法ですが、

実際のところ、ワンクリック一括発注支援ツールに張り付けて自動発注というところまでUWSCを使うといけてしまいます汗

ただこのあたりのソースは未完成ですので、

ひとまずは複数戦略のシグナル抽出方法まで書かせていただきたいと思います笑

■準備段階とご注意点
・UWSCは
http://www.uwsc.info/download.html
の「UWSC Free版 Ver4.8e1  フリーソフト ダウンロード」からダウンロードできます。無料でしかも相当便利なツールです笑
・まず、誤動作等を問わずファイル上書きやその他の責任は一切とれませんので、自己責任であるという点と、全ストラテジーファイルを別な場所にバックアップしておく必要がある点をあらかじめご了承ください汗
・できれば普段ご自身でバックテスト検証などを行うPCとは別に、シグナル抽出用PCがあると理想的です。
・たとえば以下のようなフォルダの構成にしておくと便利です。
(1)Dドライブ内に「UWSC」フォルダと「CSV」フォルダを作成
 ↓
(2)「UWSC」フォルダの中に、ご利用中のストラテジーのバックテストファイルと最適分散投資ファイルを1つずつ入れておく
例)
D:\UWSC\ゴッドブレス2.str
D:\UWSC\ゴッドブレス2.opt
D:\UWSC\ゴッドフリート2.str
D:\UWSC\ゴッドフリート2.opt
 ↓
(3)イザナミでは前回操作時のフォルダ位置が選択されますので、まずあらかじめ「UWSC」フォルダや「CSV」フォルダを指定しておく必要があります。
そのため、まず初回はイザナミを手動で立ち上げ、「UWSC」フォルダ内のゴッドブレス2.strを読み込んで実行、最適分散投資でUWSC」フォルダ内のゴッドブレス2.optを読み込んで実行し、最終日シグナルのCSVを「CSV」フォルダ内に保存する、という動作を行ってからイザナミを終了します。
 ↓
(4)UWSCソースコードに、使用中のストラテジーを登録する必要があります。これは下記の箇所です。
-----------------------
// ここに使用中のストラテジーを登録する(0からスタートして1ずつ加算)
DIM ARRAY[1] // ※この1という数字は、配列の最大番号に変更する(下記例だと1、たとえばストラテジー数が10個なら9という数字になります。)
ARRAY[0] = "ゴッドブレス2"
ARRAY[1] = "ゴッドフリート2"
-----------------------
たとえばですが、ゴッドブレス2、ゴッドフリート2、ヒノカグ【上方ブレイク】の場合ですと、
-----------------------
// ここに使用中のストラテジーを登録する(0からスタートして1ずつ加算)
DIM ARRAY[2] // ※この2という数字は、配列の最大番号に変更する(下記例だと2、たとえばストラテジー数が10個なら9という数字になります。)
ARRAY[0] = "ゴッドブレス2"
ARRAY[1] = "ゴッドフリート2"
ARRAY[2] = "ヒノカグ【上方ブレイク】"
-----------------------
となります。
 ↓
(5)あとは、以下のファイルをデスクトップに作成し、そのファイルをダブルクリックするだけです。(フリー版の場合には、UWSCを立ち上げてからtest.uwsを読み込んで再生です。正直本格的に組もうとされている方は、そこまで高くはないのでシェアウェア購入が実際おすすめです笑)

■うまく動作しない場合には?
・SLEEP(5)は5秒待つという意味ですが、処理が先に進まない際にはこの数字を大きくすると動作するようになる場合があります。
・下記スクリプトは座標で操作している感じですが、座標が環境によってはずれている場合もあるかもしれません。そういった際には該当処理の吹き出しを「//FUKIDASI」→「FUKIDASI」といった感じに変更し、座標を調整してみてください。

While True
x = G_MOUSE_X y = G_MOUSE_Y // マウス位置
id = GETID(GET_ACTIVE_WIN) // アクティブウィンドウ
ofx = x - STATUS(id, ST_X) // 相対位置
ofy = y - STATUS(id, ST_Y)
moji = "x="+ofx + ", y="+ofy
Fukidasi(moji, x, y, 3)
Sleep(0.5)
Wend
のスクリプトを入れても座標を確認できます。

■UWSC側(デスクトップにtest.uwsという名前で保存)
----------------------------------------------------
// イザナミのパスを入力
Public IZANAMI_PATH = "C:\Program Files (x86)\izaneo\izaneo.exe"

ifB FOPEN(IZANAMI_PATH, F_EXISTS) = FALSE
MSGBOX("イザナミのパスが間違っています。")
EXITEXIT
endIf

WID = GETID(EXEC(IZANAMI_PATH))
SLEEP(3)

ACW(WID,0,0,1024,768)
SLEEP(0.1)

BTN(left,click,920,110)
//FUKIDASI("開始ボタンはここ", 920, 110, 5)
SLEEP(5)

// 株価更新ウィンドウが存在する場合のみ
PID = GETID(GET_ACTIVE_WIN)
ifB PID <> WID
ACW(PID,0,0)
BTN(left,click,190,260)
//FUKIDASI("更新するボタンはここ", 190, 260, 3)
SLEEP(10)
endIf

BTN(left,click,250,70)
//FUKIDASI("検証するボタンはここ", 250, 70, 3)
SLEEP(1)

// ここに使用中のストラテジーを登録する(0からスタートして1ずつ加算)
DIM ARRAY[1] // ※この1という数字は、配列の最大番号に変更する(下記例だと1、たとえばストラテジー数が10個なら9という数字になります。)
ARRAY[0] = "ゴッドブレス2"
ARRAY[1] = "ゴッドフリート2"

FOR i = 0 to LENGTH(ARRAY) - 1

DIM FNAME = ARRAY[i]
DIM FNAME_SHIKAKE = FNAME + "_仕掛けシグナル"
DIM FNAME_TEJIMAI = FNAME + "_手仕舞いシグナル"

BTN(left,click,150,110)
//FUKIDASI("設定の読み込み(ファイル)ボタンはここ", 150, 110, 3)
SLEEP(1)

// 設定の読み込み(ファイル)ウィンドウの位置と大きさを調整
PID = GETID(GET_ACTIVE_WIN)
ACW(PID,0,0,300,300)

SENDSTR(PID, FNAME)
KBD(VK_RETURN,CLICK,100)
SLEEP(1)

BTN(left,click,980,110)
//FUKIDASI("実行ボタンはここ", 980, 110, 3)
SLEEP(1)

// バックテスト実行中は待機
While GETID(GET_ACTIVE_WIN) <> WID
Wend
SLEEP(5)

BTN(left,click,570,70)
//FUKIDASI("最適分散投資ボタンはここ", 570, 70, 3)
SLEEP(1)

BTN(left,click,150,110)
//FUKIDASI("設定の読み込み(ファイル)ボタンはここ", 150, 110, 3)
SLEEP(1)

// 設定の読み込み(ファイル)ウィンドウの位置と大きさを調整
PID = GETID(GET_ACTIVE_WIN)
ACW(PID,0,0,300,300)

SENDSTR(PID, FNAME)
KBD(VK_RETURN,CLICK,100)
SLEEP(1)

BTN(left,click,980,110)
//FUKIDASI("実行ボタンはここ", 980, 110, 3)
SLEEP(1)

// 最適分散投資実行中は待機
While GETID(GET_ACTIVE_WIN) <> WID
Wend
SLEEP(5)

BTN(left,click,745,148)
//FUKIDASI("最終日シグナルはここ", 745, 148, 3)
SLEEP(1)

BTN(left,click,200,200)
//FUKIDASI("シグナル選択リストはここ", 200, 200, 3)
SLEEP(1)

BTN(left,click,200,220)
//FUKIDASI("仕掛けシグナルはここ", 200, 220, 3)
SLEEP(5)

BTN(left,click,40,110)
//FUKIDASI("CSVボタンはここ", 40, 110, 3)
SLEEP(1)

// CSV出力設定ウィンドウの位置を調整
PID = GETID(GET_ACTIVE_WIN)
ACW(PID,0,0)

BTN(left,click,100,395)
//FUKIDASI("OKボタンはここ", 100, 395, 3)
SLEEP(1)

// ファイル選択(保存)ウィンドウの位置を調整
PID = GETID(GET_ACTIVE_WIN)
ACW(PID,0,0)

SENDSTR(PID, FNAME_SHIKAKE)
KBD(VK_RETURN,CLICK,100)
SLEEP(5)

BTN(left,click,200,200)
//FUKIDASI("シグナル選択リストはここ", 200, 200, 3)
SLEEP(1)

BTN(left,click,200,235)
//FUKIDASI("手仕舞いシグナルはここ", 200, 235, 3)
SLEEP(5)

BTN(left,click,40,110)
//FUKIDASI("CSVボタンはここ", 40, 110, 3)
SLEEP(1)

// CSV出力設定ウィンドウの位置を調整
PID = GETID(GET_ACTIVE_WIN)
ACW(PID,0,0)

BTN(left,click,100,395)
//FUKIDASI("OKボタンはここ", 100, 395, 3)
SLEEP(1)

// ファイル選択(保存)ウィンドウの位置を調整
PID = GETID(GET_ACTIVE_WIN)
ACW(PID,0,0)

SENDSTR(PID, FNAME_TEJIMAI)
KBD(VK_RETURN,CLICK,100)
SLEEP(5)

BTN(left,click,260,70)
//FUKIDASI("バックテストボタンはここ", 260, 70, 3)
SLEEP(1)
NEXT

EXITEXIT

While True
x = G_MOUSE_X y = G_MOUSE_Y // マウス位置
id = GETID(GET_ACTIVE_WIN) // アクティブウィンドウ
ofx = x - STATUS(id, ST_X) // 相対位置
ofy = y - STATUS(id, ST_Y)
moji = "x="+ofx + ", y="+ofy
Fukidasi(moji, x, y, 3)
Sleep(0.5)
Wend
----------------------------------------------------

トレシズの「自動売買の開発方法」の記事

前々記事:UWSCでイザナミを自動的に操作する(5)
前の記事:株の自動売買ツールを作る(15)
今の記事:UWSCでイザナミを自動的に操作する(6)
次の記事:株の自動売買ツールを作る(15)
次々記事:分足シストレの研究(1)

おすすめ記事

株の自動売買ツールを作る(1)

かなり実験的な試みですが、自動売買ツールを作るまでの過程をブログに書かせていた…

自動売買への再チャレンジ

本日、ゴッドブレイク2の本審査申込みをさせていただきました。結果が分かり次第、告…

> このページのURLをPCメールアドレスに送る