Public Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

Dim Cond As Long

Cond = Sheets("Summary").Cells(4, 2).Value
If (Cond > 0 And Sheets("Summary").Cells(1, 2).Value = 1 And Sheets("Summary").Cells(2, 2).Value = 0) Then
    Sheets("Summary").Cells(2, 2).Value = 1
    Call OrderProcessing
End If

End Sub





Public Sub OrderProcessing()

Dim i, j As Long
Dim SN, BC As String 'Sheet Name, Brand Code
Dim FoundPos As Variant
Dim Pos As Long 'Pos ポジションを持っていれば1,持ってなければ0
Dim TA As Long 'Total Amount 所持している株の合計金額
Dim IC As Long 'Investment Capacity 投資余力
Dim LP As String 'Limit Price 指値売を入れる金額
Dim NO As String 'Number of Orders 株の発注数
Dim Today As Date
Dim Todayymd As String
Dim EDate As Date
Dim ED As String 'Expiration Date 岡三では１０日間注文を有効にできる
Dim OID As String 'Order ID 発注ID。発注をかけるごとに進める。
Dim PID As Long 'Processing ID 注文ID。出した注文の処理に使用する。
Dim OT As Date 'Order tiime 最新の注文が入った時刻 Variantで宣言？
Dim PO As Range
Dim POR As Long 'Processing Order Row 処理中の注文の行番号 
Dim NS As String 'Number of Shares held 保有株数
Dim Order As String
Dim NumElement1, NumElement2 As Long
Dim PauseTime, Start As Long

IC = 100000 '投資余力
NO = 100 '1注文あたりの発注株数
Today = Date
EDate = Date + 9 '売り注文の有効期限 10でもOK？
Todayymd = Format(Today, "YYYYMMDD")
ED = Format(EDate, "YYYYMMDD")

PauseTime = 3



For i = 1 To 10 '10銘柄分のシート(b1 - b10)を1枚ずつ確認していく

    Pos = 1 'ポジションの条件を初期化
    SN = "b" & i    'シート番号を定義
    BC = Sheets(SN).Cells(1, 1).Value   'シートの銘柄コードを取得
    
    TA = WorksheetFunction.Sum(Sheets("Summary").Range(Sheets("Summary").Cells(15, 15), Sheets("Summary").Cells(25, 15))) '現在持っている株の約定金額合計　現状10銘柄(10行)分をモニタ
    
    Set FoundPos = Sheets("Summary").Range(Sheets("Summary").Cells(42, 1), Sheets("Summary").Cells(62, 1)).Find(What:=BC)   'ある銘柄コードBCの株を現在保有しているか確認　未保有 Pos=0, 保有 Pos=1
    
        If FoundPos Is Nothing Then
            Pos = 0
        Else
            Pos = 1
            Sheets(SN).Cells(1, 10).Value = Todayymd
        End If
    
    '以下、発注命令。発注時の条件は、1. 買いシグナルが出ていること、2. その銘柄を現在保持していないこと、3.購入余力があること、4.本日取引した銘柄でない
    '以上の条件が整ったときに発注(成行買) ⇒ 買い注文の約定を待つ ⇒ 約定したら指値LPで売りを入れる。
    
    If _
        Sheets(SN).Cells(4, 14).Value = 1 _
        And Pos = 0 _
        And IC - TA > Sheets(SN).Cells(4, 6).Value * NO _
        And Todayymd > Sheets(SN).Cells(1, 10).Value _
    Then
        
        OID = Sheets("Summary").Cells(5, 2).Value '発注IDをセルから読み込む
        OID = OID + 1
        LP = Sheets(SN).Cells(4, 12).Value
        
        'Sheets("Summary").Cells(1, 5).Formula = "=NEWORDER(" & BC & ", """", ""3"", ""0"", ""0""," & NO & ", ""T"", """", """", ""1"", ""1"", ""password""," & OID & ", """", """", ""1"", ""1"", R2C5)"
        Order = NEWORDER_CL(BC, "", "3", "0", "0", NO, "T", "", "", "1", "1", "password", OID, "", "", "1", "1") '成行で買注文を出す
        Sheets("Summary").Cells(5, 2).Value = OID + 1 '発注IDを更新しておく
    
        '保有状態をモニタ　保有株が発注数NOになるまで待つ
        Do
            Application.CommandBars("岡三RSS2").Controls.Item("更新").Execute
            
            Start = Timer
            Do While Timer < Start + PauseTime
                DoEvents
            Loop
            
            Set FoundPos = Sheets("Summary").Range(Sheets("Summary").Cells(15, 1), Sheets("Summary").Cells(35, 1)).Find(BC)
            If FoundPos Is Nothing Then
                NS = 0
            Else
                POR = FoundPos.Row
                NS = Sheets("Summary").Cells(POR, 12).Value
            End If
            
        Loop While NS <> NO
    
        'Sheets("Summary").Cells(1, 5).Value = "Wait"
        
        'ここまでが買い注文の処理
        
        
        
        
        
        'ここから売り注文の処理
        
        '現在入っている注文の要素数(NumElement1)をカウント　売り注文が入ると1つ増えるはず(⇒NumElement2)なのでこれを確認する
        NumElement1 = 0
        For j = 15 To 35
            If Sheets("Summary").Cells(i, 21) = "" Then
                
            Else
                NumElement1 = NumElement1 + 1
            End If
        Next
        
        '指値LPで売り注文を出す。
        'Sheets("Summary").Cells(1, 5).Formula = "=NEWORDER(" & BC & ", """", ""1"", ""1"", " & LP & "," & NO & ", ""O"", " & ED & ", """", ""1"", ""1"", ""password""," & OID & ", """", """", ""1"", ""1"", R2C5)"
        Order = NEWORDER_CL(BC, "", "1", "1", LP, NO, "O", ED, "", "1", "1", "password", OID, "", "", "1", "1")
        Sheets("Summary").Cells(5, 2).Value = OID + 1 '発注IDを更新しておく
        
        NumElement2 = 0
        
        Do
            Application.CommandBars("岡三RSS2").Controls.Item("更新").Execute
            
            Start = Timer
            Do While Timer < Start + PauseTime
                DoEvents
            Loop
            
            For j = 15 To 35
                If Sheets("Summary").Cells(i, 21) = "" Then
                    
                Else
                    NumElement2 = NumElement2 + 1
                End If
            Next
        Loop While NumElement2 <> NumElement1 + 1
            
        'Sheets("Summary").Cells(1, 5).Value = "Wait"
        
    End If
    '売り注文の処理終了

Next '次のシートの処理へ

Sheets("Summary").Cells(2, 2).Value = 0
End Sub
