2014年1月の記事一覧

カスタムインジケータの値を出力する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日|コメント (6)

カテゴリー:MetaTrader EA