カスタムインジケータの値を出力するEA

カスタムインジケータの値を出力するEA


iCustom()関数でカスタムインジケータを使ってEAを作る際、カスタムインジケータのラインインデックスが何番のものを使えばよいかは、インジケータ設定ダイアログの「色の設定」でなんとなくわかります。

下の図は、VQの「色の設定」タブで、#0(インデックス0番)の幅を最大にして表示させた状態のものです。

vq_index.png

色や幅で、下記の表の通りの番号になることがわかります。

0番Yellowライン
1番Green上昇ライン
2番Red下降ライン
3番Yellow↑矢印
4番Aqua↓矢印

使用する番号がわかったら、次にその番号がどのようになればシグナルとするかを知る必要があります。

CustomChecker_EAv2

パラメータIndicatorNameにカスタムインジケータ名を入力すれば、#0~#7までの3本前・2本前・1本前・現在の値をチャート上に出力してくれるEAです。

→CustomChecker_EAv2ダウンロード

下の図をみてください。

vq_index2.png

もし、現在の足の始値の時点で売りシグナル発生にしたい場合は、「4番のShift1がEMPTY_VALUEではない」という条件にすればよいですね。

   double vq4_1 = iCustom(NULL, 0, "VQ", ・・・, 4, 1);

   int sign = 0;
   if(vq4_1 != EMPTY_VALUE) sign = -1;

という感じです。

もし、矢印を使わず赤色ライン確定で売りシグナルにしたい場合はもう少し複雑になります。

   double vq2_1 = iCustom(NULL, 0, "VQ", ・・・, 2, 1);
   double vq2_2 = iCustom(NULL, 0, "VQ", ・・・, 2, 2);
   double vq2_3 = iCustom(NULL, 0, "VQ", ・・・, 2, 3);

   int sign = 0;
   if(vq2_3 == EMPTY_VALUE &&
      vq2_2 != EMPTY_VALUE &&
      vq2_1 != EMPTY_VALUE) sign = -1;

という感じです。

ラインの場合は矢印等とは違い、各バーの間の部分を直線でつないで表示するようになっています。

なので、上記売りシグナルの条件の意味は「3本前と2本前の間は表示なし、かつ、2本前と1本前の間は表示あり」ということになります。

複数のラインインデックスで1本のラインを描画するインジケータの場合で重なって表示している場合は、インデックスの大きいほうが優先して表示され小さいほうは後ろに隠れてしまうので注意してください。(VQの#0黄色ラインのように。)

カスタムインジケータをEAにする方法の関連記事

2014年1月15日|コメント (12)

カテゴリー:MetaTrader EA

コメント (12)

初めてコメントします。
ブログを参考にさせて頂いています。
今回カスタムインジケータの値を出すために
上記のeaをお借りしたのですがうまく表示されません。
MQLで見てもエラーが起こってしまいます。
パラメータIndicatorのとこを名前を入れ直すとのことでしたが、Indicator nameの全てを書き換えればいいのでしょうか?
ちなみに私が値を出したいインジケータはチャート上にシグナルが出るインジケータになっています。

まったくのド素人なのでご面倒とは思いますがご返答頂ければ助かります。
何卒よろしくお願いします。

投稿者:yuuki |2016年6月21日 10:20

yuukiさん

こんにちは。ダウンロードしたファイルをそのままコンパイルしてみてください。
正常にコンパイルできたら、MT4画面のテスターで、このEAを選択して、パラメーター「IndicatorName」の欄に値を出したいインジケーター名を入力して、スタートします。

エラーが起こる場合は、どのようなエラーが起こっているかをお知らせください。

投稿者:keiji Author Profile Page|2016年6月21日 12:02

迅速なご対応ありがとうございます。

CustomChecker EAv2ダウンロードを押すと
プログラミング言語がズラリと表示されて
それをコピーし
MetaEditorで新たに新規作成から
ExpertAdviorを選択

あとはスルーして
fileを作成して
fileに表示されていた言語を消して
コピーしてあったCustomCheckerの言語を
張り付けてコンパイルするとエラーが18個表示させてしまいます。

double quotes are needed line17 Column67
この表記等が数個出ます。

解りづらく申し訳ありません。


何かダウンロードの仕方がいけないのでしょうか?

投稿者:yuuki |2016年6月22日 15:14

yuukiさん

こんにちは。
EAファイルを更新しましたので、再度試してみてください。
ブラウザのキャッシュで古いソースが表示される場合がありますので、コードが表示される画面を更新してからコピーしてみてください。

投稿者:keiji Author Profile Page|2016年6月22日 16:15

ご迷惑お掛けしております。
更新して頂いたEAで、なんの障害もなくダウンロード出来てコンパイルもエラーなく出来ました。
お陰様で左上に画像と一緒の数値が表示されました。


あとは自分の持っているカスタムインジケーターを
挿入すれば値を出してくれるのでしょうか?
私のパソコンが遅すぎてビジュアルチャートを出すのにも一時間ぐらいたって半分しか表示されていないので確認に時間がかかっている始末で。


投稿者:yuuki |2016年6月23日 13:29

yuukiさん

こんにちは。テスターの「エキスパート設定」ボタンでパラメーター入力画面を出してIndicatorNameにインジケーター名を入力して、ビジュアルモードをスタートさせてください。

投稿者:keiji Author Profile Page|2016年6月24日 14:02

はじめてご連絡させていただきます。

有益なEAやインジケーターに関する情報のご提供、いつも大変ありがとうございます。

今回、EA化を検討したいカスタムインジケーター(super-signals-channel-BOspecial)があり、インデックス番号を調べようと、CustomChecker_EAv2を使って表示させてみたところ、#0~#3まで及びCurrent~Shift3まで、すべての項目が0.00000000で表示されてしまいます。

値動きが発生してチャート上は矢印のシグナルが表れても、CustomChecker_EAv2上では全く変化が見られない状況です。

このことからこのインジケーターは、ご提供いただいておりますAlmightyEAforSignalIndicatorsを使ったEA化や、iCustom関数でのEA化は難しいと考えられますでしょうか?

このカスタムインジケーター(super-signals-channel-BOspecial)じたいはリペイントされてしまうのですが、それを了解したうえで、EA化できないものか悩んでいたのですが、基本的には不可と考えるべきでしょうか?

お手数ですが、何らかのご教示いただけましたら大変助かります。

投稿者:koji |2018年2月26日 14:33

kojiさん
こんにちは。
通常のsuper-signals-channelと同じような表示方法でしたら、iCustom()関数は使用可能と思います。操作履歴に「cannot open file ~」の出力がある場合は、インジケーター名が正確に入力されているかどうか確認してみてください。
表示方法が違う場合で、インジケーター設定ダイアログの「色の設定」タブでもインデックス番号が確認できない場合は、iCustom()関数は使用できないと思いますので、その他の方法を考える必要があります。

投稿者:keiji Author Profile Page|2018年2月27日 09:54

早速のご回答ありがとうございます。

私の不注意で申し訳ございません。ファイル名が不正確でした。

誤:super-signals-channel-BOspecial
正:super-signals-channel BOspecial (※ハイフン"‐"が1つ多かったです)

CustomChecker_EAv2のプロパティのindocatorName欄にコピペで貼り付けたので、ファイル名に誤りはないだろうと思っていたのですが、どうもコピー元が間違っていたようです。

ファイル名を正しく指定した結果、CustomCheckerに、シグナル発生時にレートが表示されるようになりました。

インジケーター設定ダイアログの「色の設定」タブでは、#0~#3までが表示され、矢印シグナルは#2(↓)、#3(↑)に該当いたします。

つきましては、AlmightyEAforSignalIndicatorsやiCustom関数でEA化を試みてみたいと思います。


この度はご教示頂き大変ありがとうございました。

投稿者:koji |2018年2月27日 10:58

こんにちは、CustomChecker EAv2を試してみました。

インジケーターは、矢印がでるタイプなのですが

CustomChecker EAv2でみてみると、#0のみがEMPTY VALUEとなっています。

矢印は上と下の2種類があるのですが、#0のみの1つしか出ないのは

正常でしょうか?

別の矢印のインジケーターは、ちゃんと#0,#1の2つがでます。

#0のみしかでない場合、どうやってArrow up /Arrow downを

判断したらいいですか?

投稿者:Tanaka |2018年4月12日 11:32

Tanakaさん、こんにちは。

頂いたコメントからでは、#0以外がどのように表示されているかなどが分かりませんが、2種類の矢印が出るタイプでしたら色の設定タブで色や大きさを変化させて、矢印が#何番かを判定します。その#番号がどのような値を返すのかを出力すると判断できると思います。

投稿者:keiji Author Profile Page|2018年4月13日 20:11

素晴らしい

投稿者:わんこ |2018年8月 4日 19:08

コメントを投稿する

(初めてのコメントの時は、コメントが表示されるためにこのブログのオーナーの承認が必要になることがあります。承認されるまでコメントは表示されませんのでしばらくお待ちください)






画像の中に見える文字を入力してください。

Captchaの認証で入力ミスがありますと、コメントが消えてしまいますのでご注意ください。
コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。