MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1737 1...173017311732173317341735173617371738173917401741174217431744...1953 新しいコメント Ivan Butko 2021.11.10 09:24 #17361 Artyom Trishkin #:もちろん、プログラムは別スレッドで端末が何らかのデータを記録するのを待っているわけではありません。 ありがとうございます、つまり Ivan Butko 2021.11.10 11:10 #17362 for(i; i>0; i--)演算 子のブレーク後に実行されるのは "i--"式ですか、それとも "式3 "だけですか(ドキュメントによれば)。教科書には載っていなかった。 ブレーク後に Print(i); ブレーク前に i-- と if (i==0) がある場合、i が演算子内部で既に 0 に達していれば、それが終了コマンドとなるのですが、なぜ時々「-1」が投げられるのか理解できません。 i はコードのさらに下の Close[i] で使われているので、「範囲外のエラー」を発生させるのです。 Tretyakov Rostyslav 2021.11.10 11:20 #17363 Ivan Butko for(i; i>0; i--)演算 子のブレーク後に実行されるのは "i--"式ですか、それとも "式3 "だけですか(ドキュメントによれば)。教科書には載っていなかった。ブレーク後に Print(i); ブレーク前に i-- と if (i==0) がある場合、i が演算子内部で既に 0 に達していれば、それが終了コマンドとなるのですが、なぜ時々「-1」が投げられるのか理解できません。 i はコードのさらに下の Close[i] で使われているので、「範囲外のエラー」を発生させるのです。 私には理解できない。コードを表示する Valeriy Yastremskiy 2021.11.10 11:23 #17364 Ivan Butko for(i; i>0; i--)演算 子のブレーク後に実行されるのは "i--"式ですか、それとも "式3 "だけですか(ドキュメントによれば)。教科書には載っていなかった。ブレーク後に Print(i); ブレーク前に i-- と if (i==0) がある場合、i が演算子内部で既に 0 に達していれば、それが終了コマンドとなるのですが、なぜ時々「-1」が投げられるのか理解できません。 i はコードのさらに下の Close[i] で使われているので、「範囲外のエラー」を発生させるのです。 ブレーク後、ループの次の演算子へ、その時点の反復の終わりまで反復し、新しいループを開始した後、ループを終了します。 Ivan Butko 2021.11.10 11:34 #17365 Valeriy Yastremskiy for (i; i>0; i--){i--;if (i==0) break;}Print(i);Print(Close[i]); // ログに(-1)と出ているのですが、どうしてでしょうか?で、Close[-1]が起きない ため、エラー配列の範囲外となっています。 つまり、ヘッダのブレーク後(i; i>0; i--)も3番目の式「i--」が実行 されると理解してよいでしょうか? Документация по MQL5: Основы языка / Операторы / Оператор цикла for www.mql5.com Оператор цикла for - Операторы - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5 Konstantin Nikitin 2021.11.10 11:37 #17366 Ivan Butko for (i; i>0; i--){i--;if (i==0) break;}Print(i);Print(Close[i]); // ログに(-1)とありますが、どうしてでしょうか...。であり、したがって、Close[-1] が起こらないので、エラー配列の範囲外である。 つまり、ヘッダのブレークの後(i; i>0; i--)は、とにかく第3式「i--」が実行 されると理解してよいでしょうか?正しい書き方i=10; for (i; i>0; i--) { i--; if (i==0) break; } Print(i); Print(Close[i]); ヘッダーだけでなく、ループの本体でも取り上げているんですね。 Ivan Butko 2021.11.10 11:41 #17367 Konstantin Nikitin #:正しく書き込むことができます。 私がコードにどんなくだらないことを書いているかなんて聞かないでください。この演算子のニュアンスを理解したいのですが)本文で「i=0だからそろそろここを出よう」と指定したようですが、次の演算子に制御を渡すべきなのに、演算子は受け取ってもう一度式を実行します。 Konstantin Nikitin 2021.11.10 11:43 #17368 Ivan Butko #:どんなくだらないことを書いているかは聞かないでください。この演算子のニュアンスを理解したいのですが)ボディで「i=0だからそろそろここを出よう」と指定したようなものですが、次の演算子に制御を渡すべきなのに、演算子が受け取ってもう一度式を実行してしまうのです はい、そうです。でも、このチェックの前に取り上げていますね。このように書きます。 i=10; for (i; i>0; i--) { if (i==0) break; i--; } Print(i); Print(Close[i]); 賽は投げられた Ivan Butko 2021.11.10 11:45 #17369 Konstantin Nikitin #:はい、そうです。でも、このチェックの前に取り上げていますね。このように書きます。 おうを手に入れた。了解しました。 皆様、早速のご返信ありがとうございました。 Nikolay Ivanov 2021.11.10 11:59 #17370 Ivan Butko #:嗚呼...了解です。了解しました。 皆様、早速のご返信ありがとうございました。 あなたのコードは-1でなく0を表示します。 void OnStart() { int i=10; for (i; i>0; i--) { i--; if (i==0) break; } Print(i); } //+------------------------------------------------------------------+ おそらく-1がどこかから印刷されたもので、ほとんどの場合、コード全体がプリンターの中にあるのでしょう...。 問題を解決しようとする前に、その問題を特定する必要がある...。そこにあることを確認し、場所を特定してから解く...。 1...173017311732173317341735173617371738173917401741174217431744...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
もちろん、プログラムは別スレッドで端末が何らかのデータを記録するのを待っているわけではありません。
ありがとうございます、つまり
ブレーク後に Print(i); ブレーク前に i-- と if (i==0) がある場合、i が演算子内部で既に 0 に達していれば、それが終了コマンドとなるのですが、なぜ時々「-1」が投げられるのか理解できません。 i はコードのさらに下の Close[i] で使われているので、「範囲外のエラー」を発生させるのです。
ブレーク後、ループの次の演算子へ、その時点の反復の終わりまで反復し、新しいループを開始した後、ループを終了します。
{
i--;
if (i==0) break;
}
Print(i);
Print(Close[i]);
// ログに(-1)と出ているのですが、どうしてでしょうか?で、Close[-1]が起きない ため、エラー配列の範囲外となっています。
つまり、ヘッダのブレーク後(i; i>0; i--)も3番目の式「i--」が実行 されると理解してよいでしょうか?
{
i--;
if (i==0) break;
}
Print(i);
Print(Close[i]);
// ログに(-1)とありますが、どうしてでしょうか...。であり、したがって、Close[-1] が起こらないので、エラー配列の範囲外である。
つまり、ヘッダのブレークの後(i; i>0; i--)は、とにかく第3式「i--」が実行 されると理解してよいでしょうか?
正しい書き方
ヘッダーだけでなく、ループの本体でも取り上げているんですね。正しく書き込むことができます。
私がコードにどんなくだらないことを書いているかなんて聞かないでください。この演算子のニュアンスを理解したいのですが)本文で「i=0だからそろそろここを出よう」と指定したようですが、次の演算子に制御を渡すべきなのに、演算子は受け取ってもう一度式を実行します。
どんなくだらないことを書いているかは聞かないでください。この演算子のニュアンスを理解したいのですが)ボディで「i=0だからそろそろここを出よう」と指定したようなものですが、次の演算子に制御を渡すべきなのに、演算子が受け取ってもう一度式を実行してしまうのです
はい、そうです。でも、このチェックの前に取り上げていますね。このように書きます。
賽は投げられた
はい、そうです。でも、このチェックの前に取り上げていますね。このように書きます。
おうを手に入れた。了解しました。
皆様、早速のご返信ありがとうございました。
嗚呼...了解です。了解しました。
皆様、早速のご返信ありがとうございました。
あなたのコードは-1でなく0を表示します。
おそらく-1がどこかから印刷されたもので、ほとんどの場合、コード全体がプリンターの中にあるのでしょう...。
問題を解決しようとする前に、その問題を特定する必要がある...。そこにあることを確認し、場所を特定してから解く...。