EA作成風景。(KUEAに挑むpart1)
まずは黄色の①を検出するところから始める。
AUDが弱くなった時AUD以外の通貨がどうなるかって検証なので
まず急に弱くなった強くなったを検出できないとどうにもならない。
要はブラック・スワンを探すところからだな。
昔作った気がするのでその方法を採用しよう。
自分で作ったけどやっぱり忘れている
続・統計解析的インディケーター。 クリーニング移動平均。 - nemui3900’s blog
これだな、なるほど実測値のパーセント点で外れ値を探しているらしい。
これを世界5通貨モデル(数を増やしすぎると面倒なので検証のしやすさと本家の人も5通貨なのでこれで)に採用したらいいのだな。
んー実際にコードを見た感じ一週間に一度更新されるパーセント点をKU1DAYにボリンジャーみたいに適用したらいいのだな。
Ku-パーセント点の設計図。
ある期間の5分(5通貨なので)の一の配列を用意してKU-Power(1DAY)をぶっこむ
配列を合成して並び替えてパーセント点を取り出して描写。
こんなかんじですな、実装しますか。
重くなりそうなので週の初め以外は計算しないようにと思ったが
いつも週のはじめにってやってるので計算を分散させるために火曜日にずらすことにした。
MQLの曜日の判定方法などは需要がありそうなので一応解説しよう。
基本的には106行目のday_of_weekで2(火曜)の判定をするだけである。
しかし火曜が休みだったりすると2週間リセットされないので
day_of_weekを使って一足分もどると先週の金曜(5)になる場合は(107行目)月曜と判定する(おいww火曜の判定に月曜でてきちゃった)。
ここまで書いてわかったのは月曜日にリセットしないと休みだったりしたらめんどくさいってこと
やはり火曜はやめて、休みの時は分散できないがそれ以外は時間だけずらして分散することにしよう。
月曜の12時にしてみた。
よく考えたら現在の足で比べるのをやめてEAのマジックナンバーなりのぶんをshiftさせればいいだけだな、今回は一日戻す意味で24にしよう。
そのShiftした足で月曜の判定をすればいいのね。そしたら火曜日に計算されるはずだ。
話が脱線したので戻ってKU-Power(1DAY)を配列にぶっこむ部分をつくろう。
そしてまたまたよく考えると5分割した分の配列って考え方はまずい、
期間が5の倍数でなければおかしくなってしまう。
そこで逆に5倍(5通貨)分ぶち込むことにする仕様に変えておく。
MQLはアーリーをマージはできないので大きめの配列に
コピーアーリーしていくことにするか、最初からスタートポジションをしかるべき場所にして入れていくかする。
今回は後者の方法で136行目からがそれ。
ku-powerの算出方法についてはもはや説明する必要はないだろう。
あとはAAV2をソートしてパーセント点を出すだけだ。
いろいろ細かい間違いを正しつつ書きまくる。
できたのだが半分マイナスで0が起点なので平均値が縮んでしまっている、
計算方式を変えるか係数をかける必要がありそうだ。
5通貨あるので係数を5倍という謎の理論を使ってみたらなかなか収まりがいいという図。
倍率は自分で選べるように変数にしておくか。
いやまてよおかしい
というか配列にちゃんと数字が入っていないっぽいので小さくなっている気がする。しばらくデバッグしよう。
配列の中身をプリント文で表示する。
なんと値がほぼ同じ、どこかで根本的にミスっているらしいので修正。
見直していくとint型の関数の中にdatetime型のデータを渡していた
なるほどそれで0ばっかりになって値が小さくなるわけだ。
よっしゃやっと外れ値のレジュームスイッチ部分はできた
疲れたのでひとまず終わろう。
今回作った外れ値を検出するためのインジケーター。
眠い | KUBS.zip ダウンロード | uploader.jp
ちなみにアップローダーはもどした、
フォルダ分けいちいちするのがめんどくさいのとダウンロード数が見れたほうがいいので。
そして無駄な係数倍してしまう変数baiが残った。baiは1推奨です。消せる人は自力で消してください。