|
||
解説: シェアウエアの検証ソフトで各テクニカル指標を使った、ストラテジーのサンプル(条件式)を公開する。これはライセンスキーを購入した人にだけ行うサポートだ。 株価取得->テクニカル指標作成->ストラテジー記述(ここでサンプルを参考にしてもらう)->検証。 各テクニカル指標で考えつくストラテジー: ・SMA 株価と移動平均線のクロス 株価と高値/安値移動平均線のクロス(チャネルシステム) 終値と移動平均線の乖離率 移動平均線2本のクロス 移動平均線2本の乖離率 ・EMA ・RSI RSIのクロス xxxRSI は、今の相場が強弱どちらに傾いているかを調べ、買われ過ぎ売られ過ぎを表す指標です。計算方法は、(期間内の値上がり幅の合計)÷(期間内の値上がり幅の合計+期間内の値下がり幅の合計)×100(%)で求まります。まとめて計算すると分かりづらいので、値上がり幅の合計と値下がり幅の合計を一度セルに格納して、それから RSI を計算します。 まず値上がり幅は =IF(E4>E5,E4-E5,0) となり、セル G4 に代入します。値下がり幅は、セル H4 に =IF(E4<E5,E5-E4,0) と代入します。この値をもとに、期間 5日のRSI であれば =AVERAGE(G4:G8)/(AVERAGE(G4:G8)+AVERAGE(H4:H8))*100 で算出します。これはセル I4 に代入しておきます。次にセルを必要行分コピー(コピーの仕方はこちら)しておきます。 RSI の算出が済んだら、ストラテジーを記述します。 (例 1) 最初はよく使われるストラテジーからです。セル J4 に =IF(I4<30,1,IF(I4>70,-1,0)) と代入します。これは、RSI の値(セル I4)が 30 より小さくなったら買い、70 より大きくなった売る、という意味です。0 は買いでも売りでもなくそのまま(前日の売買シグナルと同じ)を意味します。 (例 2) ふたつ目もよく使われます。30 を上抜けたら買い、70 を下抜けたら売り、というものです。セル K4に、 =IF(AND(I4>I5,I5<30),1,IF(AND(I4<I5,I5>70),-1,0)) と代入します。 RSI は一般に、70〜80 以上を売り、20〜30 以下を買いとされていますが、いろいろな数値を試してみるといいと思います。 使用例: (例 1)の条件式を VBA で書いて見ます(マクロの記述方法はこちら)。 Sub Macro5() Dim i As Integer Dim up As Double Dim down As Double For i = 29 To 4 Step -1 '値上げ幅 If Cells(i, 5) > Cells(i + 1, 5) Then Cells(i, 12) = Cells(i, 5) - Cells(i + 1, 5) Else Cells(i, 12) = 0 End If '値下げ幅 If Cells(i, 5) < Cells(i + 1, 5) Then Cells(i, 13) = Cells(i + 1, 5) - Cells(i, 5) Else Cells(i, 13) = 0 End If Next For i = 25 To 4 Step -1 up = WorksheetFunction.Average(Range(Cells(i, 7), Cells(i + 4, 7))) down = WorksheetFunction.Average(Range(Cells(i, 8), Cells(i + 4, 8))) Cells(i, 14) = up / (up + down) * 100 If Cells(i, 14) < 30 Then Cells(i, 15) = 1 Else If Cells(i, 14) > 70 Then Cells(i, 15) = -1 Else '買いでも売りでもない(そのまま) Cells(i, 15) = 0 End If End If Next 'セルの形式を整える Range(Cells(4, 14), Cells(30, 14)).NumberFormatLocal = "0.00_ " End Sub バックテストする場合、RSI の数値をいろいろ変える必要があります。VBA ならそう手間ではありません(作り方にもよります )が、セルを直接修正するのは、時間もかかるし、間違いやすくもあります。テストの信憑性にも関わってきますので(今後のことも考えて)、ぜひVBA に慣れておくことをお勧めします。 |