MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 18 1...111213141516171819202122232425...1953 新しいコメント Timur1988 2016.11.28 21:24 #171 Artyom Trishkin: それはあまり良くないですね。おそらくコンパイル時に警告が出たのでしょうか?このような場合は、#property strict ではなく、警告の原因を取り除く必要があります。 property strictを書いたとき、コンパイラはfor()の各ループで変数に型を持たせなければならないというエラーを出したので、各ループでint iとint pを書かなければならなかったのです。その後、コンパイラはエラーを出さなくなったが、その行はビルドされなかった。property strictを削除したら、コンパイラが各サイクルで型宣言をする必要がなくなり、その行がビルドされるようになりました。 7u6y5t4r3e2w1q 2016.11.28 21:39 #172 残高を増やしたのに、本当の口座が ある端末が見つからない。 Vitalie Postolache 2016.11.28 22:00 #173 Timur1988: property strictを綴ると、コンパイラはfor()ループごとに変数には型が必要だというエラーを発生させるので、ループごとにint iとint pを綴らなければなりませんでした。その後、コンパイラはエラーを出さなくなったが、その行はビルドされなかった。このとき、#property strictを削除すると、コンパイラは各ループで型宣言をする必要がなくなり、その行がビルドされるようになりました。ロジックの暗黙のエラーを利用した典型的なケース。コンパイラが「厳しく」なってから、自己欺瞞が徐々に消えていく。同じループがたくさんあるのが不思議だったのですが?また、チャート上でインジケータを 実行する際に「out ofarray」というエラーが発生しても、何ら気にしないのはなぜでしょうか?例えば、ここ。 for(int i=1; i<n; i++) { for(int p=0; p<m; p++) { sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p]; sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p]; } } Vitalie Postolache 2016.11.28 22:03 #174 7u6y5t4r3e2w1q:残高を増やしたのに、本当の口座が ある端末が見つからない。 端末は同じで、実際のアカウントで 再ログインする必要があります。方法:「ファイル」-「取引口座に接続」-表示されるウィンドウで口座番号、パスワード、サーバーを指定します。これらのデータはすべてDCから提供されたもので、何か質問があったときのためです。 Andrey F. Zelinsky 2016.11.28 22:36 #175 Timur1988: property strictを綴ると、コンパイラはfor()ループのたびに変数には型が必要だとエラーを出すので、ループのたびにint iとint pを綴らなければなりませんでした。その後、コンパイラはエラーを出さなくなったが、その行はビルドされなかった。property strictを削除したら、コンパイラが各サイクルで型宣言をする必要がなくなり、その行がビルドされるようになりました。答えはとても簡単で、些細な配列の オーバーランが発生し、このエラーのためにインジケータが動作しなくなるのです。 for(int i=1; i<n; i++) { for(int p=0; p<m; p++) { sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p]; sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p]; } } for(int i=1; i<n; i++) { for(int p=0; p<m; p++) { Mx[i][p]=sum_x[p+1][m-1]/(n-1); My[i][p]=sum_y[p+1][m-1]/(n-1);このエラーは実行時に見ることができます。インジケータを起動し、ターミナル - Experts タブでログファイルを確認してください。 Andrey F. Zelinsky 2016.11.28 23:12 #176 Vitalie Postolache: これは、暗黙の論理エラーを利用した典型的なケースです ...配列を オーバーライドすることは、論理的に重大な誤りであり、このような誤りを「暗黙の」と呼ぶことはできません。 Timur1988 2016.11.28 23:17 #177 Vitalie Postolache: ロジックの暗黙のエラーを利用した典型的なケース。コンパイラが「厳しく」なってから、自己欺瞞が徐々に消えていく。なぜ、こんなに同じループがあるのだろうと、ずっと不思議に思っていました。また、チャート上でインジケータを 実行する際に「out ofarray」というエラーが発生しても、何ら気にしないのはなぜでしょうか?例えば、ここ。 for(int i=1; i<n; i++) { for(int p=0; p<m; p++) { sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p]; sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p]; } } 各ディメンジョンの終値の合計を計算するには? 同じサイクルでも、私はプログラミングやアルゴリズムの知識が乏しいため、数式での代入に必要な配列の 要素を必要な次元から選択する以上のことを思いつきませんでした。 Timur1988 2016.11.28 23:22 #178 Andrey F. Zelinsky:答えはとても簡単で、些細な配列の オーバーランが発生し、このエラーのためにインジケータが動作しなくなるのです。 for(int i=1; i<n; i++) { for(int p=0; p<m; p++) { sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p]; sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p]; } } for(int i=1; i<n; i++) { for(int p=0; p<m; p++) { Mx[i][p]=sum_x[p+1][m-1]/(n-1); My[i][p]=sum_y[p+1][m-1]/(n-1);このエラーは実行段階で見ることができます。インジケータを起動し、ターミナルタブでログファイルを見てください - Experts: このエラーを修正する方法を教えていただけませんか? Vitalie Postolache 2016.11.28 23:29 #179 Timur1988: では、各次元の終値の合計はどのように計算するのでしょうか? 同じサイクルに関しては、プログラミングやアルゴリズムの知識が乏しいため、数式に代入するために必要な配列の その要素を目的の次元から選択する以上のことは思いつかなかった。例えば、こんな風に。 for(int i=1; i<n; i++) { for(int p=1; p<m; p++) { sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p]; sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p]; } } Andrey F. Zelinsky 2016.11.28 23:39 #180 Timur1988: このエラーを修正する方法を教えてください。この誤りを正すには、何を、なぜ、どのようにカウントしているかという、計算式を理解する必要があります。そうして初めて、アルゴリズムを練り上げ、誤差を なくすことができるのです。計算式を理解せず、直感で計算すると、誤差はなくなるが、間違った計算をすることになる。p.s. 何を計算しているのか詳しく説明し、コードを詳しくコメントし、そうすれば、エラーを修正する方法を理解できるでしょう。 1...111213141516171819202122232425...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
それはあまり良くないですね。おそらくコンパイル時に警告が出たのでしょうか?このような場合は、#property strict ではなく、警告の原因を取り除く必要があります。
残高を増やしたのに、本当の口座が ある端末が見つからない。
property strictを綴ると、コンパイラはfor()ループごとに変数には型が必要だというエラーを発生させるので、ループごとにint iとint pを綴らなければなりませんでした。その後、コンパイラはエラーを出さなくなったが、その行はビルドされなかった。このとき、#property strictを削除すると、コンパイラは各ループで型宣言をする必要がなくなり、その行がビルドされるようになりました。
ロジックの暗黙のエラーを利用した典型的なケース。コンパイラが「厳しく」なってから、自己欺瞞が徐々に消えていく。
同じループがたくさんあるのが不思議だったのですが?
また、チャート上でインジケータを 実行する際に「out ofarray」というエラーが発生しても、何ら気にしないのはなぜでしょうか?
例えば、ここ。
{
for(int p=0; p<m; p++)
{
sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p];
}
}
残高を増やしたのに、本当の口座が ある端末が見つからない。
property strictを綴ると、コンパイラはfor()ループのたびに変数には型が必要だとエラーを出すので、ループのたびにint iとint pを綴らなければなりませんでした。その後、コンパイラはエラーを出さなくなったが、その行はビルドされなかった。property strictを削除したら、コンパイラが各サイクルで型宣言をする必要がなくなり、その行がビルドされるようになりました。
答えはとても簡単で、些細な配列の オーバーランが発生し、このエラーのためにインジケータが動作しなくなるのです。
{
for(int p=0; p<m; p++)
{
sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p];
}
}
for(int i=1; i<n; i++)
{
for(int p=0; p<m; p++)
{
Mx[i][p]=sum_x[p+1][m-1]/(n-1);
My[i][p]=sum_y[p+1][m-1]/(n-1);
このエラーは実行時に見ることができます。インジケータを起動し、ターミナル - Experts タブでログファイルを確認してください。
これは、暗黙の論理エラーを利用した典型的なケースです ...
ロジックの暗黙のエラーを利用した典型的なケース。コンパイラが「厳しく」なってから、自己欺瞞が徐々に消えていく。
なぜ、こんなに同じループがあるのだろうと、ずっと不思議に思っていました。
また、チャート上でインジケータを 実行する際に「out ofarray」というエラーが発生しても、何ら気にしないのはなぜでしょうか?
例えば、ここ。
{
for(int p=0; p<m; p++)
{
sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p];
}
}
同じサイクルでも、私はプログラミングやアルゴリズムの知識が乏しいため、数式での代入に必要な配列の 要素を必要な次元から選択する以上のことを思いつきませんでした。
答えはとても簡単で、些細な配列の オーバーランが発生し、このエラーのためにインジケータが動作しなくなるのです。
{
for(int p=0; p<m; p++)
{
sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p];
}
}
for(int i=1; i<n; i++)
{
for(int p=0; p<m; p++)
{
Mx[i][p]=sum_x[p+1][m-1]/(n-1);
My[i][p]=sum_y[p+1][m-1]/(n-1);
このエラーは実行段階で見ることができます。インジケータを起動し、ターミナルタブでログファイルを見てください - Experts:
では、各次元の終値の合計はどのように計算するのでしょうか?
同じサイクルに関しては、プログラミングやアルゴリズムの知識が乏しいため、数式に代入するために必要な配列の その要素を目的の次元から選択する以上のことは思いつかなかった。
例えば、こんな風に。
for(int i=1; i<n; i++)
{for(int p=1; p<m; p++)
{
sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p];
}
}
このエラーを修正する方法を教えてください。
この誤りを正すには、何を、なぜ、どのようにカウントしているかという、計算式を理解する必要があります。
そうして初めて、アルゴリズムを練り上げ、誤差を なくすことができるのです。
計算式を理解せず、直感で計算すると、誤差はなくなるが、間違った計算をすることになる。
p.s. 何を計算しているのか詳しく説明し、コードを詳しくコメントし、そうすれば、エラーを修正する方法を理解できるでしょう。