チャートで売買してる人の中には、側面に表示されている縦軸を無視して、いつも同じポジションサイズで売買してる人がいます。

また、縦軸をきちんと認識していても、値幅での比較には自ずと限界があります。


そこで、前日比の変動値幅を、前日比の対数変動率に正規化する必要があります。

ここでは値動きを対数変動率に変えるプログラムを書いてみます。

プログラム名は”Logreturn”です 、まずは、変数の宣言。

#region Variables
private int period = 1
#endregion


描画用の追加、バーの太さ2の青色の棒グラフです。

色やバーの種類を変えたい場合は、Blueを選択し、Ctrl + スペースキーのショートカットキーで、自動補完が出来ます。

protected override void Initialize()
{
Add(new Plot(new Pen(Color.Blue, 2), PlotStyle.Bar, "前日比リターン"));
}


本体部分です。

CurrentBar:データをロードして、現在何本目のバーに当たるかを返します。

Input :プロパティで選択されたデータの種類(通常はClose[0])を返します。

ここで、数学関数の登場です。Math.Log(本日/前日)で対数変動率の完成です。

protected override void OnBarUpdate()
{
int barsAgo = Math.Min(CurrentBar, period);  
Value1.Set(Math.Log((Input[0]) / Input[barsAgo]));
}


以下、プロパティ変数です。

#region Properties
[Browsable(false)]
[XmlIgnore()]
public DataSeries Value1
{
get { return Values[0]; }
}
[Description("")]
[GridCategory("Parameters")]
public int Period
{
get { return period; }
set { period = Math.Max(1, value); }
}
#endregion


累積リターンの出し方は以下。

チャート画面かマーケットアナライザーからインディケータ -> SUM -> Inputseries -> Logreturn で出せます。 

 

しかし、これではデータの大小の比較時に分かりにくさがあります。

そして次回は、前日比の対数変動率を標準化するプログラム、Zスコア指標を書いてみたいと思います。  


東大理系卒の人気クオンツによる戦略とノウハウDVD


↓ブログランキングご協力お願いします!
シストレナビ 人気ブログランキングへ にほんブログ村 為替ブログ FX システムトレード派へ