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

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

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

スポンサーリンク

有向非巡回グラフでMTAアルゴリズムの高速化(その2)

やっとこさオンライン版MTAアルゴリズムのコードが出来ました。今回の修正では、頂点を先に求めてから区間分割を行うので、設定によってはオリジナルと結果が異なりますが、標準設定では問題ないレベルと踏んでいます。

f:id:fxborg:20170314233202p:plain

EURUSD(15分足)3/6 ~ 3/14

最小区間の検出

前回の記事では最小の分割区間を3つ毎に固定していましたが、今回はもう少し賢く分割してみました。

▼設定「デプス:3」での例

f:id:fxborg:20170315010305p:plain

頂点の求め方

  1. 1.デプスの3倍の期間にあたる点まで直線を引きます。
  2. 2.直線から一番離れている点を探します。
  3. 3.その点が期間を3等分した真ん中のエリアにあれば頂点とします。

この方法で連続的に頂点を求めていくとこんな風になります。

f:id:fxborg:20170315012159p:plain

636個のデータに対してデプス(4)で頂点検出を行ったところ、頂点数が124個になり、およそ5分の1に圧縮されました。

あとは前回記事の流れで各頂点間の統計量を求めて、MTAアルゴリズムで必要なときに利用するだけです・・・。

オリジナルと結果を比較

こうして求めた結果がどのくらい劣化してるか気になったので、オリジナルと比較してみました。

▼MTAアルゴリズムの結果

f:id:fxborg:20170315020131p:plain

上段の 「segments」は分割点を下段の「score」は精度を表しています。

▼オンラインMTAアルゴリズムの結果

f:id:fxborg:20170315020233p:plain

オリジナルと比較してみると、精度2~10%くらいではだいたい一致しているようです。

最後に 

今回はMTAの高速化のアイデアをPython版として実装しました。オリジナルともほとんど同じ結果になるみたいで一安心です。あとはインジケーター化するだけですね。

こちらからどうぞ
online_segment.py
onlineregression.py