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

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

スポンサーリンク

HFD(Higuchi Fractal Dimension) Indicator v2 をアップしました。

HFD(Higuchi Fractal Dimension) インジケーターv2 をアップ。こちらのサイトで計算負荷が少ないバージョンを見つけたので試してみました。最初はC#で実装したのですが重かったので結局DLLにしました。

f:id:fxborg:20170822010419p:plain

  • 上段 ・・・USDJPY IsoKinetic チャート(20pip)
  • 中段:緑ライン・・・短期フラクタル次元
  • 中段:青ライン・・・長期フラクタル次元
  • 下段:赤ライン・・・長期フラクタルの相関係数

 フラクタルの見方

フラクタルは1部分が全体と似ているような図形のことを言いますが 、HFDでのフラクタルは乱雑さの度合いがスケールを変えても変化しないことを指します。それから、乱雑さの度合いも測れるのですが、こちらの方はフラクタル次元と言います。

フラクタル次元は直線に近いほど1に近く、ジグザグが多くなるほど2に近くなります。ただし、フラクタル次元と呼ぶからにはフラクタル性を持っていることが前提になります。

f:id:fxborg:20170822030013p:plain

過去の流れに支えられた値動きなのか、相場環境が急変しつつあるのかを判断する等、レジームスイッチとして使うのが一般的らしい。

NinjaScriptからWin32 DLLを呼び出す 

MT4と同じDLLをNinjaScriptからも呼びたかったので、dllを「c:\Windows\System32」 直下にコピーして、DLLImport文を使用し以下のように呼び出しました。

public class HFD : Indicator
{
[DllImport("fractal.dll", CallingConvention = CallingConvention.StdCall)]
static extern  IntPtr Create(int length,int k1,int k2);
[DllImport("fractal.dll", CallingConvention = CallingConvention.StdCall)]
static extern int Push(IntPtr instance, int x, double y, long t0, long t1);
[DllImport("fractal.dll", CallingConvention = CallingConvention.StdCall)]
static extern bool Calculate(IntPtr instance, out double slope1, out double corr1, out double slope2, out double corr2);
[DllImport("fractal.dll", CallingConvention = CallingConvention.StdCall)]
static extern void Destroy(IntPtr instance);
・・・	

最後に

 今回はHFDインジケーターをNinjaTrader上で使えるように高速化しました。HFDはノイズにちょっと弱いのですが、IsoKineticチャートを使うことでその辺りの影響を軽減しています。あとはフラクタル自体をもっと研究しないと・・・

こちらからどうぞ

HFD_v2.zip(NinjaScript)
fractal_v2.zip(dllのソース)