最近、つくーるで、カスタムインジケーターを利用したい場合に
計算項目に入力する番号がわからない!というお問い合わせが増えています。
例えば、上方向の矢印のサインが出たら、エントリーするように作成したい!
このラインとあのラインを現在値が下回ったときは決済したい!など。
カスタムインジケーターのmq4プログラムがあれば、番号がわかるのですが
ex4しかない場合は、どの番号が何に対応しているのか探すしかありません。
弊社で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 を指定しています。
このEAをバックテストのビジュアルモードでスタートした後、
パラメーターで指定したカスタムインジケーターをチャートへ適用すると、
ティックが動くタイミングで、0~7の数値が切り替わります。
ご覧のとおり、0~7の数値でどのラインが、どの番号に対応しているかがわかります。
0: 真ん中、1: 上、2: 下、3:(なし)、4~7: -
矢印が表示されるカスタムインジケーターの場合は、
矢印が表示されるタイミングで、何番かの値が変わっていると思います。
その番号と値を利用して、つくーるで矢印を判定して、ロジックに組み込みます。
矢印の向きで、番号が変わっている(例えば上矢印が2番で、下矢印が3番)場合もありますのでご注意ください。
ご参考いただけますと幸いです。何卒よろしくお願い申し上げます。
検索結果がありません。 |
検索結果がありません。 |
サインインジケーターのサインで取引を行うEAを作りたいと考えています。。
使うインジケーターのSELのサインが発生するindex番号が3なので
売りエントリーの条件をサインの発生位置の1本手前でIndex3>0で設定すると
selのサイン以外の場所でも取引が発生してしまいます。
2本手前はIndex3=Empty_VALUEなので2本手前の売りエントリーの条件に
Index3=0を付け加えてもサイン以外の場所で取引が発生ぢてしまいます。
このような場合bay selのサインの場所で売買のエントリーが発生する条件は
どの様に書き込めばいいのでしょう
EMPTY_VALUEに関するご質問が過去にございました。
下記の記事をご案内いたします。
ご回答が遅れましたことお詫び申し上げます。
ご参考いただけますと幸いです。何卒よろしくお願い申し上げます。
RCIを条件にいれたのですが、動作していないようです
対処方法は、あるのでしょうか?
【RCIカスタムインジケーターを独自にて作られた場合】
本記事上部をご参考いただきまして、計算位置等設定いただけますと可能でございます。
【EAつくーるの取引条件でRCIに関する作成した場合】
下記の記事をご参考いただけますと幸いです。
また、メタトレーダー環境により動作しない可能性も考えられますため
念のため、簡易的に他の条件を作成いただき、バックテストの稼働をご確認くださいませ。
ご参考いただけますと幸いです。何卒よろしくお願い申し上げます。
本件、途中から失礼いたします。
>カスタムインジケーターの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
といれて、バックテストしましたが、エントリしません。
お手数をおかけいたします。
上記①②③ ご教示宜しくお願い申し上げます。
①につきまして
仰る通りでございます。
プログラム内ではカウントが0から始まる関係で、「インジケーター〇」の「〇」から1を引いた数が計算項目の番号となります。
②につきまして
こちらに関しましては、0番目のインジケーター(=インジケーター1)のラベルを表示するための処理が挿入されない仕様のまま修正ができない状況となってしまっておりまして、お詫び申し上げます。
必要であれば、ソースコードに
という1行を追加いただければ幸いです。
③につきまして
利用したいカスタムインジケーターの矢印にマウスを乗せ、データウィンドウをご確認いただくと、数値が表示されることと存じます。
その数値の取りうる範囲を元に、適切な値をご指定いただく必要がございます。
値はこちらの画像のように確認が可能です。
ただし、MT4の仕様で、データウィンドウの値が空白の場合の条件には注意が必要のようです。
過去に同様のご質問がございました。
https://labo.gogojungle.co.jp/articles/1863
参考になれば幸いでございます。
恐れ入ります。
継続質問となります。
③EAつくーるにおいて
この自作した カスタマーインジケータ 矢印出現 でエントリ 条件作成の場合
ご指摘いただきました 矢印の数値は Valuer 1.08976 私も確認いたしました。
【試作:EAつくーる】 添付図 ご参照
カスタムインジケータ:Rosoku 1 Ya1800 > 1
パラメータ : 記載通り
本来は ローソク足 0本前 でのインジケータでした。
試しましたが、エントリせず、
ローソク足 1本前 の インジケータを作成しなおし、
同じく 試しましたが エントリできておりません。(添付図は この 1本前の 設定です)
エントリ EAとして 設定不足の箇所 どことなりますでしょうか?
「パラメータ」を入力する際は、「+」ボタンを押して必要な数のテキストボックスを用意していただいた後、各テキストボックスに1つの値のご入力をお願いいたします。
ご指摘ありがとうございます。
EAつくーるのパラメータ入力方法は、インジケータつくーるとは違っていました事、
失念しておりました。
ご指摘の如く、パラメータ入力したのですが、残念ながら、未だ、矢印でのエントリができません。
他、原因は何が考えられますでしょうか?
誠にお手数をおかけいたします。
何卒、宜しくお願い申し上げます。
BigRiver様と同じ環境で検証がしたく、差し支えなければ、コンパイル後のインジケーター
Rousoku 1Ya1800
をお送りいただくことはできますでしょうか?秘密のロジック等が含まれていて公開できない場合は、それを外してご作成いただいたものでも問題ございません。
ご対応誠にありがとうございます。
support[at]fx-on.com
まで、ファイル一式 メールさせていただきました。
件名:【ファイル一式】カスタムインジケーターの計算項目(インデックス番号)&設定数値が知りたい!
ご確認をお願い申し上げます。
※秘密のロジック等は含まれては いません。
いたって、シンプルです。
~~~<ご参考まで>~~~~~~~~~~~~~~~
【追加検証】
インジケータが複雑?が問題なのかとも思い、
”Rousoku 1Ya1800”についてEAとして流用せず
EAつくーるで作成できない、ローソク足の長さ(Rosoku 0)のみで
EAツクール側にて カスタマーインジケータとして流用し、矢印発生条件を追加し
EA動作検証しましたが、これでも、 エントリは 実現できませんでした。
【追伸】
インジケータ格納フォルダ
⇒第一階層に保存しております。
※添付ファイルご参照
何卒、宜しくお願い申し上げます。
ありがとうございます。
現在のご状況とフォルダの構成について承知いたしました。
大変恐れ入りますが、サポート用のアドレスのドメインが
gogojungle.co.jp
に変更になっておりまして、こちらのアドレス宛てにお送りいただけますと幸いでございます。
お手数おかけしますが、何卒よろしくお願いいたします。
お世話をおかけいたします。
転送させていただきました。
ご確認何卒、宜しくお願い申し上げます。
ありがとうございます。
いただいたソースコードを確認したところ、
Rosoku 1 Ya 1800
の79行目で呼び出そうとしているインジケーターの名前がRosoku 1
となっておりました。こちらは
Rosoku 0
の誤りではないでしょうか?1を0に変更した結果、正しくエントリーが実行されました。
ご確認ありがとうございます。
エントリできるという点で安堵はしつつも・・・。
誠に申し訳ございません。
対象ローソク足を 0本前、1本前の2パターンを作成しており、
私がお送りしたファイル自体が 交錯していておりました。大変申し訳ございません。
インジケータとしては、矢印自体はどちらのパターンでも表記されます。
お送りいたしました EAファイル:yajirusi entori 0hon joken は
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 インジケータ(条件設定をインジ側)を 流用した場合の設定 下記
これでもエントリできません。
この【再質問②】のパターンが一番実施したいパターンです。
完全に矢印表記インジケータを流用し、単純に
>数値
のみのシンプルな
条件設定で済むことを実現させたいです。
御多忙の折、度重なる確認申し訳ございません。
何卒、宜しくお願い申し上げます。
原因が判明いたしました。
再質問①につきまして
送っていただいたファイル
yajirusi entori 0hon joken
に何も手を加えない状態でコンパイル後、バックテストを実施いたしましたところ、正しくエントリーしました。ご修正は必要ないようです。
再質問②につきまして
Rosoku 1 ya 1800の値をログに出力してみたところ、矢印の出現していないタイミングでも0ではなく
2147483647
という値となっておりました。このせいで、(カスタムインジケーターの値)> 1という条件は常に満たす状態となってしまっていたわけです。
対処法として、
・(カスタムインジケーターの値)> 0
・(カスタムインジケーターの値)< 99999
という2つの条件をANDで繋ぐことによって、正しくエントリーができることと存じます。
お試しいただければ幸いです。
ご連絡遅くなりました。
大変お手数をおかけし、申し訳ございません。
上記ご確認とご教示誠にありがとうございます。
①
yajirusi entori 0hon joken
②につきまして ご指摘の如く設定しなおしました。
大変残念ながら
上記①② とも 私側のMT4 バックテストでは エントリができません。(発生しません)
誠に失礼な質問となりますが、
②につきましてもそちらではエントリができていますでしょうか
条件をローソク足の長さ(ヒストグラム)のみ > 〇〇 と単純化し修正し
バックテスト、フォワードテスト 両方とも実施しました。<MT4は TRADEVIEW EURUSD です>
全く、エントリが発生しません。
【質問①】
バックテストや、フォワードテストをするときの注意点。
例)対象 カスタムインジケータの保管場所(フォルダ)
例)検証するときにインジケータもチャート上に同時表記(実際表記させて検証)
・・・・等々
何か、原因、改善策等 見当たりますでしょうか?
【質問②】
>再質問②につきまして
>Rosoku 1 ya 1800の値をログに出力してみたところ
<矢印が表記されていない部分>
このログにだすという 作業はどのようにすれば確認ができるのでしょうか?
なんとしても、EAつくーる側で実現(表現)できない部分をインジケータを利用することで
EA化を実現させたいです。
引き続きの質問となり、誠に申し訳ございません。
何卒宜しくお願い申し上げます。
> ②につきましてもそちらではエントリができていますでしょうか
できております。
下記画像のようにエントリーされました。
1つ気になった点といたしましては、直前のご質問の「条件2の設定」の画像の「パラメータ」につきまして、「1,1,1800,0,…」となっておりますが、正しくは「1,1,0,1800,0,…」のはずでございます。
ご修正ください。
質問①につきまして
テストの際に注意している点といたしましては、
が挙げられます。
インジケーターの表示条件を緩める際には、コメントアウトを適切に使うことで、簡単にいろいろなパターンを試せます。
下記をご参考にお試しください。
条件を緩める前
条件を緩めた後
例えば、インジケーターの表示条件が3つ、ANDで繋がっている場合は、条件の緩め方がオン・オフの2通りの3つ分、つまり2x2x2=8通りございます。
もしも、条件を緩めることによってエントリーされるようになる場合は、条件が厳しすぎたり、条件の設定があり得ないもの(「高値 < 安値」等)となっていたりしないかを確認します。
質問②につきまして
OnTick関数内に下記コードを入れていただくことで、「操作履歴」にログを出力することが可能です。
修正前
修正後
ご指導、誠にありがとうございました。
※パラメーターの入力ケアレスミス(大変失礼いたしました)
”ログを確認する” という作業をご指摘いただけたことで、原因が判明しました。
「 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
恐れ入ります。
これらが何を意味するのか ご教示いただくことは可能でしょうか?
無事にエントリーするようになったとのこと、お喜び申し上げます。
追加開発につきまして
ご要望いただきありがとうございます。
恐れ入りますが、こちらの開発に関しましては、現状、行わない方針でございます。
Printを過度に行うとEAの動作が重くなってしまう可能性があるためです。
ご質問につきまして
下記の通りでございます。
例えば、「ポジション3」の「条件5」が
「数値 > カスタムインジケーター」
という条件の場合、これに対応する変数名は
Custom_value_3_5_2
となります。ご教示ありがとうございます。
Print については 数値 確認時に任意で利用させていただきます。
この期に及んで 質問 お許しください。
>Rosoku 1 ya 1800の値をログに出力してみたところ、矢印の出現していないタイミングでも0ではなく2147483647という値となっておりました。
2147483647(=32ビット整数の最大値で、MT4やMQL4のプログラム内で「無限大」や「制限なし」を意味)という数字に対して、 プログラム条件として
< 99999
として、条件として成立し 矢印表記時のエントリが成立しております。
【質問】
シンプルに考えると
カスタムインジケータ < 2147483647
となるかと思うのですが・・・
99999 が最大値「無限大」「制限なし」=2147483647 と同義の数値(値) となるのですか?
「99999」という数については、「10000」でも「98765」でも「1111111」でも、2147483647よりも小さい数であれば何でも構いません。
"プログラミングあるある"ですが、後から見返した際に一目で「特に意味はないが、大きい数である」ということがわかりやすいため、99999を選択しました。
上記、承知いたしました。
おかげ様でカスタムインジケータを流用した EA化 納得できました。
ご指導誠にありがとうございました。
引続き何卒宜しくお願い申し上げます。