ホーム | アプリケーション | Tips | ダウンロード | プログラム
| コラム

CBアプリ工房


Tips >

単純移動平均線でのストラテジーをマクロと VBA で作る

更新 : 2008/06/15

 



解説:
Yahoo!ファイナンスなどの株情報サイトから株価(4本値)を取得して、その値とテクニカル指標を組み合わせ、ストラテジーを工夫していくのがシステムトレードとして一般的なスタイルだと思います。

今回は、テクニカル指標としては、もっとも馴染みのある SMA(単純移動平均線)の算出を試みてみます。
株価にいろいろなテクニカル指標を組み合わせていくと、ストラテジーのパターンが広がります。SMA の算出結果からは、長期と短期のクロスシグナルを利用した売買なども考えられます。
前回同様、セルでの入力と VBA でのコーディングをみていきます。

解説は、"sample2.xls" を参照しながら行います(こちらからダウンロード)。

サンプルコード:
SMA の計算は、単純に任意日数分の終値を足して日数分で割り、平均値を出すだけです。5日の SMA であれば、セル G4 に =Average(E4:E8) と代入し、それをセル G26 までコピー(コピーの仕方はこちら)すれば終了です。
SMA の算出が済んだら、今度は、それを利用してストラテジーを記述します。

(例 1)
まずは、誰でも思いつく簡単な売買ルール。株価の終値が SMA(5)を上抜けたら買い、下抜けたら売る、とします。セル H4 には =IF(E4>G4,1,-1) と代入。意味は、もし当日の終値(セル E4)がSMA(セル G4)より高ければセル H4 に 1 と表示し、安いか同値なら -1 を表示、ということです。

(例 2)
あるいは、終値が SMA(5)を上抜け、前日の終値より高ければ買い、逆だったら売り、などもよくあるストラテジーです。セル I4 に =IF(AND(E4>G4,E4>E5),1,-1) と代入すれば実行されます。

このように条件式を少し変えるだけで、売買シグナルは変わり、トレードの結果も左右されます。
システムトレードは、自分の得意パターンを探し出せるかどうかがポイントになります。そこが楽しみでもあり難しいところでもあります。

使用例:
(例 1)の条件式を VBA で書いて見ます(マクロの記述方法はこちら)。

Sub Macro2()
    Dim i As Integer

    For i = 4 To 26
        'SMAの算出
        Cells(i, 10) = WorksheetFunction.Average(Range(Cells(i, 5), Cells(i + 4, 5)))

       '条件式
        If Cells(i, 5) > Cells(i, 7) Then
            Cells(i, 11) = 1
        Else
            Cells(i, 11) = -1
        End If
    Next

    'セルの形式を整える
    Range(Cells(4, 10), Cells(26, 10)).NumberFormatLocal = "0"

End Sub

SMA の算出で記述している、 WorksheetFunction オブジェクトは Visual Basic から Excel ワークシート関数呼び出す時に使用します。
最後にセルの形式を整えているのは、Average で平均値を求めているので小数桁を省くためです。
結果は、列 J に SMA が、列 K に売買シグナルが表示されます。

25日などの長期 SMA を計算し、5日 SMA と組み合わせ、SMA や株価などでゴールデンクロス、デッドクロスのストラテジーも作成してみてください。



[ ホーム | ページトップ | ブック | リンク | サイトマップ ]
Copyright(c) 2003 Shibu All rights reserved.