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

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

スポンサーリンク

Hexagonal Gridのさらなる高率化(スパイラル・ハニカム・インデックス)

Hexagonal Gridを改良しました。これで疎な点群のレンジサーチにも対応できます。

グリッド構造は中心位置を仮定しないような点群を格納するのに優れたデータ構造ですが、疎なデータを単純に範囲検索するような用途にはあまり向いていません。例えばその領域内に一点しか無かった場合もグリッド内の全セルにアクセスしちゃう感じです。

(参考:https://www.redblobgames.com/grids/hexagons/#range

これを改善するには隣接セルの情報を保持するなどしてアクセス回数を減らせればよいのですが、やみくもにインデックスを保持しても更新負荷が激増してしまいます。

そういうことで、今回はHexagonal Grid に適したインデックス構造を考えてみました。

Spiral Honeycomb Index(スパイラル・ハニカム・インデックス)

f:id:fxborg:20180605224212p:plain

  • ・7セル単位でまとめて中心にインデックスを配置する。
  • ・中心のインデックスは半径2セルのエリアをカバーする。  
続きを読む

近傍点探索のためのHexagonal Grid(その2)

前回のつづき。今回は「キュービック座標上での距離の測り方」についてです。これを理解すると六角形グリッドで近傍探索が行えるようになります。こちらを一通り説明した後にさらなる改良案についても紹介したいと思います。

前回は六角形グリッドに座標データをセットするところまでいきました。今回はグリッド上の各セル間の距離を扱います。例えば、下図のグリーンのセルからの各セルの距離を測る場合はどうしたらよいでしょう。

f:id:fxborg:20180413032040p:plain

続きを読む

近傍点探索のためのHexagonal Grid 

作りかけのサポート・レジスタンスのインジケーターで近傍点探索に使ってるロジックがストリームデータに耐えられないという問題があり、今はHexagonal Grid(六角形グリッド)に置き換える作業をしています。

「近傍点探索」自体は機械学習などでもよくあるテーマですが、ストリームデータ向けのものとなるとあまり情報が見つかりません。

ワールド座標が固定されている場合は領域木などのデータ構造でもよいのですが、ストリームデータでは中心位置がどんどん後方に遠ざかっていくので時間とともにツリーのバランスが崩れてしまいます。それを解消する為には定期的にツリーを再構築するなどの方法を取るのですが、これには無視できない負荷が生じます。

じゃあ中心位置を仮定しなくてもいいデータ構造はないかと調べると「グリッド構造」なら格納できるようです。

領域木とグリッドの違い
  • ・領域木などは互いの点の位置関係により配置先が決定されるので格納順などでデータの配置が変動する。

  • ・グリッド構造の場合は、座標から直接マス目の位置を割り出すので他の点の位置は影響しない。 
続きを読む

お休みモードですが、今後やりたいことのメモなど・・・

お久しぶりです。あっというまに一ヶ月たってしまいました。今はアルトコインばかり触っているのですが、FXでは利用出来なかった板読みや銘柄選定などを楽しんでいます。仮想通貨は休みが無くてなかなかコーディング時間が取れていないのですが、今後やりたいことを残しておこうと思います。

今後の課題

  • ・作りかけのサポート・レジスタンス インジケータを完成させる。その為にはクラスタリング処理の高速化が必要。具体的にはストリームデータにも耐えられる「ヘキサゴナル・グリッド」を使って近傍探索を行う予定(参考:https://www.redblobgames.com/grids/hexagons/)。

  •  ・平均足、Gann Swing Bar 等で一気に動いた値幅を計測し、これもクラスタ化して代表的な値幅を求める。

  • ・サポ&レジのインジが出来たら、サポレジ付近の髭の出来ぐあいを測定する(これはもう少しチャートの観察が必要)

  • ・IsoKineticチャートの改善(思いついているアイデアを試す)

といったところです。

最後に

仮想通貨は参入障壁の小ささとボラティリティが圧倒的なので、もう少し遊んでみようと思います。特にアルトコインは板読みの練習ができて相場の勉強に最適です。もう少し落ち着いたら、ブログの方も再開したいと思います。

 ではでは・・。

2018年の目標

 明けましておめでとうございます。今年もよろしくお願いします。新年ということで、これまでのことをちょっと振り返ってみました。

これまでの振り返り

2015年の始め頃に思うところがあってFXの研究を開始しました。裁量は2007年頃にも行っていたのですがリーマンショックの後で離脱したくちです。

また始めたのは、その頃プログラミング能力にちょっと衰えを感じてて「このままだと老後には何も残らないかも・・・」と考えたことがきっかけです。

続きを読む

KD-Treeのc++実装であるnanoflannライブラリの使い方

KD-Treeは普通の平衡二分木を多次元(2次元以上)に拡張させたもので、空間座標の範囲検索や最近傍検索を効率的に行えるデータ構造です。特にK近傍法やDBSCANといったクラスタリング・アルゴリズムにはもって来いです。

nanoflannはC++で実装されたKD-Treeのヘッダライブラリですが、使い方がちょっと分からなかったので、いろいろと調べながらラッパークラス(自分用)を作ってみました。 

KD-Tree自体の説明(こちらのスライドが分かりやすかったです)

www.slideshare.net

続きを読む