12月1日(月)のレーザーテック研究です。
11月27日の終値の27850円が、いわゆる窓を空けて上昇した日の終値としてのベースラインです。
しかし、場が始まって直後の28720円までの買い上がりは一体全体、どこのどなたが仕掛けたのでしょう?
さすがに、27850円からの乖離が1.03倍もあります。前日比3%高。
次の節目が先週末の終値の28080円。
分足チャート(3分足を見ております。)を見ると、9時半前後にこのライン上で揉み合っております。しかし、支えきれずにベースラインの27850円めがけて怒涛の下げ。
このベースラインの27850円が前場の終了までの揉み合いポイントとなっております。
後場は切り返したものの、28080円までの上昇には至らず、ベースラインを行ったり来たり。
前場で外出したためノートレードですが、このような節目のラインを意識するかしないかで、売りから入るか、買いから入るかの分かれ目となります。このあたりの塩梅をきちんとテクニカルにあらかじめ決めることができるかどうかがポイント。
今日の午後は、今最終的に検証をかけているVBAのバグ潰し。最初からプロンプトをきちんと定義し直し、Gemini-3に依頼しました。その最終回答が以下のVBAです。
' --- 1. Worksheet_Calculate (トリガー) ---
Private Sub Worksheet_Calculate()
On Error Resume Next
' まず即時チェック
Call CheckSignal
' 0.1秒後にもう一度チェック(再計算後を拾う)
Application.OnTime Now + TimeValue("0:00:00.1"), "'" & Me.CodeName & ".CheckSignal'"
End Sub
' --- 2. CheckSignal (メインロジック - 変更後のコード) ---
Public Sub CheckSignal()
On Error GoTo ExitHandler
Application.EnableEvents = False
Dim ws As Worksheet
Set ws = Me
' 状態を記憶するための定数とStatic変数
Const STATE_OFF As Long = 0
Const STATE_BUY_ACTIVE As Long = 1
Const STATE_SELL_ACTIVE As Long = 2
' Static変数をLong型に変更し、3つの状態を記憶できるようにする
Static prevSignalState As Long ' 0:OFF, 1:BUY系ON, 2:SELL系ON
Dim currentSignal As String
Dim isBuyActive As Boolean
Dim isSellActive As Boolean
Dim currentSignalState As Long
' --- 現在のシグナルを取得 ---
currentSignal = Trim(UCase(CStr(ws.Range("J4").Value)))
' --- 現在の上昇系/下降系のシグナル状態を判定 ---
isBuyActive = (currentSignal = "BUY" Or currentSignal = "STBUY")
isSellActive = (currentSignal = "SELL" Or currentSignal = "WKSELL")
' 現在の状態を設定 (BUY系とSELL系が同時にONになることは関数ロジック上ない)
If isBuyActive Then
currentSignalState = STATE_BUY_ACTIVE
ElseIf isSellActive Then
currentSignalState = STATE_SELL_ACTIVE
Else
currentSignalState = STATE_OFF
End If
' ************ J3セルの値の更新ロジック ************
' 1. BUY系のシグナルがONになった瞬間 (OFF -> BUY系ON、または SELL系ON -> BUY系ON)
If currentSignalState = STATE_BUY_ACTIVE And prevSignalState <> STATE_BUY_ACTIVE Then
' BUY系の条件を満たした最初の瞬間に値を記録
ws.Range("J3").Value = ws.Range("F5").Value
' 2. SELL系のシグナルがONになった瞬間 (OFF -> SELL系ON、または BUY系ON -> SELL系ON)
ElseIf currentSignalState = STATE_SELL_ACTIVE And prevSignalState <> STATE_SELL_ACTIVE Then
' WKSELL系の条件を満たした最初の瞬間に値を記録
ws.Range("J3").Value = ws.Range("F5").Value
' 3. 両方のシグナルがOFFになった瞬間
' (BUY系ON -> OFF) または (SELL系ON -> OFF)
ElseIf currentSignalState = STATE_OFF And prevSignalState <> STATE_OFF Then
' どちらの系統のシグナルも満たさなくなったのでJ3をクリア
ws.Range("J3").ClearContents
End If
' ************ J3セルの値の更新ロジック (終了) ************
' --- 状態を記憶 ---
' 次回実行時に、現在の状態を前回の状態として利用する
prevSignalState = currentSignalState
ExitHandler:
Application.EnableEvents = True
End Sub
このコードが一瞬のうちに生成されます。ちょっと凄い時代になりましたね。
明日以降にこのコードの実検証作業に入ります。