FC2ブログ

まずはダイバージェンス・インジケータ

EA作成中
04 /30 2020
MQL5でのインジケータ作成も、1つできると少し進みが早くなります。

ただ以前MQL4で作った全機能を移植するのはきついので、一部分を切り出して移植しています。
簡易なインジケータの作成から、EAにするのが今回(連休中の)目標です。

ダイバージェンス・インジケータ


ということで、簡易なダイバージェンス・インジケータを作成しました。
前回のとおりですが、MACDとストキャスティクスのダイバージェンスを表示できるようにしました。
DiverEyeMT5プロパティ

チャートの表示上に山谷とダイバージェンスを表示します。
MACDのダイバージェンスをストキャスのチャートに表示するなどもできます。(まったく意味ないですがw)

オシレータ(MACD、ストキャス)の山、谷は前後2値が、山なら一致しているか安い場合です。
プログラムでは「v[4] <= v[3] && v[3] <= v[2] && v[1] <= v[2] && v[0] <= v[1]」こんな感じとしていますので、前後2値が条件に一致しないと山や谷とみなしません。

そしてダイバージェンス判断は、期間内(30期間とか)で直前のピークより大きなピークがあった場合に、山なら高値が安かった場合に「ダイバージェンスだ!」としています。
当然、ピークを判断できるのが2期間後なので、サインも2期間遅れて表示されます。

ここまでは前回と同じですが、「前後2値が条件に一致しないと山や谷とみなしません」この部分をちょっと解説します。

MACDでのピーク、ダイバージェンス表示

ダイバージェンスMACD

ストキャスでのピーク、ダイバージェンス表示

ダイバージェンスStochas

明らかに緑背景部分が山谷の判断できていません。
ダイバージェンスNG1
①はOKだけど、②のように1回で戻ってまた落ちてくるなどは山谷と判断できません。他にも判断できないパターンがあります。
プログラムなので、いろいろなパターンでも大丈夫なように作れば出来るんですけどね。簡易版ということで。
(_ _|||)

EAにするには


このダイバージェンス・インジケータをEAにするのは、iCustomを使おうと思っています。
まずインジケータでMACD、ストキャスのダイバージェンスサインを合成して売買シグナルを描画します。
この売買シグナルをiCustomで取り込んで、実際の売買関数でオーダーをかけるという感じです。
売買シグナルからオーダーをかける部分は、どんなインジケータでも同じに出来るので、今後他のインジケータを作成しても少しの改造でEAになります。

MT4の時はiCustomが重すぎて、ずれてオーダーされているような感じでしたが、MT5は処理が早くなっているので、そのようなことも無いと思います。
※自分の使い方がわるいのかもしれませんが、MT4ではiCustomを使うと売買がうまくいかないことがありました・・・。

ちなみに他のインジケータ


HULL移動平均

一番初めにMQL4から移植した「HULL移動平均」です。
オシレータ系よりもわかりやすいのと、テクニカル関数を使ってないので移植はしやすかったです。

HULL移動平均だけでは、売買シグナルが出せないので、簡易ダイバージェンス・インジケータを移植してます。
この図だけではいい感じに赤青の切り替わり(転換点)がありますが・・・たぶん右肩ガッツリ下がるようなEAしかできないと思われます。

次は、iCustomでEAを作る!にする予定です。
オーダーの仕方を勉強しないと・・・
( ̄- ̄;)


MQL5の壁

EA作成中
04 /28 2020
EAに機械学習を組み込みたい!から、ずいぶん経ってしまいました。

どうせならMT5で動かしたいと思ったのがいけなかった
( ̄へ ̄|||) 
MQL5の厚い壁に阻まれています……

今まで作っていたMQL4ライブラリが、ことごとく動かない!!
大分かけて作ったので捨てたくないし、しかし半端な修正量ではないし、地道に動かしていくしかないかと、少しずつ修正していました。

一番痛いのはテクニカル関数の使い方が、ガラッと変わったこと。そこらじゅうで使ってるのでほんと面倒で…バッファの順番が逆なのも地味に痛い><
┐( ̄ヘ ̄)┌ 

MT5のメリットは速度、バックテスト、Pythonからの呼び出し、など食指が動くものばかりなので、今さら諦めたくない!
少しずつでも移植していきます。

さて弱音ばかり言っててもしょうがない。
移植中のダイバージェンスロジックが少し動いてきたので制作過程から。

ダイバージェンス・インジケータ

MACDなどのオシレータ系での現象ですね。
「高値を更新したのに、オシレータは低くなった」
「安値を更新したのに、オシレータは高くなった」
っていうやつです。

ダイバージェンス1

・矢印はダイバージェンスです。
・◎はダイバージェンスになっていないピークです。赤丸は山、青丸は谷。

ピークの山、谷は前後2値が、山なら一致しているか安い場合です。
プログラムでは「v[4] <= v[3] && v[3] <= v[2] && v[1] <= v[2] && v[0] <= v[1]」こんな感じ。(vはオシレータ値)

そしてダイバージェンス判断は、期間内(30期間とか)で直前のピークより大きなピークがあった場合に、山なら高値が安かった場合に「ダイバージェンスだ!」としています。
またピーク値は0以上、0以下で区切っています。

当然、ピークを判断できるのが2期間後なので、サインも2期間遅れて表示されます。


これから

まずはインジケータを完成させてしまえば、iCustomを使ってEAが簡単に作成できます。
MACD、ストキャスティクスのダイバージェンス判断インジケータを作成して、iCustomで動かすまでを、できれば連休中に終わらせたいですねー
Oo。。( ̄¬ ̄*)
MT5のバックテストを早く使いたいー

ついでと言っては何ですが、MQL5.comで「カルマンフィルタ」のEAを見つけてしまいました!
時系列データの予測に使われるアルゴリズムですね。
これも連休中に使ってみたい。

新コロナで外出制限中なのでちょうどいいのですが、他にもやりたいこといっぱいなんですよ。
連休が一か月ぐらいあればいいのに。
( ̄ρ ̄)

そうそう、コメントいただきました。ありがとうございます!
質問に答えさせていただきます。

パぺ太は全くの独学で勉強しています。
EA開発者の友人… 残念ながらいません。
FXトレーダーの友人さえいませんw
「FXって怖いよー」って株を買っている人ならいます。いや、似たようなものだってww

独学はなかなか難しいですが、頑張りましょうー!

パペ太

パペ太は自動人形(EA)を操るという意味で、puppeteer(人形遣い)から付けました。
高収益のEAを目指して日々悩んでいます。