全自動売買戦略:移動平均クロス戦略版をChatGPTくんと相談しながら、Excel VBA で処理作成

移動平均クロス戦略とは?

 短期と長期の移動平均を計算し、ゴールデンクロス/デッドクロスで売買。

VBAでの実装

 Excelで移動平均を計算。(5日と25日)
 25日を5日がうわ抜ければ、ゴールデンクロス。下抜ければ、出℃クロス。
 しかしこれでは、25日線の上に5日線があればゴールデンクロスとなるので、独自に前日までの、MAを算出し、 25MAからの5MAのGC,25MAより上の5MAからのDCを表現するように加増しました、

移動平均クロス

Excel準備:

  • 楽天RSSで株価データ取得
  • 過去14日分の「高値・安値・終値」データを記録
  • 現在価格をA2に記録
過去14日分の「高値・安値・終値」株価データ取得

 こちらはすでにATR戦略で取得しているのでこのデータをそのまま使用。

全自動売買戦略:ATRトレール版をChatGPTくんと相談しながら、Excel VBA で処理作成

ATRトレールとは? ATRトレール(Average True Range Trail) 損失を最小限にしつつ利益を最大化する仕組み。 ATR(平均的な価格変動幅) を基にトレール型のストップ(…

 


Sub MA_Cross_Order()
    Dim shortMA As Double, longMA As Double
    Dim crossSignal As String
    Dim priceRange As Range
    Dim i As Integer

    ' 短期(5日)移動平均
    Set priceRange = Sheet1.Range("B2:B6")
    shortMA = Application.WorksheetFunction.Average(priceRange)

    ' 長期(25日)移動平均
    Set priceRange = Sheet1.Range("B2:B26")
    longMA = Application.WorksheetFunction.Average(priceRange)

    If shortMA > longMA Then
        crossSignal = "BUY"
    ElseIf shortMA < longMA Then
        crossSignal = "SELL"
    Else
        crossSignal = "NONE"
    End If

    If crossSignal <> "NONE" Then
        Call PlaceOrder(crossSignal)
    End If
End Sub

Sub PlaceOrder(signal As String)
    ' 楽天APIとの連携(外部EXEやDLL等を通じて実行)
    Dim cmd As String
    If signal = "BUY" Then
        cmd = "注文APIコマンド -買い"
    Else
        cmd = "注文APIコマンド -売り"
    End If
    ' Shell関数等で外部バッチやPython呼び出し
    Shell cmd, vbNormalFocus
End Sub

 ソースを読んでみると、ちょっと譜に落ちない部分が出てきた。
  prevClose = Sheet1.Cells(i + 1, 4).Value
 prevClose ? 前日の終値? なんで次の行を見ているのだろう?
 ChatGPTに聞いてみる。
 なるほど。間違いというか、このサンプルソースは、14日データを取得後、日にち逆順に並び変えてからの処理のようだ。
 ソースに疑問点があったら、聞いた方がよい。
 古い情報で作っていて、動かない場合とかも結構ある。


最後に

 MAは予想通り簡単だった。今回、前日の株価が、MAを突き受けるときのコードは書いていないが、1,2行追加でできます。
 これができれば、先日YouTubeでみた、1日5万円稼ぐ投資法にも使えるのでは?と思ました。
 次回はこのコードを書いてみたいと思います。

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です