[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 470 1...463464465466467468469470471472473474475476477...1145 新しいコメント --- 2010.03.09 17:27 #4691 iliaalyoshin >>: Разные приёмы? Какие, например? if (NormalizeDouble(a, 4)==NormalizeDouble(b, 4)){ ...} iliaalyoshin 2010.03.09 17:36 #4692 sergeev >>: if (NormalizeDouble(a, 4)==NormalizeDouble(b, 4)) { ... } 私も試したのですが、念のためDigitsの代わりに4、5、6と書きました...。効かない!? iliaalyoshin 2010.03.09 17:47 #4693 Vinin >>: https://www.mql5.com/ru/articles/1561 ありがとうございました。確かに、この記事はとても参考になります。しかし、MetaEditorにはbool CompareDoubles関数が見つかりませんでした...。 iliaalyoshin 2010.03.09 17:50 #4694 Vinin >>: https://www.mql5.com/ru/articles/1561 というか、図書館というものがよくわからないというか、まったく理解できていないのですが? Victor Nikolaev 2010.03.09 18:05 #4695 iliaalyoshin писал(а)>> というか、図書館というものがよくわからないというか、まったく理解できていないのですが? 実数比較のための関数 //+------------------------------------------------------------------+ //| correct comparison of 2 doubles | //+------------------------------------------------------------------+ bool CompareDoubles(double number1,double number2) { if(NormalizeDouble(number1-number2,8)==0) return(true); else return(false); } 削除済み 2010.03.09 18:12 #4696 同志プロ、助けてください。 ここはどうしたらいいのか、教えていただけませんか? ファイルから数値を読み込んで、対応する配列に入れたいのですが。 ファイル内の番号は以下の通りです。1.2121;1.2323;1.3434;1.4545 double s1[], s2[], r1[], r2[]の配列を用意した。 を初期化する段階で、次のように読みました。 k=0;//---------------------------------------------- Handle=FileOpen(File_Name,FILE_CSV|FILE_READ,";");// Открытие файла if(Handle<0) // Неудача при открытии файла { if(GetLastError()==4103) // Если файла не существует,.. Alert("Нет файла с именем ",File_Name);//.. извещаем трейдера else // При любой другой ошибке.. Alert("Ошибка при открытии файла ",File_Name);//..такое сообщ PlaySound("Bzrrr.wav"); // Звуковое сопровождение return; } while(FileIsEnding(Handle)==false) // До тех пор, пока файловый .. { // ..указатель не в конце файла //--------------------------------------------------------- 5 -- S_1 =StrToDouble(FileReadString(Handle));// R_1 =StrToDouble(FileReadString(Handle)); S_2 =StrToDouble(FileReadString(Handle)); R_2 =StrToDouble(FileReadString(Handle)); s1[k]=S1; s2[k]=S_2; r1[k]=R_1; r2[k]=R_2; k=k+1; if(FileIsEnding(Handle)==true) // Файловый указатель в конце break; // Выход из чтения и рисования //--------------------------------------------------------- 6 -- } FileClose( Handle ); // Закрываем файл PlaySound("bulk.wav"); // Звуковое сопровождение が、残念ながら、配列が埋まっていない...。 ここでの在り方をアドバイスする...。 [WARNING CLOSED!] Any newbie どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - リアルタイム予測システムのテスト Artem Ipatov 2010.03.10 05:17 #4697 Посоветуйте, как тут быть.... 第一に、csvファイルでは、要素は"; "ではなく、", "で区切られる 第二に、各ファイル行の最初の要素で配列を埋める必要がある。これは、まずFileReadStringで 行全体を取得し、それを一つの実数に変換し、次のFileReadコマンドはすでにファイルの次の行で機能するためである。 読書は次のようにアレンジすることができます。 for(;;) { str=FileReadString(Handle); s1[k] =StrToDouble(StringSubstr(str,0,6)); s2[k] =StrToDouble(StringSubstr(str,7,6)); r1[k] =StrToDouble(StringSubstr(str,14,6)); r2[k] =StrToDouble(StringSubstr(str,21,6)); k++; if(FileIsEnding(Handle)) break; } うまくいくはずだ...が、よくわかりません :) Victor Nikolaev 2010.03.10 05:52 #4698 Axmed писал(а)>> まず、csvファイルでは、要素の区切りは「;」ではなく、「,」です。 次に、配列には各ファイルの文字列の最初の要素を入れる必要があります。これは、まずFileReadStringコマンドで文字列全体を取得し、次に文字列全体を一つの実数に変換し、次のFileReadコマンドですでにファイルの次の行を処理するためです。 このように読書を整理することができます。 for(;;) { str=FileReadString(Handle); s1[k] =StrToDouble(StringSubstr(str,0,6)); s2[k] =StrToDouble(StringSubstr(str,7,6)); r1[k] =StrToDouble(StringSubstr(str,14,6)); r2[k] =StrToDouble(StringSubstr(str,21,6)); k++; if(FileIsEnding(Handle)) break; } うまくいくはずだ...が、よくわかりません :) デフォルトのデリミタは"; "であるが、任意のデリミタを使用することができる。 Bicus 2010.03.10 05:54 #4699 Axmed писал(а)>>何か書き方がおかしいぞ...。 Artem Ipatov 2010.03.10 06:09 #4700 Vinin писал(а)>> デフォルトのデリミタは「;」ですが、どのようなデリミタでも使用可能です。 CSV -カンマで 区切られた値。デリミタは「,」がデフォルトである。MQL4では、"; "で区切ることはあまり一般的ではありませんし、全くサポートされていないかと思われます。 何か書き方がおかしいぞ...。 私の書くものの具体的などこが気に入らないのでしょうか...? 1...463464465466467468469470471472473474475476477...1145 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
Разные приёмы? Какие, например?if (NormalizeDouble(a, 4)==NormalizeDouble(b, 4)){ ...}
if (NormalizeDouble(a, 4)==NormalizeDouble(b, 4)) { ... }
私も試したのですが、念のためDigitsの代わりに4、5、6と書きました...。効かない!?
https://www.mql5.com/ru/articles/1561
ありがとうございました。確かに、この記事はとても参考になります。しかし、MetaEditorにはbool CompareDoubles関数が見つかりませんでした...。
https://www.mql5.com/ru/articles/1561
というか、図書館というものがよくわからないというか、まったく理解できていないのですが?
というか、図書館というものがよくわからないというか、まったく理解できていないのですが?
実数比較のための関数ここはどうしたらいいのか、教えていただけませんか?
ファイルから数値を読み込んで、対応する配列に入れたいのですが。
ファイル内の番号は以下の通りです。1.2121;1.2323;1.3434;1.4545
double s1[], s2[], r1[], r2[]の配列を用意した。
を初期化する段階で、次のように読みました。
が、残念ながら、配列が埋まっていない...。
ここでの在り方をアドバイスする...。
Посоветуйте, как тут быть....
第一に、csvファイルでは、要素は"; "ではなく、", "で区切られる
第二に、各ファイル行の最初の要素で配列を埋める必要がある。これは、まずFileReadStringで 行全体を取得し、それを一つの実数に変換し、次のFileReadコマンドはすでにファイルの次の行で機能するためである。
読書は次のようにアレンジすることができます。
for(;;) {
str=FileReadString(Handle);
s1[k] =StrToDouble(StringSubstr(str,0,6));
s2[k] =StrToDouble(StringSubstr(str,7,6));
r1[k] =StrToDouble(StringSubstr(str,14,6));
r2[k] =StrToDouble(StringSubstr(str,21,6));
k++;
if(FileIsEnding(Handle)) break;
}
うまくいくはずだ...が、よくわかりません :)
まず、csvファイルでは、要素の区切りは「;」ではなく、「,」です。
次に、配列には各ファイルの文字列の最初の要素を入れる必要があります。これは、まずFileReadStringコマンドで文字列全体を取得し、次に文字列全体を一つの実数に変換し、次のFileReadコマンドですでにファイルの次の行を処理するためです。
このように読書を整理することができます。
for(;;) {
str=FileReadString(Handle);
s1[k] =StrToDouble(StringSubstr(str,0,6));
s2[k] =StrToDouble(StringSubstr(str,7,6));
r1[k] =StrToDouble(StringSubstr(str,14,6));
r2[k] =StrToDouble(StringSubstr(str,21,6));
k++;
if(FileIsEnding(Handle)) break;
}
うまくいくはずだ...が、よくわかりません :)
デフォルトのデリミタは"; "であるが、任意のデリミタを使用することができる。何か書き方がおかしいぞ...。
デフォルトのデリミタは「;」ですが、どのようなデリミタでも使用可能です。CSV -カンマで 区切られた値。デリミタは「,」がデフォルトである。MQL4では、"; "で区切ることはあまり一般的ではありませんし、全くサポートされていないかと思われます。
何か書き方がおかしいぞ...。
私の書くものの具体的などこが気に入らないのでしょうか...?