2014年6月29日日曜日

横ヒストグラムのようなもの

先週は1本のBarの高値、安値の分散を書きました。
今週も同じノリでBar(価格)の分布についてのメモです。
例によって目的が明確でないので、それで? という落ちのない内容になっていますので悪しからず。

1.価格帯をどう区切るか

普通ならば切の良い数字 1.3600とか だと思うのですが、価格データから一定の数をサンプリングした方がプログラムが楽なので、先に区切る数を決めてしまいます。

今回は20にしました。

そしてチャートで表示されている部分の高値と安値を単純に20等分して区切る幅を決めています。

2.頻度をカウントする

価格テーブル(20等分した価格が20並んでいる)と調べる価格(今回はCLOSEのみ)を照らし合わせて、数を数えれば頻度が求まります。

これは単純にヒストグラム作成をプログラム(MT4)で計算しているだけなわけですが、実はこれが目的ではなくてカーネル変換のアプローチ(今回は単純な距離計算)を少し取り入れます。

先に結果を書きますと
(注意:横軸は価格ですが高い→安いと通常の逆表示です)

頻度(通常のヒストグラム)とカーネル変換(今回は距離計算)は同じ結果となっています。
グラフのスケールがそれぞれ違うのですが、見たいのは分散度合い(ばらつき状態)なので、同じことが表現されています。

距離計算は

ヒストグラムの表示単位価格 1.3508,1.3516,1.3524 .... とCloseの価格の差の二乗にマイナスを乗じ、それをexp()計算しています

考え方は ガウス分布(または正規分布)の考え方です。

ツール作成を目指すのであれば下のようなインジケータが考えられるわけですが、残念ながら今回はそれが目的ではなく、かつ、結構たいへんそうなので計算だけを行うプログラムの試験で終わっています。

ヒストグラムのヨコヨコ表示(イメージ)


上図は画面切り貼りしているので、完全に作り物です(笑)。

ただし、少しまじめに見ると山が2つあって、もみ合っている価格帯がなんとなく見えてきませんか。

作りたて(要はほとんどテストしていません)のプログラムは こちらのリンクページからダウンロードしてください。 Download Link Price_Distribution.mq4 というファイル名です。

もう少しちゃんとテストしたらプログラムサイトに移す予定ですが、雰囲気だけでもということでソースコードのみ掲載しました。 このバージョンでは価格テーブルをInit内でのみ作成していますので、チャートが進み、チャート内の高値、安値が更新されても、計算には反映されません。

今回は時間がなくてMT4のBuild 6xx版のみとなっていますのでご注意ください。

PS)
行列計算のライブラリを作っているのですが、動的に二次元配列を定義する術がなく2週間悩んでいます。
正確には行列の 行は ArrayResizeで変更できるのですが、 列数が変更できません。
C言語でMT4とは別に作成すればできるはずなのですが、そうすると配列管理を全部外だしにすることになりそうで躊躇しています。

別な方法としてはMT4の中で独自のアルゴリズム(二次元配列も1次元配列でデータを持つ)。という方法がありそうですがまったくスマートではないことが想像されるので却下となりました。

来週も良いことがありますように

EURUSD、USDJPYともに多少幅の広いレンジだと見ております

2014年6月22日日曜日

EURUSD 3回目のチャレンジ失敗 と 普通ではないBarの探索

久しぶりに月足を見ましょう。

EURUSD 月足


ラインにタッチして下げてはいるのですが、これだけでは何とも???? という動きでしょうか。

日足


ビックM完成後にヨコヨコとなっているのですが、図の白線が直近高値ラインになるので、これを抜けてこないとヨコヨコの気配濃厚でしょうか。

イラク情勢が落ち着くまでは何とも読みにくい動きかもしれませんし、ドル円も102円後半の円安になりそうでならない感じです。

ドル円ロングがついに1か月となりました。
100Pipsぐらいまであったのですが、今は50Pipsぐらいです。
こうなるとEAの意味がなくなるので早く普通のEAを完成させたいところです。

さて 今日も またもや 横道談義です

1本のbarの値幅(ATRではなくて 単純に高値と安値の値幅です)を調べてみました。
EURUSDの1時間です。

20,000本の分散

単純に平均すると13.9 pipsですので、1時間あたりの値動きの平均は14pipsぐらいということになります。
ただしグラフを見てもらうと分かるのですが、これで平均と言われても.... という内容です。

いくつか変形を試したところ log10を取ってみると収まりがよさそうということになりました。

log10の平均は 1.05ぐらいです。
分散も計算して、log10のデータを標準化してみます(標準偏差倍率に変換しています)。
標準偏差は0.283でした。


(標準化したので当たり前ですが) いわゆる正規分布の形です。


これで何をしたいかと言いますと、「普通ではないBar」を見分けたいのです。

たとえば全体の70%を普通と定義すれば、残りの30%が普通ではないことになるので

動きが 大きいものは 平均+標準偏差 よりも大きなもの
動きが 小さいものは 平均-標準偏差 よりも小さい

というあたりがつきます。

後は単純な計算で閾値が決まるので ということなのですが、はたして70%が良いのかどうか(計算すると大きな動きは25Pips以上になります)

試しにBarにサインを付けると


平均以上をプロットすると

スケールを変え かなり大きな動きのbarを見ると(結構ありますね!)

だからなんなんだ という説明もなく 脇道に迷い込んで、さらに寄り道をしているわけです。

均一にBar 1本で見る というのはどうも無理がありそうな感じで見ておりますが4Hや日足になるとそれなりに使える情報になるのかも?? 

来週も良いことがありますように

2014年6月15日日曜日

最小二乗法 多項式版

トレンドツールでおもっきり横道にそれておりますと、書きましたが、途中報告その1です。

最小二乗法の多項式

y = a0 + a1 * x + a2 * ( x * x) + a3 * ( x * x * x ) + ..... という計算を最小二乗法で行うものです。

これ単体で使う予定はないのですが、ライブラリのデバックを行うためにチャート表示するものを作りました。

プログラムサイトに掲載しました(ソースコードのみです)。

多項式というとなにかピンとこないかもしれませんので雰囲気としてEURUSD 1Hにプロットした画面です。

y = a0 + a1 * x (単回帰です)
上下の点線は計算値と終値の差分の分散の2倍をプロットしています。

y = a0 + a1 * x + a2 * ( x * x)

次は4次
2次と比較すると誤差の幅がやや小さいかな?

10次
今度は逆に誤差分散の変動が激しくなります

計算するbar数を変えてみると
4次でbar40本

bar数を10本にすると
追従性は高くなります。

だからなんなんだ という結論がない書き込みでしたが しばらくこんな書き込みになるかもしれません。

突然 暑くなりました 皆様 お体に気をつけてください


2014年6月8日日曜日

EURUSD Big M 完成か

6月の雇用統計 終わってみれば激しい上下の後はほとんど直前の値に戻ったという感じだったわけですが、いかがだったでしょうか。

今回は変な荒れ方をするかも、と先週書きましたが、予想に近い発表値に対して急激に動いた反動を狙って切替しでポジションゲット。

なんてできたらかっこ良いわけですが、今回は見ているだけになりました。

さて、EURUSDが雇用統計で少し戻しましたが、しばらくは神経質な動きになるのかなと見ています。

日足


数週間前に手書きで書き入れたダブルトップ完成です(多少の誤差は無視していますので)。

問題はここからどう動くかということですが。

普通に考えれば下げだと思うのですが...


1時間足

安値更新で来ていたのですが、週末で安値を更に掘り下げた後に、直近高値を一瞬抜けています。 これが下げの反動なのか、それともなにかの変化なのか分かりませんが、しばらく下げ目線ながら、やや押し目待ちなのかな。 という感じです。

ヨーロッパでECBの追加緩和、ソ連軍の撤退。 米国ではダウ、NASとも最高値更新。
とくれば来週は中国ねたでしょうかね。


EAの方ですが、USDJPYのLongを抱えたままトレーリングが1回入りました。
TPラインは103円の後半です(笑)。

来週も良いことがありますように。 トレンドツールの作成で、なぜかベイズにはまってしまい。 激しく横道に迷い込んでおります。

2014年6月1日日曜日

トレンドフィルター

トレンドフィルターのアップデートをこの数週行っているのですが、整理の為に中間報告です。


EURUSD 1Hです。

メインチャートの白丸はサブウインドウのトレンドフィルターと向きが一致しているサインで、赤丸は一致していないサインです。

サブウインドウのトレンドフィルターはLong有利をブルー、Short有利をレッド、様子見をホワイトで表示しています。

サブウインドウ(トレンドフィルター)ではずーとShort有利と出ているのですが、メインチャートの3つのサインが一致していません。

ここでLongはないでしょうね というミスサインに見えるのでメインチャートで表示しているLRLツールのロジックがダメという内容なのですが、100%正しいサインは無理なので、その為に異なるロジックでトレンドフィルターを作り、それが一致した場所でサインを採用するという考えです。

メインチャートでは最小二乗法を主材料として判定し、サブウインドウのトレンドフィルターでは複数の移動平均のかい離とBarの高値安値更新を組み合わせて判定を行っています。

トレンドフィルターでは値幅%が小さいケース(ヨコヨコ)と大きいケース(スパイク的な動き)を見ていて、ヨコヨコの時にゴールドのラインを表示させています。

このヨコヨコラインが出た後に動きが出てくるケースが多いのですが、有名なNR7というインジケータツールと考え方が近いです。
ただこの情報をうまく使えていないので、ヨコヨコラインが出た後のブレイク検知が直近のテーマになっています。

依然として苦戦しているのですが、チャートの最後の部分でトレンドフィルターはLong有利となり、メインウインドウ側でもLongサイン(良く見るとサインが1本遅いですが)点灯となり、トレンドフィルターがそれなりに機能しているとEURUSD 1Hはいったん反転の気配ありということになります。

さて来週はどうなりますかね

ドル円は

最終部はEURUSDと似ているのですが、トレンドフィルターではShort有利~様子見モードになっています。

USDJPYのLongポジションをEAが取っているのですが、+15Pipsでかろうじてプラスですがちょいと雰囲気はよろしくないです。

急に暑くなっております 土日の午後はPC部屋が蒸し暑く、ほとんど作業ができずに終わってしまいました。

来週は第一週目で金曜日がきますね。

なにかきっかけを待っている雰囲気があり、過剰な反応が出てくるような気がしています。