*

iCustomではEA化できないインジケーターをEA化するやり方

Originally posted 2019-04-22 18:38:03.

世の中にはいろいろなMT4用インジケーターがあるわけですが、その中にもEA化できるインジケーターとEA化できないインジケーターがあります。今回はぱっと見ではEA化できないインジケーターをEA化する方法についてご紹介します。

 

EA化できるインジケーターとできないインジケーターの違いとは

そもそも、EAできるできないの境目はどうなっているかというと、基本的にはインジケーターのプログラミングの書き方に依存しています。

具体的にはバッファに値を格納しているかどうか、ということになります。

バッファというのは、MT4なら8つまで登録可能なインジケーターが出力するシグナルデータのことです。(MT5なら500以上登録可能です。)

サブウィンドウに表示されるオシレーター系のインジケーターの場合は、オシレーターのラインそのものがバッファで構成されています。

メインチャートに表示されるインジケーターの場合は、マウスを近づけたときに、値が表示されるものがバッファです。

 

 

EA化できない原因は

インジケーターをEA化するには通常MQLのiCustomという関数を使います。トレーダーの方ならiCustomは名前だけは聞いたことがあると思います。

オシレーター系のインジケーターの場合は、ラインを描画するためにバッファが不可欠なので問題はないのですが、メインチャートに表示される矢印系のインジケーターの場合には、そもそもバッファで処理していないことがあります。

「バッファでシグナルを処理するようにプログラミングしていないこと」、これがiCustomでインジケーターをEA化できない原因です。

バッファレスインジケーターはiCustomではEA化できません

 

iCustomが通用しないインジケーターをEA化するには

一般的には、バッファに値を入れないタイプのインジケーターの場合、「残念ですが、EA化は諦めてください」ということになるのですが、

実はEA化することは可能です。

 

MQLプログラマの方で、オブジェクト関数をよく触る人なら気づいていると思いますが、チャート上に表示されているオブジェクトはそれぞれスクリプト側から制御することができます。

要するに、オブジェクトでシグナルを出力しているなら、オブジェクト関数で処理すればいいじゃない、って話です。

ここでいうオブジェクトとは、オブジェクト指向のオブジェクトではなく、チャート上に表示される矢印とか星とか花マークとかトレンドラインのことです。

オブジェクト関数の操作権限は、プログラムをセットしているチャートやオブジェクトを生成したプログラムには依存しないので、他のプログラムが生成したオブジェクトを取得することが可能です。

分かりやすく言うと、
・インジケーターが矢印とか花マーク(オブジェクト)とか表示
・EAがチャート上に表示されたマーク(オブジェクト)の情報を取得
・取得したオブジェクトの情報を元に自動売買
という構図です。

一般的なインジケーターからEA化する場合は、
・EAがインジケーターのバッファをiCustomという関数で取得
・iCustomのデータを基に自動売買
なので、

一般的なやり方と比べるとプロセスが増えます。

 

iCustomでインジケーターをEA化する場合のデメリット

チャート上に出力されたオブジェクトを元にEAに自動売買をさせる場合、EAのセットとは別にインジケーターも毎度セットする必要があります。(たいした手間ではないですが…)

一見これはデメリットに見えますが、実はメリットでもあります。

というのも、世の中には
・セットしたタイミングやその他条件によって描写が変わるインジケーター
があることです。

EAの内部でiCustomでインジケーターを処理した場合、トレーダーがデバッグのためにチャートにインジケーターをセットすると、その描写と異なる演算結果を出力することがあります。

これは、EAがインジケーターを処理し始めたタイミングが、EAがチャートにセットされたタイミングで行われるのに対して、チャート上で表示されるインジケーターの演算の開始がチャートにセットされたタイミングで起こることに起因します。

それがiCustomのデメリットであり、クレームの原因になる訳ですね。

 

 

オブジェクト関数でインジケーターをEA化するやり方

今回はMAのクロスを矢印でシグナルとして出力するインジケーターをEA化してみます。

インジケーターのオブジェクトを分析する

fxantenna.com img

(例によってMyPCは解像度がアホみたいに高いので矢印が小さいですが、普通のパソコンなら矢印がもっと大きく表示されると思います。)

インジケーターのソースコード(mq4)

 

ちなみに、チャート上に表示されているオブジェクトは
・チャート上で右クリック
・オブジェクトリストをクリック
で参照できます。

fxantenna.com img

このインジケーターはご親切にも矢印をバッファでも出力してくれているので、正直言うとiCustomでもEA化可能です。

fxantenna.com img

あまり見慣れないかもしれませんが、「チャート」の「オブジェクト」の「オブジェクトリスト」を選択すると、現在表示しているチャート上に描画されているオブジェクトの一覧を見ることができます。

fxantenna.com img

そもそもの話ですが、チャート上に表示されているオブジェクト名は必ず重複しない名前になっているので、オブジェクト名とシグナルの対応が取れれば自動売買ソフト化ができます。

今回の場合は買い矢印の場合「BuyArrow+その足のオープンの時間」、売り矢印の場合は「SellArrow+その足のオープンの時間」となっているので、

逆にこれで取得すればいいという話になります。

(チャート上にたくさんの矢印や花などのマークを描画させる場合、それぞれをわかりやすく区別する必要があるため、大抵は記号名+時間に関連する数字がオブジェクト名になっています。今回はUnixタイムですが、その他は大抵Barsとかです。)

EA側でオブジェクト関数を使ってオブジェクトの情報を取る

もう、ここまでくればあとはただのオブジェクト関数の時間です。

ObjectFind(“オブジェクト名”)で、falseならオブジェクトなし、trueならオブジェクトがあるので、

 

これで、EA化できました。

 

オブジェクト関数によるインジケーターのEA化の肝は

間違いなく、チャート上に表示されているオブジェクトにつけられた名前の分析能力だと思います。

ただし、何度かインジケーターを開発した経験があれば、何となくわかると思います。(共通項を発見する能力はIQに依存するところもありますけどね。)

 

そもそもバッファを使わずにインジケーターがコーディングされている時点で、そのインジケーターのプログラマの技量はそこまで高くないと推察されるので、リバースエンジニアリングするのも容易い(だろう)ということだと思います。

 

 

 

この投稿は役に立ちましたか? 役に立った 役に立たなかった 3 人中 3 人がこの 投稿 は役に立ったと言っています。
 

コメント

  1. おこ より:

    とても興味深い内容でありがとうございます。
    1つアイデアがあるのですが、
    EAから逆にインジケータに変更することはできるのでしょうか?
    EAのOrder sendの部分を bufferに変更したら、
    そのままそのEAは、インジケータになりますか?
    つまり、EAのbuy sellをアウトプットにして、
    別のEAから、そのEAのシグナルを読み取って、(インジケーターとして)
    フィルターをかけながら、あらたに別のEAからbuy sell オーダーをだすようなことはできるのでしょうか?

  2. 横瀬 より:

    EAからインジケーター化も可能ですよ。一部EAでしか使えない関数(WebRequestとか)というのものも存在しますが、それらを使っていない場合は、OrderSendをコメントアウトして、アラートなり矢印のオブジェクトの出力に変えればインジケーター化可能です。

  3. あんめるつー より:

    はじめまして。

    私も興味がある内容でして、、

    この場合だと、バックテストはできないですよね?
    バックテストまで可能にする方法はあるのでしょうか??

  4. 横瀬 より:

    バックテストでも、ビジュアルモードにしてチャートに同じインジケーターをセットすれば可能ですよ。ただし、数値最適化の場合、さらにもう一工夫必要です。

Message

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

[MT4]EA単体でFX業者間アービトラージ ~為替システムの穴~

より高速になったアービトラージEA 業者間アービトラージが話題になった時代が数年前にありましたが、

記事を読む

最近の海外のEA開発の流行り:ロングとショートのパラメータ群を分ける

表題の通りですが、最近海外製のEAではロングとショートのパラメータを分けるのが流行っているようです。

記事を読む

(MQL4プログラマのための)先に知っておくと時間を節約できるMQL4の仕様

ほとんどの人には関係ない記事だと思います。 開発者の方が検索してたまたま見てもらうような覚書です。

記事を読む

ティック更新のズレにはFXシステムの穴がある 合成通貨アービトラージ

合成通貨アービトラージとは FXは通貨ペアなので、その組み合わせは無数にあります。 例えば、ドル

記事を読む

[MQL4]EAの稼働が終了しても、データを記録しておく方法

(注:ディープラーニング関連の話ではありません。) MT4のEA、インジケーターは、基本的にバック

記事を読む

 
  • fxfx.work

    (↑広告です。このサイトの管理者の運営ではありません)

     


  • 横瀬兼元(ペンネーム)です。

    プロフィール
    商材を買わせようとする偽者がいるらしいのでご注意ください。
    ツイッター始めました(イマサラー)
    https://twitter.com/FxantennaC
    (埋め込みするとページ表示が極端に遅くなるので、リンクでご容赦を) 4000文字未満のトピックや話題はツイッターで発信しています。
  • fxfx.work

    (↑広告です。このサイトの管理者の運営ではありません)

Translate »
ページトップへ