MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1414 1...140714081409141014111412141314141415141614171418141914201421...1953 新しいコメント Alexey Viktorov 2021.03.13 09:21 #14131 Aleksei Stepanenko:を作成するか、別途、配列印刷機能を作成します。そして、どこからでも呼び出せる Alexey、長い間黙っていたのですが、これを静かに見ることができません...明示的な型変換の方がずっとシンプルでコストがかからないのに、なぜIntegerToString()を使うのか......。 eStr+=(string)i+": "+DoubleToString(eArray[i],4)+", "; Aleksei Stepanenko 2021.03.13 09:28 #14132 を、習慣にしています。) ANDREY 2021.03.13 09:38 #14133 Aleksei Stepanenko:を作成するか、別途、配列印刷機能を作成します。そして、どこからでも呼び出せる ご理解とご解説をありがとうございました。私は、初めて知る情報を勉強し、理解するために一旦停止しています。 ANDREY 2021.03.13 09:38 #14134 Alexey Viktorov:Alexey、長い間黙っていましたが、静かに見れません...この場合、明示的な型変換の方がはるかに簡単でコストがかからないのに、なぜIntegerToString()を使うのでしょうか......。 そして、こちらこそ、貴重な補足をありがとうございました。 Tretyakov Rostyslav 2021.03.13 11:31 #14135 EAの外部ウィンドウの作成について、どこを見て読めばいいか教えてください。 Maxim Kuznetsov 2021.03.13 12:07 #14136 MakarFX: EAの外部ウィンドウの作成について、どこを見ればいいのか、読めばいいのか、教えてください。 C#やDelphi、その他あらゆるものに関して、フォーラムや出版物で... tcl.Eval("toplevel .myWin ; wm title .myWin {Окношко}" ); // простите, не удержался ANDREY 2021.03.13 16:03 #14137 Aleksei Stepanenko:を作成するか、別途、配列印刷機能を作成します。そして、どこからでも呼び出せる カスタム配列の印刷機能を別に作ることにしました。というか、作らないで、( PrintArray() )でそれは、もうすでにやっていることです。 私は何をしたのだろう? OnTick()関数の中にユーザーPrintArray()関数の呼び出しを配置したのですが・・・。Kovalev氏のチュートリアルにあるように 2.PrintArray()関数の本体をOnTick()関数の外に配置したのですが・・・。... コバレフのチュートリアルにある通りです。 この関数の本体からの新しい変数はすべてローカルです。これらはこの関数内で宣言され、初期化される。 int P1=0; double LoY[31]; void OnTick() { if (P1==0) { for(int r=0; r<31;r++) { LoY[r]=1.6104+(r*2)*0.0001; P1=1; } } //************************************************************* Б Л О К N 2 for(int x=0; x<31;x++) { if (Bid < LoY[x] ) { LoY[x]=Bid; } } ArraySort(LoY,WHOLE_ARRAY,0,MODE_ASCEND); PrintArray(LoY); } //**************************** void PrintArray(double &eArray) { string eStr=""; int eSize=ArraySize(eArray); for(int i=0; i<eSize; i++) { eStr+=IntegerToString(i)+": "+DoubleToString(eArray[i],4)+", "; } Print(str); } あなたの関数には何も手を加えていません。しかし、コンパイラはなぜか6つのエラーを出します。そして、そのどれもがユーザー機能に関わるものです。 何がいけなかったのか、教えていただけるとありがたいです。 ありがとうございます。 Alexey Viktorov 2021.03.13 18:07 #14138 ANDREY:カスタム配列の印刷機能を別に作ることにしました。というか、作らないで、使う( PrintArray( )をすでに行っています。私は何をしたのだろう?OnTick()関数の中にユーザーPrintArray()関数の呼び出しを配置したのですが・・・。Kovalev氏のチュートリアルにあるように2.PrintArray()関数の本体をOnTick()関数の外に配置したのですが・・・。... コバレフのチュートリアルにある通りです。この関数本体からの新しい変数は、すべてローカル変数です。この関数の中で宣言され、初期化されます。あなたの関数には何も手を加えていません。しかし、コンパイラはなぜか6つのエラーを出します。そして、そのすべてがユーザー機能に関連している。何がいけなかったのか、教えていただけるとありがたいです。 ありがとうございます。 正確には覚えていないし、確認するのも億劫だ。角括弧を追加してみてください void PrintArray(double &eArray[]) ANDREY 2021.03.13 18:19 #14139 Aleksei Stepanenko: string str=""; for(int r=0; r<31;r++) { LoY[r]=1.6104+r*0.0001; str+="--LoY["+IntegerToString(r)+"]--, "+DoubleToString(LoY[r],4)+", "; } Print(str); やっとわかったような気がします(鈍感なもので)・・・・。 最初の反復では、文字列変数strは空である。文字=+は、strに対して、自分自身を空(値なし)にすることと、自分自身を空にして値を持つ文字列、すなわち"--LoY["+IntegerToString(r)+"]--, "+DoubleToString(LoY[r],4)+","; を追加 することを指示しています。この文字列の値は、" --LoY[0]--, --1.6104-- " である。これらの操作の後、strは最初の反復で値"--LoY[0]--, --1.6104-- " を取得 する。御社の用語で理解すると、これを第1エレメントと呼ぶのですね。 2回目の繰り返しで、strはすでに「--LoY[0]--, -1」という値で最初の要素を持って います。6104-- " 文字 =+ は str に最初の要素の値を 代入するように指示しという文字列を追加し、他の値、すなわち "--LoY["+"+IntegerToString(r)+"]--, "+DoubleToString(LoY[r],4)+","; を最初の 要素の値として追加します。この文字列の値はすでに" --LoY[1]--, --1.6105-- "である。これらの操作の後、2回目の反復でstrは「--LoY[0]-- --1.6104----LoY[1]-- --1.6105--」という値を取得する。つまり、strは2番目の要素を持ち、30回目の反復では、 strは配列要素の値が異なる30個の要素を持つ ことになります。 ループが終了すると、30個の項目を持つ文字列変数strがループの外に一度だけ出力されます。 このアルゴリズムを理解するのに時間がかかったのは、あなたが足し算について話しているとき、私は赤いプラス記号 "--LoY["+IntegerToString(r)+"]--,"+DoubleToString(LoY[r],4)+" にだけ注意を払い、 str+= には注意を払わなかったからです。 というわけで、赤いプラス「--LoY["+IntegerToString(r)+"]--, "+DoubleToString(LoY[r],4)+" がこのアルゴリズムでどんな役割を果たすのかはまだ謎です。 よろしくお願いします。 ANDREY 2021.03.13 18:32 #14140 Alexey Viktorov:正確には覚えていないし、確認するのも億劫だ。角括弧を追加してみてください 角括弧を追加しました void PrintArray(double &eArray[]) コンパイラは、エラーや警告を表示していません。 しかし......Print() 関数は、なぜか一度も印刷 されませんでした。 私もそうなので、あなたの怠慢はよくわかります。あまりの手抜きと私の熱意がそれに代わるものであれば、カスタム関数の他の不具合を教えていただければ幸いです。 ご迷惑をおかけして申し訳ございません。 1...140714081409141014111412141314141415141614171418141914201421...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
を作成するか、別途、配列印刷機能を作成します。
そして、どこからでも呼び出せる
Alexey、長い間黙っていたのですが、これを静かに見ることができません...明示的な型変換の方がずっとシンプルでコストがかからないのに、なぜIntegerToString()を使うのか......。
を、習慣にしています。)
を作成するか、別途、配列印刷機能を作成します。
そして、どこからでも呼び出せる
ご理解とご解説をありがとうございました。私は、初めて知る情報を勉強し、理解するために一旦停止しています。
Alexey、長い間黙っていましたが、静かに見れません...この場合、明示的な型変換の方がはるかに簡単でコストがかからないのに、なぜIntegerToString()を使うのでしょうか......。
そして、こちらこそ、貴重な補足をありがとうございました。
EAの外部ウィンドウの作成について、どこを見ればいいのか、読めばいいのか、教えてください。
C#やDelphi、その他あらゆるものに関して、フォーラムや出版物で...
を作成するか、別途、配列印刷機能を作成します。
そして、どこからでも呼び出せる
カスタム配列の印刷機能を別に作ることにしました。というか、作らないで、( PrintArray() )でそれは、もうすでにやっていることです。
私は何をしたのだろう?
OnTick()関数の中にユーザーPrintArray()関数の呼び出しを配置したのですが・・・。Kovalev氏のチュートリアルにあるように
2.PrintArray()関数の本体をOnTick()関数の外に配置したのですが・・・。... コバレフのチュートリアルにある通りです。
この関数の本体からの新しい変数はすべてローカルです。これらはこの関数内で宣言され、初期化される。
あなたの関数には何も手を加えていません。しかし、コンパイラはなぜか6つのエラーを出します。そして、そのどれもがユーザー機能に関わるものです。

何がいけなかったのか、教えていただけるとありがたいです。
ありがとうございます。
カスタム配列の印刷機能を別に作ることにしました。というか、作らないで、使う( PrintArray( )をすでに行っています。
私は何をしたのだろう?
OnTick()関数の中にユーザーPrintArray()関数の呼び出しを配置したのですが・・・。Kovalev氏のチュートリアルにあるように
2.PrintArray()関数の本体をOnTick()関数の外に配置したのですが・・・。... コバレフのチュートリアルにある通りです。
この関数本体からの新しい変数は、すべてローカル変数です。この関数の中で宣言され、初期化されます。
あなたの関数には何も手を加えていません。しかし、コンパイラはなぜか6つのエラーを出します。そして、そのすべてがユーザー機能に関連している。
何がいけなかったのか、教えていただけるとありがたいです。
ありがとうございます。
正確には覚えていないし、確認するのも億劫だ。角括弧を追加してみてください
Aleksei Stepanenko:
やっとわかったような気がします(鈍感なもので)・・・・。
最初の反復では、文字列変数strは空である。文字=+は、strに対して、自分自身を空(値なし)にすることと、自分自身を空にして値を持つ文字列、すなわち"--LoY["+IntegerToString(r)+"]--, "+DoubleToString(LoY[r],4)+","; を追加 することを指示しています。この文字列の値は、" --LoY[0]--, --1.6104-- " である。これらの操作の後、strは最初の反復で値"--LoY[0]--, --1.6104-- " を取得 する。御社の用語で理解すると、これを第1エレメントと呼ぶのですね。
2回目の繰り返しで、strはすでに「--LoY[0]--, -1」という値で最初の要素を持って います。6104-- " 文字 =+ は str に最初の要素の値を 代入するように指示しという文字列を追加し、他の値、すなわち "--LoY["+"+IntegerToString(r)+"]--, "+DoubleToString(LoY[r],4)+","; を最初の 要素の値として追加します。この文字列の値はすでに" --LoY[1]--, --1.6105-- "である。これらの操作の後、2回目の反復でstrは「--LoY[0]-- --1.6104----LoY[1]-- --1.6105--」という値を取得する。つまり、strは2番目の要素を持ち、30回目の反復では、 strは配列要素の値が異なる30個の要素を持つ ことになります。
ループが終了すると、30個の項目を持つ文字列変数strがループの外に一度だけ出力されます。
このアルゴリズムを理解するのに時間がかかったのは、あなたが足し算について話しているとき、私は赤いプラス記号 "--LoY["+IntegerToString(r)+"]--,"+DoubleToString(LoY[r],4)+" にだけ注意を払い、 str+= には注意を払わなかったからです。
というわけで、赤いプラス「--LoY["+IntegerToString(r)+"]--, "+DoubleToString(LoY[r],4)+" がこのアルゴリズムでどんな役割を果たすのかはまだ謎です。
よろしくお願いします。
正確には覚えていないし、確認するのも億劫だ。角括弧を追加してみてください
角括弧を追加しました void PrintArray(double &eArray[]) コンパイラは、エラーや警告を表示していません。
しかし......Print() 関数は、なぜか一度も印刷 されませんでした。
私もそうなので、あなたの怠慢はよくわかります。あまりの手抜きと私の熱意がそれに代わるものであれば、カスタム関数の他の不具合を教えていただければ幸いです。
ご迷惑をおかけして申し訳ございません。