|
|
||||
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 や株価などでゴールデンクロス、デッドクロスのストラテジーも作成してみてください。 |