読者です 読者をやめる 読者になる 読者になる

FXボーグ | テクニカル実験室

テクニカル分析を使った自動売買プログラムの開発に挑戦!

スポンサーリンク

ZorroからRを使うのはとても簡単。

Zorro R言語

ZorroからRを呼び出せるようなので試してみました。今回行ったのはハースト指数です。

Hurst 指数 (Hurst exponent) とは

 時系列データに含まれるある種の “規則性” を表す特徴量であり, もともとは, 英国人水天文学者 Hurst によるナイル 川の水位時系列データの研究で発見された「Hurst の法則」を出発点とする.

 

通常は, 時系列のトレンドの持続性の程度を表す指標として扱われ, 時系列 の予測可能性, 換言すれば市場価格の効率性を評価する際に用いられる.

 

(「金融市場の高頻度データ分析(PDF)」より引用。)

具体的にはこんな感じです。

USDJPY1時間足の場合

f:id:fxborg:20161103005231p:plain

  • 0.5より大・・・トレンドが継続する系列
  • 0.5付近   ・・・ランダムウォーク
  • 0.5より小・・・反転しやすい系列 

ZorroからRを使用するには

ZorroからRを使用するには、ZorroのワーキングフォルダにあるZorro.iniを編集します。

(通常はC:\users\●●●●\zorro\Zorro.ini です。) 

f:id:fxborg:20161103063543p:plain

 Zorro.iniを開いてRTermPathにRTerm.exeへのパスを記述します。

f:id:fxborg:20161103063743p:plain

これでRを使用するための設定は終わりです。用意されているサンプルが動けばOKです。

f:id:fxborg:20161103064642p:plain

スクリプトの作成

ZorroからRを呼び出す方法は2とおりあって、

  1. ・スクリプト中にRの命令を直接記述する方法
  2. ・ファイルに保存したRの関数を呼び出す方法

の2つです。今回は後者の方法を採用します。(より詳しい内容はマニュアルで)

Zorroから参照するRファイルは「Strategy」フォルダ内に置く必要があります。
通常は「C:\Users\●●●●\Zorro\Strategy」の中になります。 

実際のソース

ファイルの内容はこんな感じです。

▼Rのコード

パス:C:\Users\●●●●\Zorro\Strategy\R\flactal.R

#pracmaパッケージのインストールが必要です。
library(pracma)
HurstExp = function(x,dm){
    if(sum(abs(x))==0)return (0)
    h=hurstexp(x,d=dm) 
    return (h[2])
}

▼Zorroのコード

パス:C:\Users\●●●●\Zorro\Strategy\FlactalTest.c

//R関連の命令を使えるようにするために「r.h」を読み込む
#include <r.h>
function run()
{
    //チャートの設定
    set(PLOTNOW);
    NumYears = 3;
    MaxBars = 1000;
    PlotScale = 5;
    PlotWidth = 800;
    PlotHeight1 = 300;
    PlotHeight2 = 100;
    if(is(INITRUN))
    {
        //初回起動時にRのプロセスを開始する。
        Rstart("R/fractal.R",2);  
    }
    int period =200;
    int dm = 16;
    int i;
    checkLookBack(period+1);   
    //価格データをリバースする。
    vars Price = rev(series(priceClose(),period));
    //Rset()でRに変数を渡す。
    Rset("x",Price,period);
    //Rx("print(x)",3);  //デバック用にprint()
    Rset("dm",dm);

    // Rx()でRの命令を実行できる。ここでハースト関数を呼び出し。
    Rx("h= HurstExp(na.omit(x),dm)",1);
    // Rの結果を受け取るにはRi()、Rd()、Rv()などが使える。
    var rslt= Rd("h");
    printf("%f",rslt);
    plot("R/S Hurst",(rslt),NEW,RED);
}

 スクリプトを実行してみましょう。

f:id:fxborg:20161103072439p:plain

f:id:fxborg:20161103005231p:plain

下段の赤い線がハースト指数です。

最後に

今回はZorroのRブリッジ機能を使って、ハースト指数を表示してみました。Rの部分をファイルに分けられるのがよいですね、速度的にも問題なさそうです。あとはLite-Cを勉強するだけなのですが、これが一番大変そうです・・・。