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


移動平均クロス戦略とは?
短期と長期の移動平均を計算し、ゴールデンクロス/デッドクロスで売買。
VBAでの実装
Excelで移動平均を計算。(5日と25日)
25日を5日がうわ抜ければ、ゴールデンクロス。下抜ければ、出℃クロス。
しかしこれでは、25日線の上に5日線があればゴールデンクロスとなるので、独自に前日までの、MAを算出し、 25MAからの5MAのGC,25MAより上の5MAからのDCを表現するように加増しました、
移動平均クロス
Excel準備:
- 楽天RSSで株価データ取得
- 過去14日分の「高値・安値・終値」データを記録
- 現在価格をA2に記録
過去14日分の「高値・安値・終値」株価データ取得
こちらはすでに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万円稼ぐ投資法にも使えるのでは?と思ました。
次回はこのコードを書いてみたいと思います。