続・統計解析的に意味のあるインディケーター作り
騙し抜きに意味のあるインディケーターを作っていきます。
FXやってりゃよく騙しに合うからそんなことじゃ怒られないという前提のもと前回は騙したのでたぶん大丈夫だろう。
今回はMQL5の書き方みたいなものもやりたいんで
もうちょっとコードを載せつつやってみようと思っとります。
チャートで一番見なきゃいけない統計量による要約ってなんでしょう?
間違いなく標準偏差でしょう、ここで何やら難しいと思う人もいるかもしれないけど
標準偏差ってのは簡単にいえばどんぐらいデータがとっちらかってるかってのを
一つの数字にしただけに過ぎません。高かったらやんちゃで低かったらおとなしいってだけです。
しかしながらチャートに描くのにはあまり使い勝手が良くないのです。
そこで実際にすぐ現場で役立つ要約で標準偏差と似たような五数要約を作っていきましょう。
五数要約とは要するに全体のデータの含む量25%と75%と最大・最小・中央の5つの統計量です、
具体的な話をすると100人を前ならえさせて先頭、25番目、50番目、75番目、最後尾を抽出してるだけのことです。
さて並べる元のデータをそのままcloseでやってもいいのですが
ほかのデータとも比べやすいように加工してやった方がいいと思うので
前日との対数を取ります。比べるために無名数として対数でやる。
これはインジケーターを作る時にどの通貨でも通用するシステムの作り方を考えるとなるべくやった方がいい一工夫だと思います。
計算は↓
MathLog(Close[i]/Close[i+1])
これを並べてやるだけです。
具体的にMQLでやると
意外と説明するの難しいですね。
簡単に説明します
initの中で何番目の数字がほしいかを計算してます、
100なら25番目で1000なら250番目でその計算が105行目です。
ただ大体の言語で0からデータを収納していくので100個あれば
0から99までに収まるんで実際にほしい番号からは1つずつずれるのが注意です。
それを106から107行目で引いているので忘れてはだめです。
この画像でMidで引くのを忘れています。
そのまま実装したのであとで差し替えます。
※さらに追記 periを整数でやってしまっているので105と109行目double(peri)と囲わないとエラーが出ます。そこも変えて差し替えました。
これが関数の部分、実際に並べて順番のほしい番号のやつを取り出してるところ。
MQLとして見て欲しいのは68行目のCopyCloseの使い方で
MQL5の場合良く使うと思いますのでしっかりと覚えてください、
CopyClose(通貨名、時間の期間、コピーの始まり、コピーする数、ぶち込む配列)
コピーの始まりのところはオーバーロードになっていてdatetime型でもいいです。
C2aにデータを収納してソート(並べ替え)して
順番で取り出しているだけですね、ソートしたときに最小→最大って並びに注意するぐらいでしょうか。
なぜ関数にするかはおいおい説明します。
そして出来たのがこれです↓
直ったやつ↓
眠い | fivesasi.zip ダウンロード | uploader.jp
パーセント点はずらせるように作ったので
画像では3パーセント点にしてボリンジャー的使い方をしてみてもいいんじゃんって感じの提案をしてます。
全部対数でやっているので隣に相関の高いチャートを出して
25パーセント点(青の線)と75パーセント点(緑)の距離を比べるのも有意義でしょう。
青の線と緑の線の距離を四分位偏差といいます。
この距離を見ることでボラリティが高いか低いかを見れます。
メジアン(中央)水色の線を見れば0より少し上ってことは持ち越しのLong目線が多いのかなって読み取れます、ただmaxオレンジの線は近いので抵抗されているのかなと。
これはボリンジャーバンドを見るよりも統計的に正しい目線であることは間違いなさそうです。
次回はこれを軽くします。
その2
続・統計解析的に意味のあるインディケーター作り その2 もっと速くもっと速く - nemui3900’s blog
その3
続・統計解析的に意味のあるインディケーター作り その3 捨てたものに焦点をあてる。 - nemui3900’s blog