ニートワークエンジニア

浪人、留年、休学、中退、ニート、エンジニア。回り道人生を謳歌中

【FX】秒単位のボラティリティを計測するツールを作っている

f:id:pacstrap:20150416111101p:plain

株とか為替の動きを分析する為の数学的手法としてテクニカル分析と呼ばれるものがある。移動平均ボリンジャーバンドMACDなどが有名なテクニカル分析だと思うけど、僕はボラティリティ(Volatility)に注目している。

ボラティリティは、簡単に言えば「相場の勢い」のようなもの。上がるか下がるかはともかく、「大きく動くかどうか」を判断する評価値である。一口にボラティリティと言っても算出方法は色々あるわけだけど、基本的にはローソク足と呼ばれるチャートが示す値を使う。

僕は、基本的にポジションは長く持てば持つほどリスクになると思っている。だから動き出しそうな時にエントリーして、即退散というセコいトレードを目指している。ボラティリティはエントリーや利益確定のタイミングを計るツールとして有用なのだ。

だけど僕はローソク足を使ったボラティリティ計算に不満をもっていた。というかローソク足自体に欠陥を感じている。それは期間の最小単位が「1分」であり、リアルタイム性が欠けているということだ。

1分以内に大きな上下運動を何度も繰り返すような「ボラティリティが高い」状態であっても、その情報は1分毎のローソク足には反映されない。例えば、一旦高値をつけて少し下落し、再び高値近くまで上昇するという動きが1分内に何度かあったとしても、チャートには高値と安値と始値終値の4つの情報しか記録されない。スムーズに上昇したのか攻防があったのかがわからないのだ。

最近は数分から数十分ほどでエントリーから決済まで終わらせる、いわゆるスキャルピングをメインにして取引しているので秒単位の勢いを把握したいと思っていた。そこで今回、独自の算出方法で秒単位のボラティリティを計測するツール作っているわけだ。

オリジナルの名前つけようかな

やっていることはこれだけ。

  • 10秒毎に現在のレートを取得しDBに更新
  • 10秒毎の変化量の絶対値を足していき、それを10分間ずつ区切ってグラフにする

通常の10分足を使ったテクニカル分析だと、単純に10分間で「どこからどこまで値が動いたか」を元に計算する。僕の手法は、10分間に「どの程度の上下運動が何回行われたか」というミクロな情報まで加味しているので、リアルタイム性がかなり高いと思われる。

データの自動更新はレンタルサーバーのcronを利用している。DBもシェルも使えて月500円は有り難い。あとグラフの描画はGoogle Chartsを利用。こっちは完全無料だから本当にすごい時代だと思う。

今更だけどMT4のプラグインで同じようなものが既にあったら恥ずかしいかも。

なんか使えそうなjsonを拾った

最新レートのデータに関しては某FX業者のサイトで偶然見つけたjsonファイルを拝借している。公開されているAPIというわけではなさそうだし、あまり派手にやると規制されるかもしれない。ということでここに詳細は書かないでおく。

サイト内にレート情報を記載している業者は多いし、非同期で自動更新しているようなページは多分jsoncsvを使ってるはずだから他にも見つけられそうだ。

せっかくレートをロギングしているので、また別の分析を考えたりしてコンテンツを増やしつつ、そのうち2ちゃんねるにでも貼ろうかと思ってる。