2007年10月22日 (月)

新Progre02のまとめ

 新Progre02のテクニカルのExcelシートは売りと買いを足して作ったので横に長くなりました。セル位置も1列ずれました。

 これも過去ログを見ながら、出来るだけ簡単に、解かるように書ければと思っています。

 そして、過去ログを見ていたら、今までは検証を重視していたように思う。そして作りながらの記事が多く、解かりにくい。

 しかし、自動売買にはサインさえ出せば事が足ります。

          *

 A列からU列までは

2月28日の記事

3月2日の記事 を見て下さい。

 R・T・W・X列は今回空白で構いません。(今回、自動化に対する余分なものは全て除きます。)

 V列の式の追加

{セルV1}・・・ 5 (パラメータ)

{セルV2}・・・ 日間最小 

{セルV3} =MIN($D3:OFFSET($D3,$V$1-1,0))

          *

{セルY1}・・・積極型2  {セルY2}・・・フラッグ

{セルY3}・・・=IF(OR(AND($N4="*",$N3=""),AND($P4="",$P3="*",OR(Y4=2,Y4=0))),IF(Y4=1,1,IF(Y4=3,1,3)),IF(OR(AND($P4="*",$P3=""),AND($N4="",$N3="*",OR(Y4=3,Y4=1))),IF(OR(Y4=0,Y4=2),0,2),IF(Y4=2,0,IF(Y4=3,1,Y4))))

 トレーディングストップを付けていない元となる式

          *

{セルZ1}・・・ 9% (パラメータ)

{セルZ2}・・・トレーディングストップ  

{セルZ3}・・・=IF(Y3=0,IF(Z4<TRUNC(V3+V3*Z$1),IF(Z4="",TRUNC(V3+V3*Z$1),Z4),TRUNC(V3+V3*Z$1)),IF(Y3=1,IF(Z4>TRUNC(U3-U3*Z$1),IF(Z4="",TRUNC(U3-U3*Z$1),Z4),TRUNC(U3-U3*Z$1)),""))

 売りと買いでストップ値が変わるようになっています。

          *

{セルAA3}・・・=IF(OR(Y3=2,Y3=3),"",IF(Y3=1,IF(E3<Z3,"ストップ",""),IF(Y3=0,IF(E3>Z3,"ストップ",""))))

 これは警告でもあるのでセルに条件をつけてストップが表示された時はそのセルを真っ赤にすれば良いと思う。

          *

{セルAB2}・・・売買サイン

{セルAB3}・・・=IF(AA3="ストップ",IF(Y3=1,IF(OR(AB4=1,AB4=3),4,6),IF(OR(AB4=0,AB4=2),5,7)),IF(Y3=1,IF(OR(AB4=4,AB4=6,AB4=0),3,1),IF(Y3=0,IF(OR(AB4=5,AB4=7),2,0),IF(Y3=2,2,3))))

 今回、 サイン(7)を増やしました。売り持ちでストップの掛かった状態です。(実際にはNOポジか買いになります)サイン(6)はその反対です。

        ********

 自動売買には以上の項目で足ります。

{セルAG1}・・・=INDEX(AB:AB,3)

は残しておいて下さい。

それ以降の列は検証の領域にはいります。 

          *

これに10月17日の部分を付け加えればシートの出来あがりです。

後は5月6日から読んで下さい。行の挿入式のコピーデータ取得を見てVBAを作って下さい。

| | コメント (0) | トラックバック (0)

2007年10月21日 (日)

UWSCのスケジュール設定

 つづき

 5月29日の記事を見て下さい。今回必要なUWSCファイルは先日作った下記の6個です。

1. 証券会社ログイン(iwai.uws)

2. 売り注文.uws

3. 買い注文.uws

4. 売建て注文.uws

5. 返済注文.uws

6. 終了.uws

これらを5月29日の記事のように、スケジュール設定していきます。

1. のログインは午前・午後の1日2回としました。それでタイマー設定フォームの式による設定(E)に下記の式をいれます。

(HH=9 OR HH=14)AND NN=43

          *

説明  9:43と14:43に実行すると言うことです。

 これで全て終わりました。今回は出来るだけ余分な事を書かないでおこうと思います。

| | コメント (0) | トラックバック (1)

ExcelVBA 時間の管理

 つづき

 VBAを使い指定した時間が来れば発注メッセージを出すようにします。

プロジェクトウィンドーのThisWorkbookを選択します。左上のコードの表示ボタンをクリックVba60

コードウィンドーの左上をWorkbook、右上をOpenと選択します。

        ********

Private Sub Workbook_Open()

Application.OnTime TimeValue("9:46:00"), "表示"

Application.OnTime TimeValue("10:06:00"), "表示"

Application.OnTime TimeValue("10:26:00"), "表示"

Application.OnTime TimeValue("10:46:00"), "表示"

Application.OnTime TimeValue("14:46:00"), "表示"

   
End Sub

        ********

 "表示" はSub名です。次にそのコードを載せます。

        ********

Sub 表示()
'
' 表示 Macro
' マクロ記録日 : 2007/5/23  ユーザー名 : ペニー
'

        売り注文
   
        返済注文
   
        買い注文
   
        売建て注文
   
   
'
End Sub

        ********

 これら4つは先日作った発注メッセージ表示のSub名です。5月25日の記事ではかなり余計な事をしています。(自動発注には先日作ったExcelの表とこれらのSubで充分です。自分だけの使用ならフォームまで作る必要はないです。)

 しかし、実際にはもう少し複雑にしています。午前中の注文はサイン(4)か(5)しか受けつけないとか、

 つづく

 次回 UWSCのスケジュール設定

| | コメント (0) | トラックバック (0)

2007年10月20日 (土)

UWSC発注スクリプト例

 つづき

 5月27日・5月29日の記事を見てもらえれば良いのですが、もう一度UWSCスクリプトを載せます。証券会社によって発注画面が違うので、これは一例です。

        ********

DIM TEMP[8]
EXCELORDERWINDOW = GETID("
++売建て注文++")   // エクセルのメッセージボックスのID
TEMP[1] = GETSTR(EXCELORDERWINDOW,1,1)    // メッセージボックス"++売建て注文++"の内容をTEMP[1]に

 FOR i = 2 TO 8
  TEMP[i] = TOKEN(" ",TEMP[1])       // ” ”で区切って各項目をTEMP[i] に入れて行く
 NEXT

IWAIID=GETID("岩井証券 - Microsoft Internet Explorer")  // 岩井証券ウィンドーのID
ACW(IWAIID,1,1,1000,700)     // ACWはウィンドーをアクティブにします
MOUSEORG(IWAIID,1)     // マウスを左上に持ってくる
BTN(LEFT,CLICK,350,80,150)     //  信用取引ボタンクリック
SLEEP(15)
BTN(LEFT,CLICK,55,160,150)     //  新規建て注文ボタンクリック
SLEEP(10)
Code=TEMP[6]                   // 銘柄コード
SENDSTR(IWAIID,Code,2,TRUE,TRUE)    // 発注表の銘柄コードテキストボックスに銘柄コードを入れる
SLEEP(5)
BTN(LEFT,CLICK,520,260,300)    // 銘柄検索ボタンクリック
SLEEP(5)
BTN(LEFT,CLICK,432,307,300)       //  売建(半年)ボタンクリック
Kabusuu= TEMP[8]                  // 株数
SENDSTR(IWAIID,Kabusuu,2,TRUE,TRUE)   // 発注表の株数テキストボックスに株数を入れる
SLEEP(2)
BTN(LEFT,CLICK,320,470,300)    // 成行ボタンクリック
SLEEP(2)
BTN(LEFT,CLICK,320,525,300)    // 当日限りボタンクリック
SLEEP(2)
BTN(LEFT,CLICK,237,570,300)    // 注文確認へボタンクリック
SLEEP(2)

Code=****                          // ユーザパスワード   
SENDSTR(IWAIID,Code,2,TRUE,TRUE) 
sleep(1)
BTN(LEFT,CLICK,240,555,300)    // 実行ボタンクリック
SLEEP(2)

CLKITEM(EXCELORDERWINDOW,"OK")     // エクセルのメッセージボックスの"OK"ボタンをくりっくしメッセージボックスを閉じる
MOUSEORG(0)

        ********

 緑部分が共通部分です。赤字は注文パターンによって変えます。昨日のVBAで表示するメッセージボックスに対応します。

 黒字の部分は証券会社の発注画面に合わせて作ってください。

詳しい説明は5月27日・5月29日の記事を見てください。

 つづく 

 次回 ExcelVBA・・・・時間の管理(発注メッセージの表示時刻)

| | コメント (0) | トラックバック (0)

2007年10月19日 (金)

VBA 発注メッセージの表示  その2

 つづき

現物売りVBAコード

Sub 売り注文()
'
' 売り注文 Macro
' マクロ記録日 : 2007/5/21  ユーザー名 : ペニー
'
    Dim iCount As Long
       
       
    For iCount = 0 To 14 Step 1
   
        If Worksheets("Sheet1").Range("C35").Offset(0, iCount) = 2 Or Worksheets("Sheet1").Range("C35").Offset(0, iCount) = 4 Then
    
            If Worksheets("Sheet1").Range("C45").Offset(0, iCount) > 0 Then
            
                If Worksheets("Sheet1").Range("C44").Offset(0, iCount) = "" Then
            
                    MsgBox " 銘柄: " & Worksheets("Sheet1").Range("C34").Offset(0, iCount) & vbCr & " 銘柄コード: " & Worksheets("Sheet1").Range("C33").Offset(0, iCount), vbOKOnly, "++売り注文++"
                
                    Worksheets("Sheet1").Range("C45").Offset(0, iCount) = Worksheets("Sheet1").Range("C45").Offset(0, iCount) - Worksheets("Sheet1").Range("C39").Offset(0, iCount)
                
                End If
               
            End If
            
            
        End If
       
     Next
'
End Sub

        ********

現物買いVBAコード

Sub 買い注文()
'
' 買い注文 Macro
' マクロ記録日 : 2007/5/21  ユーザー名 : ペニー
'

Dim iCount As Long
    
       
    For iCount = 0 To 14 Step 1
   
        If Worksheets("Sheet1").Range("C35").Offset(0, iCount) = 3 Then
    
            If Worksheets("Sheet1").Range("C45").Offset(0, iCount) <= 0 Then
               
                 If Worksheets("Sheet1").Range("C44").Offset(0, iCount) = "" Then
            
                    MsgBox " 銘柄: " & Worksheets("Sheet1").Range("C34").Offset(0, iCount) & vbCr & " 銘柄コード: " & Worksheets("Sheet1").Range("C33").Offset(0, iCount) & vbCr & " 買付株数: " & Worksheets("Sheet1").Range("C39").Offset(0, iCount), vbOKOnly, "++買い注文++"
                
                    Worksheets("Sheet1").Range("C45").Offset(0, iCount) = Worksheets("Sheet1").Range("C45").Offset(0, iCount) + Worksheets("Sheet1").Range("C39").Offset(0, iCount)
                
                 End If
               
            End If
            
            
        End If
       
     Next
'
End Sub

          *

 これで4パターンの発注メッセージが出来ます。

つづく

 次回 UWSC発注スクリプト例

| | コメント (0) | トラックバック (0)

2007年10月18日 (木)

VBA 発注メッセージの表示

 つづき

 昨日作った表を元に発注メッセージをVBAを使い出します。

5月26日の記事で売りと買いのパターンは作りました。しかし、元になる表を作り変えたので、そのコード内のシート名とセル位置を変えないといけません。

 5月26日の記事を見ながら以下を読んでください。

信用新規売り建てVBAコード

Sub 売建て注文()
'
' 売建て注文 Macro
' マクロ記録日 : 2007/10/9  ユーザー名 : ペニー
'
    Dim iCount As Long

               
    For iCount = 0 To 14 Step 1
   
        If Worksheets("Sheet1").Range("C35").Offset(0, iCount) = 2 Then
    
            If Worksheets("Sheet1").Range("C45").Offset(0, iCount) >= 0 Then
            
                If Worksheets("Sheet1").Range("C44").Offset(0, iCount) = "" Then

               
                    MsgBox " 銘柄: " & Worksheets("Sheet1").Range("C34").Offset(0, iCount) & vbCr & " 銘柄コード: " & Worksheets("Sheet1").Range("C33").Offset(0, iCount) & vbCr & " 売建て株数: " & Worksheets("Sheet1").Range("C39").Offset(0, iCount), vbOKOnly, "++売建て注文++"
                
                   Worksheets("Sheet1").Range("C45").Offset(0, iCount) = Worksheets("Sheet1").Range("C45").Offset(0, iCount) - Worksheets("Sheet1").Range("C39").Offset(0, iCount)
                
                End If
               
            End If
            
            
        End If
       
     Next
'
End Sub

        ********

 赤の部分が変更

 緑の部分が追加 上から説明します。

 既に売っていればセルC45はマイナスなので発注メッセージは出しません。

 セルC44に*印があれば発注メッセージは出しません。

 1番下の長い文は

 売り発注があればセルC45(持ち株数)を減らします。

          *

信用売り返済VBAコード

Sub 返済注文()
'
' 返済注文 Macro
' マクロ記録日 : 2007/10/10  ユーザー名 : ペニー
'
    Dim iCount As Long      
       
    For iCount = 0 To 14 Step 1
   
        If Worksheets("Sheet1").Range("C35").Offset(0, iCount) = 3 Or Worksheets("Sheet1").Range("C35").Offset(0, iCount) = 5 Then
    
            If Worksheets("Sheet1").Range("C45").Offset(0, iCount) < 0 Then
            
                If Worksheets("Sheet1").Range("C44").Offset(0, iCount) = "" Then
               
                    MsgBox " 銘柄: " & Worksheets("Sheet1").Range("C34").Offset(0, iCount) & vbCr & " 銘柄コード: " & Worksheets("Sheet1").Range("C33").Offset(0, iCount), vbOKOnly, "++返済注文++"
                
                    Worksheets("Sheet1").Range("C45").Offset(0, iCount) = Worksheets("Sheet1").Range("C45").Offset(0, iCount) + Worksheets("Sheet1").Range("C39").Offset(0, iCount)
                
                End If
               
            End If
            
        End If
       
     Next
'
End Sub

つづく

| | コメント (0) | トラックバック (0)

2007年10月17日 (水)

ザラ場 データの取得

 つづき

まず5月25日の記事参照してください。『その日』のVBAマクロとトップシートをProgre02に移植します。

 データ元はヤフーからNIKEI NETに変更しました。

http://company.nikkei.co.jp/index.cfm?scode=5017

 セルN51から5行毎に、各銘柄を割り当てます。

 テーブル番号は3です。今回ここでは加工はしません。

 O列・・・始値  P列・・・高値 

 Q列・・・安値  R列・・・現在値と時間

が入ります。

          *

 2枚目以降の各銘柄シートの変更

{セルB1}・・・=Sheet1!O$53

{セルC1}・・・=Sheet1!P$53

{セルD1}・・・=Sheet1!Q$53

{セルE1}・・・=Sheet1!R$53

と入れます。3枚目以降は53を58、63、68・・・として下さい。

とうぜんトップシートと対応して下さい。

{セルAG1}・・・=INDEX(AB:AB,3)

{セルAH1}・・・=INDEX(AF:AF,3)

{セルAI1}・・・=INDEX(AJ:AJ,3)

{セルAJ1}・・・=INDEX(AM:AM,3)

{セルAO1}・・・=INDEX(E:E,3)

{セルAP1}・・・=INDEX(E:E,4)

と入れて下さい。3枚目以降も同じ

        ********

 VBA Sub 式のコピー に追加 (B1からE1の式をB3からE3へこぴーします。)

For inCo = 2 To shCount
   
        ThisWorkbook.Worksheets(inCo).Select
        Worksheets(inCo).Range(Cells(3 + hiData, 8), Cells(3 + hiData, 42)).Copy _
        Destination:=Worksheets(inCo).Range(Cells(3, 8), Cells(2 + hiData, 42))
       
        Worksheets(inCo).Range(Cells(1, 2), Cells(1, 5)).Copy _
        Destination:=Worksheets(inCo).Range(Cells(3, 2), Cells(3, 5))

               
   Next inCo

緑部分を追加
   

          *

 トップシートへ戻る

10月8日の記事の図参照

B列に各項目、{セルB44}・・・自動解除

33行・・・銘柄コード

34行・・・銘柄名(順番は2番目以降のシート順と同じにする。)

{セルB44}・・・=R51

          *

C列の例 AOC(2枚目のシートの銘柄)

{セルC33}・・・5017  {セルC34}・・・AOC

{セルC35}・・・=aoc!$AG$1

{セルC36}・・・=aoc!$AO$1

{セルC37}・・・=aoc!$AP$1

{セルC38}・・・=C36-C37

{セルC39}・・・単位株数 または 任意の数

{セルC40}・・・=IF(C35=1,C38*C39,IF(C35=0,-1*C38*C39,0))

{セルC41}・・・=aoc!$AH$1*$C39

{セルC42}・・・=aoc!$AI$1*$C39

{セルC43}・・・=aoc!$AJ$1*$C39

{セルC44}・・・自動解除の時は*印(自動で発注されない。)

{セルC45}・・・今のポジション(重複売買を防ぐ。VBAにより自動発注された時、自動で増減します。)

{セルC46}・・・=C38*C45

          *

A列 各列の合計 10銘柄の今日の結果と自分の結果が出る。

このテーブルのお陰でサインの見逃しが無くなり、結果も一目で判る。凄く便利になりました。売買サインの位置も10銘柄が1列に並び凄く見やすいです。(自我自賛)

つづく

| | コメント (0) | トラックバック (0)

システムの構成

つづき

               自動発注システムの構成

Progre02  Excelクエリ・・・データ取得

        Excelシート・・・テクニカル計算

        ExcelVBA・・・・時間の管理(発注メッセージの表示時刻)

        ExcelVBA・・・・条件に沿った発注メッセージの表示

 ーーーーーーーーーーーーーーーーーー

UWSC  時間が来ればログイン(午前、午後2回)

    VBA発注メッセージ表示により発注(4パターン)

        時間が来れば終了

         ********

 Progre02の初期段階ではツールにしか過ぎなかったものが、ここまで作りこむと、次第に自分の分身の様に成っていきます。津田駒、新生銀行、良品計画とぴたっと売りのタイミングが合えば、気分も良い。(その割に儲かってはいませんが?)

 過去ログを読めば殆どの事が書いてあるのですが改めて載せて行こうかナー(僕自身も忘れていた事を思い出すために過去ログを読見返す事があります。)記録に残しておく事はそう言う意味があります。

 今後の予定 11月22日までに一通り書きます。今年一杯をめどに進め、2008年からの実運用を目指しましょう。(しかし、4回の記事で終わりそう。)

 つづく 

 次回  5月17日からの一連の記事としている事は同じです。そしてそれほど複雑な事はしていません。むしろ単純です。でも文章にすればどうしてもややこしくなります。

 5月17日からの記事に沿って、出来るだけ簡単に書いていこうと思います。判らないところがあれば5月17日からの一連の記事から探してください。

| | コメント (0) | トラックバック (1)

2007年10月16日 (火)

ストップサイン(4)が出た時。

 つづき

スクリーンセーバからの復帰にはログイン用のUWSCのスクリプトの先頭に

POFF( P_MONIPOWER3 )  // モニターON
SLEEP(2)

を付ければ解決しました。

          *

終了のUWSCのスクリプトの最後には直接、電源断をするのではなく

P_SUSPEND2      // サスペンド2 (スタンバイ) P_MONIPOWER    // モニターOFF (省電力モード)

のどちらかで対応すれば良いと思います。

        ********

 今日の反省

先週終わりから3銘柄にストップサイン(4)が出ました。

これらは午前中にサインが出ているので、なにも2:45まで待つ必要もない。この対策として色んなことが考えられます。

 先に3銘柄の動き

 日金工  (1)→(4)→(3)→(1) 後騰がった

 津田駒  (1)→(4)→(6)→(6) 後下がった

 新生銀行  (1)→(4)→(2)→  後下がった

 3銘柄ともサインの出るパターンが違うのです。

それでサインが出れば即売るようにするのか、AM10:45に売るのか、PM2:45まで待つのか?

一旦NOポジにしてその後サインが(2)になればさらに売るのか、(3)になれば買い戻すのか。

しかし、今日の新生銀行の場合をシュミレーションしますと、

   シュミレーション1

午前中に(4)が出た時に持ち株を売る

          ↓↓ 

午後からサインが(2)に変われば2:45にさらに売る   

   シュミレーション2

午前中に(4)が出た時に持ち株を売る

          ↓↓ 

午後からサインが(1)に戻った場合、この場合対応できない

サインが(3)にならないと買い発注はしないからです。そしてその後下がって(2)か(4)が出ないと次に(3)はでません。つまり、その後騰がってしまえば置いていかれるのです。(これをするのは難しい)ここで(1)を(3)に無理やり変えてしまえば、このシステムの根底からひっくり返すことになってしまう。

          *

 津田駒の場合

 (4)が出た時に持ち株を売るだけでなく、ドッテンでさらに売っていれば50円取れます。逆にNOポジにしていて売りサイン(2)(498円)が出た時に空売りをしかければ反って危ないとも言えます。

 そして1日2回の注文を出す場合、そのつど自動で持ち株数の増減をしないといけません。(重複売買の防止、これは簡単に出来る)

  これらザラ場での発注では今までの検証方法で結果を表すことは出来ません。

今日の結論 

 その後騰がるにしろ、下がるにしろ(4)が出れば一旦NOポジにする方が良さそうです。

今後の対策 

 前場(4)が出れば即売り発注を出すようにする。(これはちと難しい)ドッテンするかどうかは裁量、持ち株数は0にする。

 後場にサインが(2)になれば今まで通り売り(新生も*印が無ければ空売りに自動的になっていました。)

 (1)に戻っていれば、明日買い戻すか、そのままにするかは裁量、となります。

 日金工の場合(3)が出た日の2:45に買い戻しこれは今まで通り。

これ以上融通を利かせればシステムでは無くなります。

          *

 20分ごとのデータ更新だから、9:45、10:05、10:25、10:45に発注をすれば良い、午後からは最終の1回だけ、ここでまた問題が(4)、(5)いがいに(2)、(3)にも反応してしまう。当然高値掴み、底での売りも有りうる。

 今日はここまで。

 玉だけ沢山使い休んでいるのと同じ、息子の学費もいるし、TVも壊れかけているので買い換えねばならないし。ここでスカッと20万ほど儲けたい。

| | コメント (0) | トラックバック (0)

2007年10月14日 (日)

自動化テスト その3

 つづき

  テスト3 ストップサイン(4) OR (5)

設定 3   マイナスは売り持ち

      *印は自動解除

        持ち株  サイン  解除

AOC      100    (4)

オークネット  100   (5)

板硝子    2000    (4)   *

日金工      0    (4)

テクモ      0     (5)

黒崎播磨    0     (5)   *

乾汽船    -100    (4)

新生銀行  -2000    (5)

良品計画   -100    (5)   *

      *****

(4)は買い持ちに対するストップ

(5)は売り持ちに対するストップ

ですから*印しを除けて、青字の設定だけが発注されれば成功です。結果は上手く行きました。

AOC 現物売り発注成功

新生銀行 信用売り返済成功

これで全てのパターンで上手く行きました。

          *

 スクリーンセーバでは1回失敗しました。スクリーンセーバの状態でサインが出たのを知らせるBEEP音だけが聞こえてきます。そして大分遅れて画面が現れました。その時には、もうすでに発注作業の途中で上手く行きませんでした。

まだまだ足りない所と、修正箇所、問題が有るようです。

 今回追加した発注用のUWSCスクリプト、その引き鉄となるメッセージボックスを出すVBAソースコードの公開はもうしばらく待ってください。慌てて公開してしまいますと必ず後で訂正箇所が出てしまいます。取引も同じで、システムが完成したからと言って、辛抱たまらず直ぐに運用すれば良いことがありません。(10月始めに私が、売りが出きるようになったと言って、強引に売りから入り損失を出してしまったのが良い例です。アホでした)

 以上で今日のテストは終わります。

 

| | コメント (0) | トラックバック (0)

自動化テスト その2

 つづき

  テスト2 売りサイン(2)

設定 2   マイナスは売り持ち

      *印は自動解除

        持ち株 

AOC      100  現物売り発注成功

オークネット  100 (実際に現物株が無いので途中まで)

新生銀行   2000  * (*印で発注なし)

AOC      100  信用売り発注成功

オークネット  100  信用売り発注成功

テクモ     100  信用売り発注成功

乾汽船    -100  (重複で売り発注無し)

 売りサイン(2)に対する、売買の重複、解除、ドッテン、のテストは全て成功しました。

つづく  

次回は ストップサイン(4)OR(5) 今日中に全てのパターンをテストしたい。 あわせてスクリーンセーバ、スタンバイモードになって画面が変わってしまった時に上手く行くかなどテストします。

      結果が出次第、報告します。

| | コメント (0) | トラックバック (0)

自動化テスト

 テスト計画          テスト結果

日付 2007/10/14 日曜

11:43 自動証券会社ログイン  成功

11:45 Progre02発注マクロ起動  成功

  テスト1 買いサイン(3)

設定 1   マイナスは売り持ち

      *印は自動解除

        持ち株 

新生銀行  -2000   * (*印により発注せず)

テクモ      0    新期買い発注成功

乾汽船    -100  (実際に売り持ちが無いので売りの返済発注せず)

オークネット  100  (100株持っているので発注せず)

乾汽船    -100   新期買い発注失敗  

 最後の乾汽船の新期買いだけが失敗しました。これはVBAのプログラムミスで訂正した結果、発注は成功しました、ただし先にテクモを発注していたので、買いつけ余力が足りなくて最後まで行きませんでした。

 次に新生銀行の自動発注解除の*印を外しテストを続けた結果、売りの返済、新期買い発注は成功しました。

 買いサイン(3)に対する、売買の重複、解除、ドッテン、のテストは全て成功しました。

つづく  

次回は 売りサイン(2) 今日中に全てのパターンをテストしたい。

      結果が出次第、報告します。

| | コメント (0) | トラックバック (0)

2年ほど遅れて

 世間ではRSSなどを使い、バリバリと自動取引きをしておられる方も多いと言うのに、なんともスローなことをしているように感じています。

 しかし、何にしろ、兎に角、実作してみる行為が大事で、例えば子どもの頃(40年前)の学研『科学』の付録みたいな、鉱石ラジオとか、試験管などの実験セットとか、本物ではないけど、こつこつと作っていくのが楽しいのです。それらは直ぐ壊れるし、確かな物では有りませんでした。それでも、理系の僕とすれば、その当時、それらの付録にワクワクしたものです。

 それと同じように、『PM2:45自動発注計画』も本物ではないけど、確実性よりも、簡単に造れる(自分のレベル)事を優先して行こうと思います。それに僕のように楽天証券を使っている人ばかりではないから・・・・

          *

 つづき

昨日 簡単に自動でPCの電源OFFが出来ました。

ところが、次にPCを立ち上げると画面が白くなって、エラーが出るのです。これでは怖くて使えない。

 今日は証券会社が休みなので自動発注のテストを繰り返しやってみる予定です。

 つづく

| | コメント (0) | トラックバック (0)

2007年10月13日 (土)

自動発注の1日の流れ

 つづき

 昨日は本文よりコメントの方が大きくなりました。結構な事だと喜んでおります。色々とためになることが書かれていますので、是非ともそちらもお読みください。

 週間の結果報告をしなければなりませんが。10月より新しい事を始めたので、これまでの日々の管理シートがそれに対応しておりません。簡単に報告すれば、自分の取引は若干のマイナスです。

 今後じっくり考えて日々の管理シートを作り変えようと思っています。(成績がフルはないときは記録をするのがいやと、ほかのブログにも書いてあった。)

 日々の管理シートの問題点

 1. グラフの更新が手間

 2. 売買を行なった場合、色々と計算式の変更がある

これらをもっと簡素化し自動に出来るところは自動にしたい。銘柄を10銘柄に固定すればある程度は作業の省力化が図られると思います。

        ********

 2人より貴重なヒントを頂き、私なりに(ちょっと幼稚)結論を出してみました。その1日の流れを書きます。

 8:30 PC起動、証券会社ホームページを開き板を開く、

     Progre02を開き、少し準備をします。

     UWSCを開きます。

     (これらは全て手動でします。)

     証券会社ホームページから他のサイトへ移動します。色々と情報集めます。特にNY,原油価格など。

          *

          *

PM2:43 自動で証券会社のホームページにログインします。

PM2:45 自動でProgre02がメッセージボックスを表示し、それを元に自動でUWSCが発注してくれます。

PM3:45 Progre02が最後のデータを更新した後、UWSCを使い自動で上書き保存した後、自動的にPCの電源をOFFさせます。

         終 了 

        ********  

 そのスクリプト 

証券会社のホームページにログイン

          *

// IE の表示、その中のリンクアドレスを全て抽出する
IE = CreateOLEObj("InternetExplorer.Application")
IE.Visible = True
IE.Navigate("https://trade.iwaisec.co.jp/webbroker3/0E/pc/WEB3AccountLogin.jsp")    // 指定URL
while True                                    // 接続表示待ち
if (! IE.busy) and (IE.readyState=4) then Break
  sleep(0.1)
wend
COM_ERR_IGN  //COMエラー無視
for i = 0 to IE.document.links.length-1 // リンクアドレスを表示
  wks = IE.document.links[i]
  ifb COM_ERR_FLG
    print "エラーが起こったみたい" 
    break
  endif
//  print wks
next
COM_ERR_RET  //エラー処理復帰

IWAIID=GETID("岩井証券 - Microsoft Internet Explorer")
ACW(IWAIID,1,1,500,400)     // ACWはウィンドーをアクティブにしてくれます
MOUSEORG(IWAIID,1)    
Code=*********              // ユーザID   
SENDSTR(IWAIID,Code,2,TRUE,TRUE) 
sleep(0.5)
Code=******               // パスワード   
SENDSTR(IWAIID,Code,3,TRUE,TRUE) 
sleep(1)
BTN(LEFT,CLICK,170,275,300)  //実行
SLEEP(2)
    
MOUSEORG(0)
CTRLWIN(IWAIID,MIN)

          *

 上半分、//エラー処理復帰までは、へたれさんの意見を借りて、UWSCヘルプよりコードをコピーしました。// 指定URLは各自お使いの証券会社ログイン画面のURLを入れてください。

上書き保存とPC電源OFF 

         *

PROGREID=GETID("Progre02")  // Progre02のID
ACW(PROGREID,1,1,1000,300)     // ACWはウィンドーをアクティブにします
MOUSEORG(PROGREID,1)     // マウスを左上に持ってくる
BTN(LEFT,CLICK,65,35,150)     //  上書き保存ボタンクリック
SLEEP(5)

POFF(P_POWEROFF or P_FORCE)  //電源OFF

         *

これはumarさんの意見を参考にしました。

最後の POFF(P_POWEROFF or P_FORCE) ステイトメントが電源OFFです。

 なおこの場合、Progre02を開いているとします。開いてない時は時間が来ても終了しません。

 また終了前に120秒後に終わってもよろしいですか?と聞くメッセージBOXを表示した方が良いかもしれない。

 より詳しい説明は過去ログを見てください。

 つづく

| | コメント (2) | トラックバック (1)

2007年10月11日 (木)

なぜPM2:45に動かなかったのか

 VBAにPM2:45に起動させるソースを入れ忘れていたからです。

2007/5/26 の記事の最後の方に書いてあります。

指定の時間が来ればマクロを実行させるSUB

http://gyutetu.cocolog-nifty.com/blog/2007/05/vba2_a6d9.html

A銘柄、持ち株0

B銘柄、持ち株100

C銘柄、売建玉100

この3銘柄に売りサインが出たとします。

まず、B銘柄を売ります。次にA銘柄、B銘柄を信用売建します。

C銘柄は信用売建の発注処理はしません。

テストでは上手くいきました。これで重複は防げるし、ドンチャンにも対応は出来ています。

私的には原則信用の買い建てはやめておきます。

それで注文の優先順位を以下のようにします。

  売り注文
   
    返済注文 (信用売りの返済)
   
    買い注文
   
    売建て注文

 もしも、午前中に売っていて株数を入力するのを忘れていたら、PM2:45に2度売ることになるでしょうね。気を付けねばなりません。

 色んなパターンを想定して考えないといけませんからネ。TSの売りの場合、一旦ノーポジにするのか、さらに売建てにするのかも問題ですね。今日はテストですからなにも考えずに新規売り発注で試してみました。

 それで、途中までのテスト(きょうの3銘柄の連続新規売り発注)は成功しました。

 明日も違うパターンでテストしてみよう。

 思うのですが、1度何かを作ってみると、それを応用して色んな物が半分の力と時間で作れるようになりますョ。

つづく

| | コメント (0) | トラックバック (0)

2007年10月10日 (水)

スローだけど

 今回作った新しいシートを使い自動化も出来る。もちろん手動でも十分使い勝手が良い。

 現物の取引きの場合,あまりスマートな方法ではないが、すでに出来ている、データの位置が違うのでVBAの方をそれに合わせて変えていきます。後は信用取引きに対応させるだけ。それに必要な注文項目を考えます。

 色々な心配もありますが、単位株数のみ、成行にして、重複売買だけ防げば良い。売買は原則PM2:45だけと決めているので確実に売買できる。単位株数のみだから全ての銘柄に取引きがあったとしても420万以内でおさまる。

 問題があるとすれば、買いは現物だけど、キャッシュを使いきった時に、信用を使うか、またその場合の切り替え処理をどうするか。

 とにかく証券会社の注文画面を開いて注文の作業を実際にしてみる。

 一応信用売建てのテストも成功。ただしPCの自動立ち上げとかはまだしていません。

| | コメント (0) | トラックバック (0)

2007年5月29日 (火)

PM2:45起動

 つづきUwsc06

まず、UWSCを開きます。

1番右のボタン設定(O)をクリック、設定(X)をクリック

Uwsc08設定フォームのスケジュール設定をする(S)をクリック

スケジュール設定フォームのスクリプトに各uwsを開くUwsc09

タイマーの設定なしのボタンをクリック

        *

タイマー設定フォームをそれどれ以下のようにします。

* 証券会社のホームページを開くUWSファイルの場合Uwsc10_1

時間指定(T)

毎日  14時  30分

* 売り注文UWSファイルの場合

指定Windowが現れた時(W)

Title を ++売り注文++

* 買い注文UWSファイルの場合

指定Windowが現れた時(W)

Title を ++買い注文++

        ********

 これで、全て完了です。

朝、UWSC と エクセルファイル”その日” を開きます。証券会社のホームペイジを開き、その位置と大きさをいつもの状態にしておきます。

ここで正常に動くかどうかもう一度テストしておいた方が良いでしょう。

これで証券会社のホームペイジを閉じ、PCをつけたままで出て行きます。(注 証券会社のホームペイジのアイコンは見える状態にして置いてください。)

 PM2:30になれば証券会社のホームペイジが自動的に開きます。

 PM2:45になれば監視ファイル”その日”のマクロが実行され、売りサイン、買いサインの銘柄があれば、メッセージを出します。

 それにUWSCが上で設定したように、メッセージボックスのタイトルに反応し注文を自動的にしてくれます。

          *

 でも誤発注の恐れがあります、またほかに何かの事故が起こるかもしれません。使用には十分気をつけてください。

 そして、スクリーンセーバがどのように影響するのかまだテストしていません。その他にも色々問題が出てくるでしょう。

 またこれにプラスして,PM3:15にはすべてのWindowを閉じてPCの電源を自動的に切ってくれるようにすれば完璧なんですが、今はこれまでとしておきます。

          *

今までの感想

 色々なサイトを訪問したお陰で、思ったよりも早く自動売買システムを作る事が出来ました。感謝いたします。

 自動売買システムの作り方にはほかにも色々あると思います。UWSCを使わず。VBAからIEを操作する方法もあるようです。優秀なサイトにそのやり方が載っていました。またいつかそれにも挑戦したいと思います。

 しかし、色々なサイトの中には高い料金のセミナーの誘いのホームページなどもあれば、ソフトの売り込みのホームページもありました。中には親切なサイトもありますが。 

 でも、これらのサイトは凄く参考になります。今巷でどのような事がなされているのか,またどのような事に皆が興味を持っているのか、が汲み取ることが出来ますし、 また色々なヒントを得ることも出来ます。

やろうと思えば何も高い料金を払うことはないのです。

 例えばセミナーに参加するとします。地方に住んでいれば交通費も掛かるでしょう。そして最初は入門のレベルから入ります。しかしそれでは目標は達成できません。そこからもう一歩進もうと思えば、本を買って勉強するか、ネットで調べて勉強するかしないと次のレベルには到達しません。

 また、地方に住んでるために、参加したくても参加できない人もいるかもしれません。

 そしてそれをクリアーした人がまた高い料金と交通費を払い次のレベルのセミナーに参加する事になります。それで終わればよいのですが、多分それでもまだ勉強を繰り返さないと目標達成は出来ないのではないでしょうか。(セミナー勧誘ホームページを見れば初級レベルと中級レベルに分けていますから、それから考えてみても想像が付きます。何回セミナーに参加すれば目標達成出来るのか、どれほどお金をつぎ込めば目標達成出来るのか)

 しかし、それ以上のレベルの人は色々のサイトから独自で自分に必要なところを取り出してきて、好きなように作ることが出来るでしょう。

 それなら始めから独学で作ってしまうほうが早いように思うのです。

 私もまだまだレベルは低いですが、少しでもその手助けになれば幸いです。やる気さえあればお金を掛けなくても出来るのですから。最低限の本は必要ですが。

           *

 投資には色々のハンディーがあります。

 地方に住んでるハンディー

 投資ツールのハンディー

 相場環境のハンディー

 投資知識のハンディー

 投資情報のハンディー  

 資金規模のハンディー 

など

出来るだけこれらのハンディーを取り除き皆が同じ条件でこの投資の戦場を戦えればと考えています。そお言う自分が1番重いハンディーを背負っているかもしれませんが、偉そうな事を言って申し訳ありません。

 自分より遥かに優秀なサイトは過去にいっぱい在ったから、かなり自分は遅れていると思うし、スローペースです。またそのサイトからのパクリも多いです。

色々なサイトを書いている人ありがとう。

このシリーズはこれで終わりです。 

また今後色々勉強して、その成果をこのブログに書いていこうと思います。

| | コメント (0) | トラックバック (0)

UWSCの買い発注スクリプト

つづき

買い注文のスクリプト、基本的には売りと同じ、違うところは

メッセージボックスのタイトル("++買い注文++")   

項目数 TEMP[8]

Kabusuu= TEMP[8]  株数の項目が増えます。

後は各ボタンの位置を調べる必要があります。記録(R)をして、メモ帳にそれを落とし調べていきます。

完成は下のようになります。

        ********

DIM TEMP[8]
EXCELORDERWINDOW = GETID("++買い注文++")   // エクセルのメッセージボックスのID
TEMP[1] = GETSTR(EXCELORDERWINDOW,1,1)    // メッセージボックス"++買い注文++"の内容をTEMP[1]に

 FOR i = 2 TO 8
  TEMP[i] = TOKEN(" ",TEMP[1])       // ” ”で区切って各項目をTEMP[i] に入れて行く
 NEXT

IWAIID=GETID("岩井証券 - Microsoft Internet Explorer")  // 岩井証券ウィンドーのID
ACW(IWAIID,1,1,1000,700)     // ACWはウィンドーをアクティブにします
MOUSEORG(IWAIID,1)     // マウスを左上に持ってくる
BTN(LEFT,CLICK,270,80)     //  現物取引ボタンクリック
SLEEP(8)
BTN(LEFT,CLICK,55,160)     //  買い付注文ボタンクリック
SLEEP(5)
Code=TEMP[6]                   // 銘柄コード
SENDSTR(IWAIID,Code,2,TRUE,TRUE)    // 発注表の銘柄コードテキストボックスに銘柄コードを入れる
SLEEP(3)
BTN(LEFT,CLICK,520,260,300)
SLEEP(3)
Kabusuu= TEMP[8]                  // 株数
SENDSTR(IWAIID,Kabusuu,2,TRUE,TRUE)   // 発注表の株数テキストボックスに株数を入れる
SLEEP(3)
BTN(LEFT,CLICK,320,390,300)
SLEEP(3)
BTN(LEFT,CLICK,320,450,300)
SLEEP(3)
BTN(LEFT,CLICK,250,490,300)
SLEEP(3)

CLKITEM(EXCELORDERWINDOW,"OK")     // エクセルのメッセージボックスの"OK"ボタンをくりっくしメッセージボックスを閉じる
MOUSEORG(0)

        ********

メッセージボックスを閉じる前に実際にはパスワードを入れ実行ボタンを押させます。

つづく

これで、UWSCの引き鉄が出来ました。

次回は この引き鉄をどのようにしてPM2:45に引かせるかです

| | コメント (4) | トラックバック (0)

2007年5月27日 (日)

UWSCの売り発注スクリプト

 つづき

まず先に出来あがったスクリプトを載せます。

        ********

DIM TEMP[6]                                  //  変数の宣言
EXCELORDERWINDOW = GETID("++売り注文++")     // エクセルのメッセージボックスのID
TEMP[1] = GETSTR(EXCELORDERWINDOW,1,1)       // メッセージボックス"++売り注文++"の内容をTEMP[1]に

 FOR i = 2 TO 6
  TEMP[i] = TOKEN(" ",TEMP[1])       // ” ”で区切って各項目をTEMP[i] に入れて行く
 NEXT

IWAIID=GETID("岩井証券 - Microsoft Internet Explorer")   // 岩井証券ウィンドーのID
ACW(IWAIID,1,1,1000,700)     // ACWはウィンドーをアクティブにしてくれます
MOUSEORG(IWAIID,1)     // マウスを左上に持ってくる
BTN(LEFT,CLICK,270,80)     //  現物取引ボタンクリック
SLEEP(8)
BTN(LEFT,CLICK,55,190)     //  売付注文ボタンクリック
SLEEP(5)
Code=TEMP[6]               // 銘柄コード   
SENDSTR(IWAIID,Code,2,TRUE,TRUE)    // 発注表の銘柄コードテキストボックスに銘柄コードを入れる
SLEEP(3)
BTN(LEFT,CLICK,340,240,300)
SLEEP(5)
BTN(LEFT,CLICK,920,400,300)
SLEEP(5)
BTN(LEFT,CLICK,320,430,300)
SLEEP(3)
BTN(LEFT,CLICK,320,480,300)
SLEEP(3)
BTN(LEFT,CLICK,250,530,300)
SLEEP(3)

CLKITEM(EXCELORDERWINDOW,"OK")     // エクセルのメッセージボックスの"OK"ボタンをくりっくしメッセージボックスを閉じる

MOUSEORG(0)

        ********

説明

EXCELORDERWINDOW は適当に作った定数

GETID("++売り注文++")の ++売り注文++ は先日VBAで作ったメッセージボックスのタイトル

TEMP[i]  はDIMで宣言した変数

GETSTR(EXCELORDERWINDOW,1,1) はメッセージボックスの内容を取得してTEMP[1]に送ります。

          *

FOR i = 2 TO 6
  TEMP[i] = TOKEN(" ",TEMP[1])      

 NEXT

// トークンの切り出し (指定文字で区切ったものを返す)
戻値 = TOKEN( 区切文字, var 文字列 )

  区切文字: 文字列を区切る文字を指定
  文字列: 文字列は区切られた後、残りの文字列を返す

TEMP[1] =

( 銘柄: 黒崎播磨 銘柄コード: 5352 )

これを” ”で区切っていき TEMP[i]に入れていきます。Vba61_2

TEMP[3] =銘柄:  TEMP[4] =黒崎播磨

TEMP[5] =銘柄コード:  TEMP[6] =5352

となっています。

          *

Code=TEMP[6]               
SENDSTR(IWAIID,Code,2,TRUE,TRUE)    

SLEEP(3)
BTN(LEFT,CLICK,340,240,300)

Codeは適当に作った定数

SENDSTR はウィンドーの2番目のテキストボックスにCode(5352)を送ります

// 文字の送信
SENDSTR( ID, 文字列, [番号, 送信モードフラグ, ACC指定] )
  
  文字列: 送りたい文字列
  番号: 左上から数えたエディトコントロールの順番 (1から指定) 証券会社の画面によってこの番号は変わリます。

          *

SLEEP(3)
BTN(LEFT,CLICK,340,240,300)

この部分はボタンの位置340,240を指定してクリックさせていますがこれではボタンの位置が変わったとき(例えばウィンドーの大きさがなんらかで変わってしまったとき)など的確にボタンが押せません。

それで、本当は下のようにボタンのCaption,("成行")を認識させてチェックボックスをクリックしたいのですが。今はなでかこれが出来ないんですよ。

CLKITEM(IWAIID,"成行")

          *

CLKITEM(EXCELORDERWINDOW,"OK")

自分の作ったメッセージボックスのCaption,("OK")は認識してくれて上手く行きます。,("OK")ボタンをクリックしメッセージボックスを閉じてくれます。

// アイテムのクリック 
// (ボタン、メニュー、チェックボックス、ラジオボタン、リストボックス、コンボボックス、タブコントロール、ビューリスト、ツールバー)
戻値 = CLKITEM( ID, アイテム名, [種別, チェックOn/Off, 番号] ) 
  ID: Windowを識別するID
  アイテム名: ボタン、チェックボックス、ラジオボタンのキャプションの文字
                     種別: チェックするアイテム種別
         CLK_BTN      // ボタン、チェックボックス、ラジオボタン

つづく

| | コメント (0) | トラックバック (0)

UWSCの操作

 つづき

まずUWSCを開きます。Uwsc01_1

1. 右から2番目のボタン、記録(R)をクリック

  試しに証券会社のホームを開いてください。

2. 真中のボタン、再生(P)をクリック

 1.でした作業を自動でしてくれるはずです

3. 左から2番目のボタン、保存(S)をクリック

  適当に名前を付けて保存

4. 先にメモ帳を開いておきます。

  左のボタン、読み込み(L)をクリック

  読みたいuwsファイルをメモ帳にドラッグドロップしてください。

  メモ帳にそのスクリプトが現れます。Uwsc05

  (そのuwsファイルを実行したい時はファイルを選択し、開く(O)ボタンをクリックし、2.再生(P)をクリックしてください。)

  (完成したスクリプトは1番下にあります)

        ********

MMV(120,28,27)
MMV(121,28,505)
BTN(RIGHT,DOWN,121,28,76)
MMV(121,28,15)
BTN(RIGHT,UP,121,28,221)
MMV(121,28,33)
MMV(122,28,375)

MMV(150,33,28)
MMV(151,33,353)
BTN(LEFT,CLICK,151,33,165)
MMV(151,33,4139)
MMV(151,33,1314)
ACW(GETID("Microsoft Internet Explorer","IEFrame"),58,9,842,460,0)
MOUSEORG(GETID("Microsoft Internet Explorer","IEFrame"))
MMV(93,24,412)
MMV(93,24,1441)

MMV(743,74,28)
MOUSEORG(0)
MMV(801,83,215)

この様なわけの分からんスクリプトが出てきます。

          *

説明

MMV(743,74,28)  MMVはマウスの移動 

MMV( x, y, [ms] )
  x, y: 位置 
  ms: 実行までの待ち時間 (ミリセカンド)

 これは全部削除して構いません

その代わり時間を空けるため SLEEP(0.5) を入れます。

ページが変わる時などより確実にするため長く時間を空けます。

// スリープ
SLEEP( 秒 )
  秒: スリープする秒数(最小=0.01)

          *

これで10行ほどのスクリプトになりました。

        ********

BTN(RIGHT,DOWN,121,28,76)
SLEEP(0.5)
BTN(RIGHT,UP,121,28,221)
SLEEP(0.5)
BTN(LEFT,CLICK,151,33,165)
SLEEP(0.5)
ACW(GETID("Microsoft Internet Explorer","IEFrame"),58,9,842,460,0)
MOUSEORG(GETID("Microsoft Internet Explorer","IEFrame"))
SLEEP(0.5)
MOUSEORG(0)

        ********

説明

この5行はデスクトップ上のアイコン操作

アイコンを右クリックし、開く(O)をクリックさせます。(何処にアイコンがあるかで座標は変わります。)

BTN(RIGHT,DOWN,121,28,76)

// マウスボタン
BTN( ボタン, 状態, [x, y, ms] )
  ボタン:  LEFT, RIGHT, 

  状態:  CLICK(0), DOWN(1), UP(2), 

  x, y: 位置 

  ms: 実行までの待ち時間 (ミリセカンド)

           *

Uwsc04 ACW(GETID       ACWはウインドーをアクティブにします。そして位置、幅、高さを決めます。GETIDはウィンドーのタイトル収得ですがタイトルが分かっているので適当な定数IWAIIDを作り直接それをいれます。

IWAIID=GETID("岩井証券8707 - Microsoft Internet Explorer")
ACW(IWAIID,0,0,1000,500)

となります。(使っておられる、証券会社のWindowのタイトル を入れて下さい。)

          *

// ウィンドウ状態変更
ACW( ID, x, y, [幅, 高さ, ms] )
  ID: Windowを識別するID
  x, y: Window位置
  幅, 高さ: Window幅,  高さ

// 指定Window の ID を返す
戻値 = GETID( タイトル, 

  タイトル: 識別したいWindowのタイトル (タイトルの一部分だけでもOK)

          *

MOUSEORG(GETID("Microsoft Internet Explorer","IEFrame"))
SLEEP(0.5)
MOUSEORG(0)   //スクリーン座標に戻す時はゼロを指定

// マウス座標を相対座標にする、 またはマウスとキー情報を直接ウィンドウへ送る
MOUSEORG( ID, [基準指定 ] )

          *

上を下のように変えます。

MOUSEORG(IWAIID,0)
SLEEP(4)

    :

MOUSEORG(0)

となります。

実際には : の間にログイン画面に入り、口座番号、パスワードを入れるスクリプトを書きます。直接画面のテキストボックスに入れる方法とキーボードの操作を記録させて使う方法があります。記録させる方法は安定性に問題がありますがスクリプトを書く必要が無いので簡単です。後で上でしたように無駄な部分を省いて行き、座標の微調整をしていきます。

  ウィンドーが変わればそのウィンドータイトルも変わるので変えて下さい。

 まずはキーボードの操作を記録(最初の1.の操作です。)を試してください。ここの部分は秘密の部分なのでよろしくお願いします。

それで、最終的に以下のようになりました。

        ********

BTN(RIGHT,DOWN,121,28,76)
SLEEP(0.5)
BTN(RIGHT,UP,121,28,221)
SLEEP(0.5)
BTN(LEFT,CLICK,151,33,165)
SLEEP(0.5)
IWAIID=GETID("岩井証券8707 - Microsoft Internet Explorer")
ACW(IWAIID,0,0,1000,500)
MOUSEORG(IWAIID,0)
SLEEP(0.5)
MOUSEORG(0)

        ********

つづく

次回は 売り注文、買い注文のスクリプトを書きます。

アイコンを右クリックし、開く(O)をクリックさせます。

| | コメント (0) | トラックバック (0)

2007年5月26日 (土)

VBAの記述.2

つづき

 売り注文、買い注文のメッセージボックスを表示するSUB

それほど難しいプログラムではありません。

        ********

Sub 売り注文()
'
' 売り注文 Macro
' マクロ記録日 : 2007/5/21  ユーザー名 : ペニー
'
    Dim iCount As Long

        iCount = 3
       
    For iCount = 0 To 75 Step 5
   
        If Worksheets("Sheet2").Range("C3").Offset(iCount, 0) = 2 Or Worksheets("Sheet2").Range("C3").Offset(iCount, 0) = 4 Then
    
            If Worksheets("Sheet2").Range("A3").Offset(iCount, 0) = 1 Then
            
                 MsgBox "銘柄: " & Worksheets("Sheet2").Range("B3").Offset(iCount, 0) & vbCr & "銘柄コード: " & Worksheets("Sheet2").Range("A2").Offset(iCount, 0), vbOKOnly, "++売り注文++"
                
               
            End If
            
            
        End If
       
     Next
'
End Sub

        ********

説明

If Worksheets("Sheet2").Range("A3