カスタムインジケーターの計算項目(インデックス番号)&設定数値が知りたい!

2021/10/15 20:06
4487

最近、つくーるで、カスタムインジケーターを利用したい場合に
計算項目に入力する番号がわからない!というお問い合わせが増えています。

カスタムインジケーター:計算項目.png

どの番号が何に対応しているのか

例えば、上方向の矢印のサインが出たら、エントリーするように作成したい!
このラインとあのラインを現在値が下回ったときは決済したい!など。

カスタムインジケーターのmq4プログラムがあれば、番号がわかるのですが
ex4しかない場合は、どの番号が何に対応しているのか探すしかありません。

カスタムインジケーターから取得した値を表示するEA

弊社でEA開発を請け負う場合も、コンパイル済のカスタムインジケーターを
利用・調査することがあり、そのときに作成したmq4プログラムを共有します。

#property copyright "Copyright 2021, GogoJungle Inc."
#property link      "https://www.gogojungle.co.jp"
#property version   "1.00"
#property strict

extern string custom = "Bands";

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   Comment(
      "0: "+iCustom(NULL,0,custom,0,0)+"
"+
      "1: "+iCustom(NULL,0,custom,1,0)+"
"+
      "2: "+iCustom(NULL,0,custom,2,0)+"
"+
      "3: "+iCustom(NULL,0,custom,3,0)+"
"+
      "4: "+iCustom(NULL,0,custom,4,0)+"
"+
      "5: "+iCustom(NULL,0,custom,5,0)+"
"+
      "6: "+iCustom(NULL,0,custom,6,0)+"
"+
      "7: "+iCustom(NULL,0,custom,7,0)
   );

   Print(
      "0: "+iCustom(NULL,0,custom,0,0)+", "+
      "1: "+iCustom(NULL,0,custom,1,0)+", "+
      "2: "+iCustom(NULL,0,custom,2,0)+", "+
      "3: "+iCustom(NULL,0,custom,3,0)+", "+
      "4: "+iCustom(NULL,0,custom,4,0)+", "+
      "5: "+iCustom(NULL,0,custom,5,0)+", "+
      "6: "+iCustom(NULL,0,custom,6,0)+", "+
      "7: "+iCustom(NULL,0,custom,7,0)
   );
  }
//+------------------------------------------------------------------+

コンパイル済のファイルは、本記事の添付ファイルからダウンロードをお願いします。

使用方法

単純にパラメーターで指定したカスタムインジケーターから取得した値を表示するEAです。
下記は Bands を指定しています。

custom.png

バックテスト

このEAをバックテストのビジュアルモードでスタートした後、
パラメーターで指定したカスタムインジケーターをチャートへ適用すると、
ティックが動くタイミングで、0~7の数値が切り替わります。

動作確認.png

ご覧のとおり、0~7の数値でどのラインが、どの番号に対応しているかがわかります。
0: 真ん中、1: 上、2: 下、3:(なし)、4~7: -


矢印が表示されるカスタムインジケーターの場合は、
矢印が表示されるタイミングで、何番かの値が変わっていると思います。

その番号と値を利用して、つくーるで矢印を判定して、ロジックに組み込みます。
矢印の向きで、番号が変わっている(例えば上矢印が2番で、下矢印が3番)場合もありますのでご注意ください。


ご参考いただけますと幸いです。何卒よろしくお願い申し上げます。

custom.zip

コメント

yh421011
2022/09/15 01:36

サインインジケーターのサインで取引を行うEAを作りたいと考えています。。
使うインジケーターのSELのサインが発生するindex番号が3なので
売りエントリーの条件をサインの発生位置の1本手前でIndex3>0で設定すると
selのサイン以外の場所でも取引が発生してしまいます。
2本手前はIndex3=Empty_VALUEなので2本手前の売りエントリーの条件に
Index3=0を付け加えてもサイン以外の場所で取引が発生ぢてしまいます。
このような場合bay selのサインの場所で売買のエントリーが発生する条件は
どの様に書き込めばいいのでしょう
GBPJPY_M5_2022-9-15_01-25-08.png

TEST.zip
GogoJungle
2022/10/13 21:31

EMPTY_VALUEに関するご質問が過去にございました。
下記の記事をご案内いたします。

カスタムインジケーターとEAつくーるの連携について
https://labo.gogojungle.co.jp/articles/744

ご回答が遅れましたことお詫び申し上げます。
ご参考いただけますと幸いです。何卒よろしくお願い申し上げます。

**
2023/01/24 14:22

RCIを条件にいれたのですが、動作していないようです
対処方法は、あるのでしょうか?

GogoJungle
2023/01/24 17:43

RCIを条件にいれたのですが、動作していないようです
対処方法は、あるのでしょうか?

【RCIカスタムインジケーターを独自にて作られた場合】
本記事上部をご参考いただきまして、計算位置等設定いただけますと可能でございます。

【EAつくーるの取引条件でRCIに関する作成した場合】
下記の記事をご参考いただけますと幸いです。

RCIの動作について
https://labo.gogojungle.co.jp/articles/1086

RCIの設定値
https://labo.gogojungle.co.jp/articles/774

また、メタトレーダー環境により動作しない可能性も考えられますため
念のため、簡易的に他の条件を作成いただき、バックテストの稼働をご確認くださいませ。

ご参考いただけますと幸いです。何卒よろしくお願い申し上げます。

BigRiver
2024/10/04 08:44

本件、途中から失礼いたします。

>カスタムインジケーターのmq4プログラムがあれば、番号がわかるのです

について質問です。

インジケータつくーるにて自作した カスタムインジケータを EAつくーる に取り込むので
mq4ファイルはあります。

【質問】
インジケータつくーる の条件設定において

①描画するインジケータ1つ(=インジケータ1のみ) の場合 
   インジケータ1 ⇒ 計算項目 0

描画するインジケータ2(=インジケータ1.2)の場合
   インジケータ1  ⇒ 計算項目 0  
   インジケータ2  ⇒ 計算項目 1

この理解で正しいですか?

② 上記①が正しいとした場合、

添付図(MetaEdhitor)参照
  描画するインジケータ2つの場合には、SetIndexLabel(1, “計算項目:1”) というものが
  発生しております。

SetIndexLabel(1, “計算項目:1”) とは何ですか?
   ※インジケータ3つにした場合
     SetIndexLabel(2, “計算項目:2”); が生成されます。

③EAつくーるにおいて 
 この自作した カスタマーインジケータ 矢印出現 でエントリ 条件作成の場合

カスタマーインジケータ >  〇〇

この 〇〇部分には 何を(どんな数値)を入れれば良いでしょうか?
 矢印が出現する(=数値発生) ということで 
 
    カスタマーインジケータ > 0

といれて、バックテストしましたが、エントリしません。

お手数をおかけいたします。
上記①②③ ご教示宜しくお願い申し上げます。

【質問】 mq4データ 計算項目 について.pdf
GogoJungle
2024/10/06 20:31

①につきまして

仰る通りでございます。
プログラム内ではカウントが0から始まる関係で、「インジケーター〇」の「〇」から1を引いた数が計算項目の番号となります。

②につきまして

こちらに関しましては、0番目のインジケーター(=インジケーター1)のラベルを表示するための処理が挿入されない仕様のまま修正ができない状況となってしまっておりまして、お詫び申し上げます。

必要であれば、ソースコードに

SetIndexLabel(0, “計算項目:0”);

という1行を追加いただければ幸いです。

③につきまして

利用したいカスタムインジケーターの矢印にマウスを乗せ、データウィンドウをご確認いただくと、数値が表示されることと存じます。
その数値の取りうる範囲を元に、適切な値をご指定いただく必要がございます。

値はこちらの画像のように確認が可能です。
LABO_417_1.png

ただし、MT4の仕様で、データウィンドウの値が空白の場合の条件には注意が必要のようです。
過去に同様のご質問がございました。

https://labo.gogojungle.co.jp/articles/1863

参考になれば幸いでございます。

BigRiver
2024/10/08 16:24

恐れ入ります。
継続質問となります。

③EAつくーるにおいて 
 この自作した カスタマーインジケータ 矢印出現 でエントリ 条件作成の場合

ご指摘いただきました 矢印の数値は Valuer 1.08976 私も確認いたしました。

【試作:EAつくーる】 添付図 ご参照
カスタムインジケータ:Rosoku 1 Ya1800 > 1
パラメータ : 記載通り

本来は ローソク足 0本前 でのインジケータでした。
 試しましたが、エントリせず、
 ローソク足 1本前 の インジケータを作成しなおし、
 同じく 試しましたが エントリできておりません。(添付図は この 1本前の 設定です)

エントリ EAとして 設定不足の箇所 どことなりますでしょうか?

【質問】 EAつくーる カスタマインジケータ流用.pdf
GogoJungle
2024/10/09 14:23

「パラメータ」を入力する際は、「+」ボタンを押して必要な数のテキストボックスを用意していただいた後、各テキストボックスに1つの値のご入力をお願いいたします。

LABO_417_2.png

BigRiver
2024/10/09 16:14

ご指摘ありがとうございます。
EAつくーるのパラメータ入力方法は、インジケータつくーるとは違っていました事、
失念しておりました。

ご指摘の如く、パラメータ入力したのですが、残念ながら、未だ、矢印でのエントリができません。
他、原因は何が考えられますでしょうか?

誠にお手数をおかけいたします。
何卒、宜しくお願い申し上げます。

【質問②】 EAつくーる カスタマインジケータ流用.pdf
GogoJungle
2024/10/10 15:12

BigRiver様と同じ環境で検証がしたく、差し支えなければ、コンパイル後のインジケーターRousoku 1Ya1800をお送りいただくことはできますでしょうか?
秘密のロジック等が含まれていて公開できない場合は、それを外してご作成いただいたものでも問題ございません。

BigRiver
2024/10/14 15:18

ご対応誠にありがとうございます。
support[at]fx-on.com
まで、ファイル一式 メールさせていただきました。

件名:【ファイル一式】カスタムインジケーターの計算項目(インデックス番号)&設定数値が知りたい!

ご確認をお願い申し上げます。

※秘密のロジック等は含まれては いません。
  いたって、シンプルです。

~~~<ご参考まで>~~~~~~~~~~~~~~~
【追加検証】
インジケータが複雑?が問題なのかとも思い、
”Rousoku 1Ya1800”についてEAとして流用せず

EAつくーるで作成できない、ローソク足の長さ(Rosoku 0)のみで
EAツクール側にて カスタマーインジケータとして流用し、矢印発生条件を追加し
EA動作検証しましたが、これでも、 エントリは 実現できませんでした。

BigRiver
2024/10/11 11:24

【追伸】
 インジケータ格納フォルダ
  ⇒第一階層に保存しております。

※添付ファイルご参照

何卒、宜しくお願い申し上げます。

【格納フォルダ】 第一階層に.pdf
GogoJungle
2024/10/14 15:07

ありがとうございます。
現在のご状況とフォルダの構成について承知いたしました。

大変恐れ入りますが、サポート用のアドレスのドメインが
gogojungle.co.jp
に変更になっておりまして、こちらのアドレス宛てにお送りいただけますと幸いでございます。
お手数おかけしますが、何卒よろしくお願いいたします。

BigRiver
2024/10/15 17:05

お世話をおかけいたします。
転送させていただきました。
ご確認何卒、宜しくお願い申し上げます。

GogoJungle
2024/10/25 12:59

ありがとうございます。
いただいたソースコードを確認したところ、Rosoku 1 Ya 1800の79行目で呼び出そうとしているインジケーターの名前がRosoku 1となっておりました。

LABO_417_7.png

こちらはRosoku 0の誤りではないでしょうか?

1を0に変更した結果、正しくエントリーが実行されました。

BigRiver
2024/10/18 06:02

ご確認ありがとうございます。
エントリできるという点で安堵はしつつも・・・。
誠に申し訳ございません。

対象ローソク足を 0本前、1本前の2パターンを作成しており、
私がお送りしたファイル自体が 交錯していておりました。大変申し訳ございません。
インジケータとしては、矢印自体はどちらのパターンでも表記されます。

お送りいたしました EAファイル:yajirusi entori 0hon joken は

コード.jpg

Rosoku 1 Ya 1800 を使用せず、Rosoku 0 を直接流用しております。
インジケータ側を複雑にせず、シンプルにヒストグラム表記(利用)し、ほかの条件文はEAつくーる側で設定しております。
 まさにご指摘をいただきました如く
 >こちらはRosoku 0の誤りではないでしょうか?

その通りにの設定になっております。

【再質問①】
Rosoku 1 Ya 1800 は無視していただき、
  <送付済 ファイル>
   インジケーター:Rosoku 0 インジケータ流用
   EAファイル  :yajirusi entori 0hon joken

としてEAファイル:yajirusi entori 0hon joken
  についての再度修正点をご確認(ご指摘)をいただけないでしょうか?

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
【再質問②】
Rosoku 1 Ya 1800 インジケータ(条件設定をインジ側)を 流用した場合の設定 下記
設定0.jpg
設定1.jpg
設定2.jpg
これでもエントリできません。
この【再質問②】のパターンが一番実施したいパターンです。
完全に矢印表記インジケータを流用し、単純に 
  >数値 
のみのシンプルな
条件設定で済むことを実現させたいです。

御多忙の折、度重なる確認申し訳ございません。
何卒、宜しくお願い申し上げます。

GogoJungle
2024/10/21 19:20

原因が判明いたしました。

再質問①につきまして

送っていただいたファイルyajirusi entori 0hon jokenに何も手を加えない状態でコンパイル後、バックテストを実施いたしましたところ、正しくエントリーしました。
ご修正は必要ないようです。

再質問②につきまして

Rosoku 1 ya 1800の値をログに出力してみたところ、矢印の出現していないタイミングでも0ではなく2147483647という値となっておりました。
このせいで、(カスタムインジケーターの値)> 1という条件は常に満たす状態となってしまっていたわけです。

対処法として、

・(カスタムインジケーターの値)> 0
・(カスタムインジケーターの値)< 99999

という2つの条件をANDで繋ぐことによって、正しくエントリーができることと存じます。
お試しいただければ幸いです。

BigRiver
2024/10/23 18:51

ご連絡遅くなりました。
大変お手数をおかけし、申し訳ございません。
上記ご確認とご教示誠にありがとうございます。


yajirusi entori 0hon joken

②につきまして ご指摘の如く設定しなおしました。

設定1.jpg
設定2.jpg
設定2-2.jpg
設定3.jpg
設定3-3.jpg

大変残念ながら
上記①② とも 私側のMT4 バックテストでは エントリができません。(発生しません)
誠に失礼な質問となりますが、
 ②につきましてもそちらではエントリができていますでしょうか

条件をローソク足の長さ(ヒストグラム)のみ > 〇〇 と単純化し修正し
バックテスト、フォワードテスト 両方とも実施しました。<MT4は TRADEVIEW EURUSD です>
全く、エントリが発生しません。

【質問①】
バックテストや、フォワードテストをするときの注意点。
例)対象 カスタムインジケータの保管場所(フォルダ)
例)検証するときにインジケータもチャート上に同時表記(実際表記させて検証)
           ・・・・等々

何か、原因、改善策等 見当たりますでしょうか?

【質問②】
>再質問②につきまして
>Rosoku 1 ya 1800の値をログに出力してみたところ

<矢印が表記されていない部分>
  このログにだすという 作業はどのようにすれば確認ができるのでしょうか?

なんとしても、EAつくーる側で実現(表現)できない部分をインジケータを利用することで
 EA化を実現させたいです。

引き続きの質問となり、誠に申し訳ございません。
 何卒宜しくお願い申し上げます。

GogoJungle
2024/10/25 15:01

> ②につきましてもそちらではエントリができていますでしょうか

できております。
下記画像のようにエントリーされました。

LABO_417_9.png

1つ気になった点といたしましては、直前のご質問の「条件2の設定」の画像の「パラメータ」につきまして、「1,1,1800,0,…」となっておりますが、正しくは「1,1,0,1800,0,…」のはずでございます。
ご修正ください。

質問①につきまして

テストの際に注意している点といたしましては、

  • ビジュアルモードにし、インジケーターをチャートに同時に表示すること
  • そもそも矢印が出ない状態になっていないかを確認すること
  • インジケーターの表示条件やEAのエントリー条件を緩めると、エントリーしない状況が改善するかを試すこと
  • 「エキスパート設定」を開き、各パラメータの値が前回の別のテストのものの値になっていないか確認すること

が挙げられます。
インジケーターの表示条件を緩める際には、コメントアウトを適切に使うことで、簡単にいろいろなパターンを試せます。
下記をご参考にお試しください。

条件を緩める前

else{
     draw = false;
}

条件を緩めた後

else{
     // draw = false;
}

例えば、インジケーターの表示条件が3つ、ANDで繋がっている場合は、条件の緩め方がオン・オフの2通りの3つ分、つまり2x2x2=8通りございます。
もしも、条件を緩めることによってエントリーされるようになる場合は、条件が厳しすぎたり、条件の設定があり得ないもの(「高値 < 安値」等)となっていたりしないかを確認します。

質問②につきまして

OnTick関数内に下記コードを入れていただくことで、「操作履歴」にログを出力することが可能です。

Print("Rosoku 1 Ya1800 : ", iCustom(Symbol(), 0, "Rosoku 1 Ya1800", 1,1,0,1800,0,1,1,1800,0,2,2, Custom_value_1_1_1, 0));

修正前

int signal = 0;
   double lots = Lots;
   double take_profit = TakeProfit;
   double stop_loss = StopLoss;
   Trade = true;

修正後

int signal = 0;
   double lots = Lots;
   double take_profit = TakeProfit;
   double stop_loss = StopLoss;
   Trade = true;

   Print("Rosoku 1 Ya1800 : ", iCustom(Symbol(), 0, "Rosoku 1 Ya1800", 1,1,0,1800,0,1,1,1800,0,2,2, Custom_value_1_1_1, 0));
BigRiver
2024/10/28 04:07

ご指導、誠にありがとうございました。
 ※パラメーターの入力ケアレスミス(大変失礼いたしました)

”ログを確認する” という作業をご指摘いただけたことで、原因が判明しました。
「 cannot open file 'C:\Users\・・・・・・・・・・・ 」 でした。

過去に、”フォルダの置く場所に注意”ということで同様にご教示いただいていたので、“対象インジケータexeファイルを置く場所を深い場所に格納してはいけない” と意識し インジケータフォルダ内に、一つ(1階層) Rosokuashi というフォルダ作成し、exeファイルを格納しておりました。これがNGでした。
 インジケータフォルダ 直下にexeファイルを(裸にして)置かなければ、読み取って(つながって)くれなかったのですね。
 おかげ様で、無事に SELLエントリできました。安堵いたしました。

ただ、今回のカスタムインジケータ(矢印表記)時のエントリさせるEAの”肝”は、検証いただきました下記につきます。
~~~~~~~~~~~~~~~~~~~~~~
Rosoku 1 ya 1800の値をログに出力してみたところ、矢印の出現していないタイミングでも0ではなく2147483647という値となっておりました。
このせいで、(カスタムインジケーターの値)> 1という条件は常に満たす状態となってしまっていたわけです。

対処法として、

・(カスタムインジケーターの値)> 0
・(カスタムインジケーターの値)< 99999

という2つの条件をANDで繋ぐことによって、正しくエントリーができることと存じます。
~~~~~~~~~~~~~~~~~~~~~~

【追加開発 希望】
カスタムインジケータ利用の場合、数値が肝であり、常に皆さんご苦労されると存じます。

条件式にカスタムインジケータを選択した場合には、下記プログラムを追加する
Print("カスタムインジケータ 名: ", iCustom(Symbol(), 0, “カスタムインジケータ 名”, パラメータ数値 Custom_value_〇_〇_〇, 〇));

⇒数値は操作履歴を見ればわかる

~~~~~~~~~~~~~~~~~~~~~~
【質問】
Print("カスタムインジケータ 名: ", iCustom(Symbol(), 0, “カスタムインジケータ 名”, パラメータ数値 Custom_value_〇_〇_〇, 0));

上記のCustom_value_〇_〇_〇, についてですが
  ⇒Custom_value_1_1_1

上記の 左の1
         中央の1
         右の1

恐れ入ります。
   これらが何を意味するのか ご教示いただくことは可能でしょうか?

GogoJungle
2024/10/29 14:33

無事にエントリーするようになったとのこと、お喜び申し上げます。

追加開発につきまして

ご要望いただきありがとうございます。
恐れ入りますが、こちらの開発に関しましては、現状、行わない方針でございます。
Printを過度に行うとEAの動作が重くなってしまう可能性があるためです。

ご質問につきまして

下記の通りでございます。

左:ポジションの番号です。「ポジション1」ならば「1」になります。
中:条件の番号です。「条件1」ならば「1」になります。
右:ある条件内で、左右のどちらの項目かを表します。左の項目は「1」、右の項目は「2」です。

例えば、「ポジション3」の「条件5」が

「数値 > カスタムインジケーター」

という条件の場合、これに対応する変数名はCustom_value_3_5_2となります。

BigRiver
2024/10/29 21:22

ご教示ありがとうございます。
Print については 数値 確認時に任意で利用させていただきます。

この期に及んで 質問 お許しください。

>Rosoku 1 ya 1800の値をログに出力してみたところ、矢印の出現していないタイミングでも0ではなく2147483647という値となっておりました。

2147483647(=32ビット整数の最大値で、MT4やMQL4のプログラム内で「無限大」や「制限なし」を意味)という数字に対して、 プログラム条件として
    < 99999
  として、条件として成立し 矢印表記時のエントリが成立しております。

【質問】
  シンプルに考えると
   カスタムインジケータ  < 2147483647 
  となるかと思うのですが・・・

99999 が最大値「無限大」「制限なし」=2147483647 と同義の数値(値) となるのですか?

GogoJungle
2024/10/30 10:46

「99999」という数については、「10000」でも「98765」でも「1111111」でも、2147483647よりも小さい数であれば何でも構いません。

"プログラミングあるある"ですが、後から見返した際に一目で「特に意味はないが、大きい数である」ということがわかりやすいため、99999を選択しました。

BigRiver
2024/11/01 08:34

上記、承知いたしました。

おかげ様でカスタムインジケータを流用した EA化 納得できました。
ご指導誠にありがとうございました。

引続き何卒宜しくお願い申し上げます。

関連トピックス

検索結果がありません。

ノーコードで誰でも簡単EA開発!MQL言語学習にも使える! | GogoJungle

注目トピックス

検索結果がありません。