【解析】RSI | 勝てば官軍! ~ 日経225システムトレード編

【解析】RSI

RSI=N日間の値上がり幅平均÷(N日間の値上がり幅平均+N日間の値下がり幅平均)×100

という定義がどのように実装されているか見ていきたいと思います。


-----------------------------------------------

Input : Period(14), LPercent(30), SPercent(70);
Var : value(0);

value = RSI(Period);

## 買/売決済
If CrossUP(value, LPercent) Then
{
Buy();
}

## 売/買決済
If CrossDown(value, SPercent) Then
{
Sell();
}

-----------------------------------------------


061-RSIのソースコードです。

キーになるのはRSI()関数です。

結果に対してLPercent(デフォルトでは30)を上抜きすれば買い、

70を下抜きすれば売りとなっています。


-----------------------------------------------

/* Description : (R)elative (S)trength (I)ndex
*
* Provided By : YesStock Inc. (c) Copyright 2006
* E-Mail : webmaster@yesstock.com
*/

Input : Period(Numeric);
Var : value1(0), value2(0);

value1 = C - C[1];

if value1 > 0 Then
{
value2 = value1;
}
Else
{
value1 = 0;
value2 = C[1]-C;
}

RSI = AccumN(value1, Period) / AccumN(value2, Period) * 100;

-----------------------------------------------


RSI()関数のソースコートです。

value1とvalue2の値がキーになっています。

value1は当日終値-前日終値がプラスならばその値、マイナスならば0となります。

 (つまり、値上がりした日の値上がり幅のみを値としています)

value2は当日終値-前日終値の絶対値となります。

AccumN()関数によりN日の値を算出しています。


-----------------------------------------------

/* Description : (Accum)ulation N
*
* Provided By : YesStock Inc. (c) Copyright 2006
* E-Mail : webmaster@yesstock.com
*/

Input : Value(NumericSeries), Period(NumericSimple);
Var : Counter(0);

var1 = Value;

For Counter = 1 To Period - 1
Begin
var1 = var1 + Value[Counter];
End

Accumn = var1;

-----------------------------------------------


AccumN()関数のコードです。

RSI()関数から渡されたValueを指定期間 - 1日分加算しています

戦略【061-RSI】で14日指定したとき、

 Value[1] ~ Value[13]までを計算しているようです。

当日分(Value[0])は計算していないようです。