【実装】】%Fと移動平均の交差 | 勝てば官軍! ~ 日経225システムトレード編

【実装】】%Fと移動平均の交差

http://ameblo.jp/traderssystem/entry-10104973420.html


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

Input : F_Period(5), Ma_Period(3);

Var : PercentF(0);


//%F=100×(終値-終値の予測値)/終値
//EasyLanguageではLinearRegValue()関数を利用
PercentF = 100 * (Close[0] * LRL(Close, F_Period)) / Close;
//PercentF = 100 * (Close[0] * LRS(Close, F_Period)) / Close;


//本日5日%Fが3日単純移動平均を上抜くとき
If CrossUp(PercentF, Ma(PercentF, Ma_Period)) Then {

//翌日の寄り付きで買い
Buy("SW3001新規買", AtMarket);
}


//本日5日%Fが3日単純移動平均を下抜くとき
If CrossDown(PercentF, Ma(PercentF, Ma_Period)) Then {

//翌日の寄り付きで売り
Sell("SW3001新規売", AtMarket);
}

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


LRL()関数が難しいですね。

終値の予測値というアイデアからこれを実装できれば

かなりの実力を持っているといえるのではないでしょうか?

(私はEasy Languageのソースコードを流用しました)


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

/* LRS : (L)inear (R)egression (L)ine
*
* Provided By : YesStock Inc. (c) Copyright 2006
* E-Mail : webmaster@yesstock.com
*/

Input : Value(NumericSeries), Period(NumericSimple);
Var : value1(0), value2(0), AccumValue(0);

AccumValue = accum(1);

value1 = ma(AccumValue, Period);
value2 = ma(Value, Period);

LRL = (ma(Value * AccumValue, Period) - value1 * value2) /
(ma(AccumValue^2, Period) - (ma(AccumValue, Period)^2)) * (AccumValue - value1) + value2;

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


LRL()関数です。

YesStock社、コメント間違えてますね。


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

/* LRS : (L)inear (R)egression (S)lope
*
* Provided By : YesStock Inc. (c) Copyright 2006
* E-Mail : webmaster@yesstock.com
*/

Input : Price(NumericSeries), Len(NumericSimple);
Var : X(0), Num1(0), Num2(0), SumBars(0), SumSqrBars(0), SumY(0), Sum1(0), Sum2(0);

If Len == 0 Then
LRS = 0;

SumBars = Len * (Len - 1) * .5;
SumSqrBars = (Len - 1) * Len * (2 * Len - 1) / 6;
Sum1 = 0;

For X = 0 To Len - 1 Begin
Sum1= Sum1 + X * Price[X];
End;

SumY = AccumN(Price, Len);
Sum2 = SumBars * SumY;
Num1 = Len * Sum1 - Sum2;
Num2 = SumBars * SumBars - Len * SumSqrBars;

If Num2 != 0 Then
LRS = Num1 / Num2;
Else
LRS = 0;

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


LRS()関数です。

そのうち解読していきたいと思いますが、

参考になるサイトがあれば教えてほしいです。。。