俺にも執筆活動させろボケ

EA作成風景。(KUEAに挑むpart6)

すべて買うのに成功したのでここでしかるべきタイミングでしかるべき方向にしかるべきポジションを建てるようにする。

まずは消去法の部分(しかるべきタイミングとしかるべきポジション)を作る。

 

その前に一度ある国がパーセント点を超えた時に10ペアすべて買うようにする。

                ↓

            その国を除外する

                ↓

           売買の方向もちゃんとする。

 

の順番で進む。

しょうもないケアレスミスで時間が結構たったがとりあえず除外までは完了した

ここで初めてMQL5の注文関数の勉強を一挙両得本で始めている。

なるほど数量が均一の場合はそんなに気にする必要はなさそうだ


豊嶋久道先生のコラム | FX・自動売買・システムトレードのすべてがわかるMT4やEAの投資情報サイト【fx-on.com】

 

そしてわかったことがひとつ10ペアも売買するのめんどくせええ

世界6通貨だと21ペアだぞやってられるか。

そしてようやく形になってひな形EAが完成した。

f:id:nemui3900:20150129174852j:plain

 

f:id:nemui3900:20150129174919j:plain

 

SSMAはめんどくさいのでやめて0に回帰するひな形になっている。

眠い | kueatest4.zip ダウンロード | uploader.jp

冗長だしもう少し簡単に書けそうな気がするのだが思いつかない。

あとバグとかありそうだなあ、ちゃんとあとで確認しないと。

あとの注意点はRoboForexのシンボル名に合わせていることぐらいか。

 

もういっそのことEXITは考えないでスイングのドテンとしてチューニングしていくかもしれない。

 

 

 

 

EA作成風景。(KUEAに挑むpart5)

まずは世界5通貨モデルの通貨ペアすべて

10通貨すべてに買い注文をだすところから。

f:id:nemui3900:20150129130000j:plain

こんなかんじだろう、実験。

f:id:nemui3900:20150129130319j:plain

いきなり躓きまくり、

この4106は未知の通貨名なのでかなり想定外。FXPROはマイナーな通貨名なはずはないしEURUSDだけ通ってるのでどうやらチャートで開いていない通貨名で単純にはバックテストで動作しないということ。

ここでMT4での検証を諦めてMT5に移動、だってMQL5使えるし。

f:id:nemui3900:20150129132333j:plain

さてこんな感じである、askが使えないだけで大惨事である。

f:id:nemui3900:20150129132958j:plain

f:id:nemui3900:20150129133012j:plain

f:id:nemui3900:20150129133026j:plain

概ね予定どおりの注文が通った、このデモ口座(MT5 FXDD)ではGBPAUDを扱っていないのでエラーがでている。

GBPAUDの揃ったデモ口座を探すのがいいかなと思うのでMT5でGBPAUDを扱っている口座を大至急探すのだ。アルパリさんなんで死んでしまったんや。

困っていたのでつぶやいた結果、豊島先生からの助け舟が

f:id:nemui3900:20150129140716j:plain

f:id:nemui3900:20150129140901j:plain

さて無事開けたのはいいが何ですかこの'.m'は?

すごく嫌な予感がするwwwまあGBPAUDが扱えるだけいいか。

とりあえず気になるシンボル名を表示してみる。

f:id:nemui3900:20150129141427j:plain

f:id:nemui3900:20150129141443j:plain

やはりなぞのmが入るようです。

とりあえず.mつけておけばいいのだろう。そんなに気にしないでいいか。

f:id:nemui3900:20150129141928j:plain

やってみましょう。

データを取りに行くのですごい時間がかかるなあ。

f:id:nemui3900:20150129143057j:plain

成功です。

 

今回の教訓はMQL4にしがみついている奴はいい加減MQL5を勉強しろということだろう。

長くなったので一度閉めます。

 

 

EA作成風景。(KUEAに挑むpart4)

さて、目標値の算出ですがこれは簡単なことだ。

だから間違えないようにしつこい感じで振り返る。

ただ単に掛け合わせるだけなのだがあまりにも少ない数になってしまう。これではスイングには使えないだろう。

ってことで振り返るのは一旦やめて

他のEXIT方法を考えることにしつつ、

TP・SLを絡めた注文を諦めてただの注文の部分を書き殴ることにする。

さて、レジュームの話で少ししたけど場合分けをする必要がある。

後でいいと言いつつ注文の部品を作る上で必要になったので今考える必要があるようだ。

 

Eが突出したとき

ABCDEでEを抜いたパターンはペアなので一つひいて3の階乗

3*2*1

 

DEが突出した時は2の階乗

2*1

AB AC

 

CDEが突出した場合

AB

 

このパターン数のポジションを建てたいので

その分のシンボル名が必要なのだが

これをうまいことコード化する。

というかこれが結構めんどくさいな、

まず通貨ペアの順番の問題があるUSDJPYはUSDJPYであって

JPYUSDではないので少し工夫が必要だ。

シンボル名を眺めているとある規則にそっている気がする

EURGBP>AUD>USD>JPY

の順番で分子側に配置されている気がする。

というかたぶんそう。

これでたぶんコード化はできるのだが

文字列の扱いが不慣れなのと、余りやらない作業なので難儀しつつ書いていく。

なるほどわかった、合成するよりあらかじめある10の通貨ペア消去法したほうがいい。

EURUSD

GBPUSD

USDJPY

AUDUSD

EURJPY

EURGBP

GBPJPY

AUDJPY

EURAUD

からAUDが突出した場合AUDを含むって条件で除外してのこった

EURUSD、GBPUSD、USDJPY、EURJPY、EURGBP、GBPJPY。

としたりAUDとGBPだった場合更に除外してって

EURUSD、USDJPY、EURJPY。

のように考えたほうが簡単だった。

 

さて依然として文字列の扱いは不慣れなのでリファレンスを見ながらの作業です

文字列の検索【StringFind】|MQL言語リファレンス日本語翻訳マニュアル|メタトレーダーでMQLプログラミング自動売買 メタシス・シーカー

これで注文に必要なシンボルは書けそうです。

あとはどっちに注文するかという部分ですがSSMAからみて上か下かを算出するだけ。

これはEURUSDで例を出すと

EUR(-9)でUSD(8)な場合

-9ー(8)=-17でEURUSD(回帰を狙うので)買い。

EUR(-9)でUSD(ー8)な場合

-9ー(ー8)=-1でEURUSD(回帰を狙うので)買い。

とこんなかんじです。少し注意が必要なのは実際動いた方向の逆にはる順張り(回帰)だという点。

さて実際にガリガリ書いていく。

なるほど、すでに計算してる部分で正か負かで売買の方向がでているんだった、これをうまいこと使えばいいだけか。

そもそも合成するとかじゃなくEURUSDの対数が正負でいいじゃないかそれってただのモメンタムだ。ものすごくアホな勘違いをしていたようだ。

俺のアホさがよくわかっただけの回になったがまあ今さら隠す気もないので一旦ここで記事は閉めておく、次は注文EAができてから更新。

 

 

 

 

 

EA作成風景。(KUEAに挑むpart3)

レジュームスイッチが入った時だけ平均を算出するのでいいけど

その条件式を描くのがだるいので普通に移動平均を求める、

その移動平均は昔作ったSSMA(スクリーニング単純移動平均)でだす。

N75とN25を出しているのですごい簡単だなこれ。

f:id:nemui3900:20150126191057j:plain

f:id:nemui3900:20150126191117j:plain

ssmaはオレンジレッドの細いやつ

ずっと0なので失敗したかと思ったがそもそも合算が0なのがku-powerの特徴だった。

ということはこれが0の間はレジュームオフとして考えていいってことだな。

ssmaを出したところで今日は終わり。

TPとSLの算出とどの程度幅がないと注文が通らない仕様かとかは今度やっていく。

 

追記:0割が入ることがあるので条件式を追加した。

 

EA作成風景。(KUEAに挑むpart2)

さてとりあえずレジュームスイッチを作ったけどその後の挙動は

まるで考えていません。

そもそもスイッチの部分でも少し検証の余地が残っています。

一銘柄が突出した場合

f:id:nemui3900:20150126171300p:plain

と2つ以上の突出に

f:id:nemui3900:20150126171313p:plain

分かれます。どうするかという選択肢ですが基本的に

場面分けはしておいてどちらも検証します。結局どっちが先かしか無いのだ。

すべての局面を地道に虱潰しにすることが大事。

再現できない場合は諦めることもあります、寝かしておいてあとで自分が

解けるようになるまでほおって置くのもありです。

 

突出した銘柄以外の平均を算出してその平均への回帰を狙います。

もう少し具体的な名称を使ってイメージを固めます、

一番上の画像を例に出すとAUDが突出したのでAUDを弾いて、

USD、EUR、JPY、GBPの平均値を出して

平均値の方に張ります。

とりあえず平均値はイメージで勝手に決めますが

回帰する方向が

JPY↓EUR→USD↑GBP

これによって俺が取るべきポジションは

USD/JPY BUY

GBP/JPY BUY

EUR/JPY BUY

EUR/USD SELL

EUR/GBP SELL

GBP/USD なし

目標値(TP)は平均値からの回帰量を具体的に算出できるのでストップにもそれを使うか

AUDの動き次第で閉じたり別のスイッチを見つける。

これをEA化するのは結構めんどくさい。

そしておもったんだけどこのインジケーター逆だわ。logを取る分母と分子逆だ。

そのうち直す。

 

目標値があるEAは昔単回帰の説明の時に作ったはずなのでそれを使いまわそう。


単回帰直線で未来を予測して結果を出す。 - nemui3900’s blog

コードを見た感じ時間でExitしているのでpipsの算出までしか参考にならなそうだ。

MT4の場合TPやSLが近すぎると入らないのでそのへんの仕様の調べ直す必要がある。

まずは平均値を算出してTPとSLを出すことから始めよう。

平均値を算出する部分はまたもやこいつを弄ったら簡単そうである。


続・統計解析的インディケーター。 クリーニング移動平均。 - nemui3900’s blog

始めようと言いつつ疲れてきたので一度ここでおしまい。

こんなちまちまやってるのは脳みそがたるんでいてスタミナも根性もダメダメである。気合を入れ直す必要があるな。

 

そしてなんだかんだHDDがぶっ壊れてめちゃくちゃblogが役に立っている。

まさに情けは人のためならずってやつだな。タイムリミットが近づいてきているので小休憩後再開しよう。

 

EA作成風景。(KUEAに挑むpart1)

f:id:nemui3900:20150126105723p:plain

まずは黄色の①を検出するところから始める。

AUDが弱くなった時AUD以外の通貨がどうなるかって検証なので

まず急に弱くなった強くなったを検出できないとどうにもならない。

要はブラック・スワンを探すところからだな。

昔作った気がするのでその方法を採用しよう。

自分で作ったけどやっぱり忘れている


続・統計解析的インディケーター。 クリーニング移動平均。 - nemui3900’s blog

これだな、なるほど実測値のパーセント点で外れ値を探しているらしい。

これを世界5通貨モデル(数を増やしすぎると面倒なので検証のしやすさと本家の人も5通貨なのでこれで)に採用したらいいのだな。

んー実際にコードを見た感じ一週間に一度更新されるパーセント点をKU1DAYにボリンジャーみたいに適用したらいいのだな。

 

Ku-パーセント点の設計図。

ある期間の5分(5通貨なので)の一の配列を用意してKU-Power(1DAY)をぶっこむ

配列を合成して並び替えてパーセント点を取り出して描写。

こんなかんじですな、実装しますか。

 

重くなりそうなので週の初め以外は計算しないようにと思ったが

いつも週のはじめにってやってるので計算を分散させるために火曜日にずらすことにした。

MQLの曜日の判定方法などは需要がありそうなので一応解説しよう。

f:id:nemui3900:20150126115650p:plain

基本的には106行目のday_of_weekで2(火曜)の判定をするだけである。

しかし火曜が休みだったりすると2週間リセットされないので

day_of_weekを使って一足分もどると先週の金曜(5)になる場合は(107行目)月曜と判定する(おいww火曜の判定に月曜でてきちゃった)。

ここまで書いてわかったのは月曜日にリセットしないと休みだったりしたらめんどくさいってこと

やはり火曜はやめて、休みの時は分散できないがそれ以外は時間だけずらして分散することにしよう。

月曜の12時にしてみた。

よく考えたら現在の足で比べるのをやめてEAのマジックナンバーなりのぶんをshiftさせればいいだけだな、今回は一日戻す意味で24にしよう。

そのShiftした足で月曜の判定をすればいいのね。そしたら火曜日に計算されるはずだ。

f:id:nemui3900:20150126122622p:plain

 

話が脱線したので戻ってKU-Power(1DAY)を配列にぶっこむ部分をつくろう。

そしてまたまたよく考えると5分割した分の配列って考え方はまずい、

期間が5の倍数でなければおかしくなってしまう。

そこで逆に5倍(5通貨)分ぶち込むことにする仕様に変えておく。

 

f:id:nemui3900:20150126125418p:plain

MQLはアーリーをマージはできないので大きめの配列に

コピーアーリーしていくことにするか、最初からスタートポジションをしかるべき場所にして入れていくかする。

今回は後者の方法で136行目からがそれ。

ku-powerの算出方法についてはもはや説明する必要はないだろう。

あとはAAV2をソートしてパーセント点を出すだけだ。

いろいろ細かい間違いを正しつつ書きまくる。

f:id:nemui3900:20150126134347p:plain

できたのだが半分マイナスで0が起点なので平均値が縮んでしまっている、

計算方式を変えるか係数をかける必要がありそうだ。

f:id:nemui3900:20150126135457p:plain

5通貨あるので係数を5倍という謎の理論を使ってみたらなかなか収まりがいいという図。

倍率は自分で選べるように変数にしておくか。

いやまてよおかしい

というか配列にちゃんと数字が入っていないっぽいので小さくなっている気がする。しばらくデバッグしよう。

 

配列の中身をプリント文で表示する。

f:id:nemui3900:20150126141634p:plain

 

f:id:nemui3900:20150126141826p:plain

なんと値がほぼ同じ、どこかで根本的にミスっているらしいので修正。

 

見直していくとint型の関数の中にdatetime型のデータを渡していた

なるほどそれで0ばっかりになって値が小さくなるわけだ。

f:id:nemui3900:20150126142738p:plain

よっしゃやっと外れ値のレジュームスイッチ部分はできた

疲れたのでひとまず終わろう。

 

今回作った外れ値を検出するためのインジケーター。

眠い | KUBS.zip ダウンロード | uploader.jp

ちなみにアップローダーはもどした、

フォルダ分けいちいちするのがめんどくさいのとダウンロード数が見れたほうがいいので。

そして無駄な係数倍してしまう変数baiが残った。baiは1推奨です。消せる人は自力で消してください。

そろそろまじめにku-chartの使い方を考える。

ku-chartを俺が認識してから四年以上がたった。


通貨の強弱のアレ。 - とあるMetaTraderの備忘秘録

 

今更概念や世に出た経緯は俺が説明する必要もないだろう。

俺のku-chartの使い方はMQLの実践演習にしか使われず、

バックテストすらちょっとやっただけでやめてしまった。

これを教材にして自身のスキルアップには使ったのだが、

実際の運用には使わないし、使おうともあまりしなかった。

わけは何個かあるけど、MT4の仕様のせいとも言える。

今まで多通貨での取引は結構ナーバスな問題であった、

今は仕様が変わってどうにかなりそうでならないのでめんどくさいから

どうにかなるけどめんどくさいになったので改めてそろそろEAのロジックとして使ってみたい。

 

もちろん俺は作りつつブログを記していくので、使い物になるかならないかは結果次第だ。

 

さて、俺もあれから4年経って少しばかり知恵をつけてきて。

闇雲に検証を始めたりはしなくなった。

まずはくーちゃんがどういった人物でそのときどういったことをしていたかを振り返ることで

ある程度使い方が仮定できる。

株のシストレ派は苦戦している? - とあるMetaTraderの備忘秘録

ここのコメント欄にどういった人物であるかの考察に使えそうなコメントがある、

要するに彼はトレンドフォロー派(回帰型)をモダンポートフォリオで運用している。

というかコレがほぼ答えなんだろうと思う、実際にスイスがあれした時のつぶやきが

 更にダメ押ししている。

ようは俺が考える前にそこに答えがおいてあって、

実装するかしないかという問題まで敷居が下がってきている。

宝の地図に印がついていて、

あとは旅に出るか出ないかの状態だ。

ただ遠い場所にあるだけでさほど難しいことはない

個人のスキルによってはそこにえびすさんがいるかいないかの差はあるだろうが。

 

ってことで次回からEAを実際に作る過程をネタバレ満載でお送りしていく。

これがうまくいきEAが増えたら万々歳である。