エラー、バグ、質問 - ページ 2939 1...293229332934293529362937293829392940294129422943294429452946...3185 新しいコメント Nikolai Semko 2021.01.13 02:23 #29381 x572intraday: 価格はすべて小数点以下5桁まで表示され、同じリストの中の1つはなぜかこのように受け取られる:なぜ?エラーなのか、それとも私の出力が同じに見えるように調整すべきなのか。まあ、仮にPrintFormatやfprintで梳くとして、原理的に数値の表現として間違ってはいないのでしょうか。 トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム バグ、バグ、質問 ニコライ・セムコ さん 2020.01.05 21:41 私はいつもこの疑問を抱いています。 常にすべての IEEE 規格 754についての 話が、人々はしばしば、彼らはウィキペディアに行くとき - 複雑さのために、または怠惰のためかどうか規格の意味を理解せずに残します。 この投稿をさらに参考にしていただくために、少し時間をかけて、この規格をできるだけ簡潔に、わかりやすい言葉で説明することを心がけたいと思います。 つまり、double型 は8バイト=64ビットで構成されています。(float 4バイト=32ビット) また 、double および float の数値表現は 、符号、指数、仮数の 3つの要素から構成されて います。 DOUBLE(ダブル)。 フロートです。 当然ながら、このフォーマットでは10進数表現はなく、2進数表現のみとなる。 符号は1ビットです。0なら+(プラス)、1なら-(マイナス)です。 指数は、数 2 の次数を格納する。floatの場合は-12610~12710,doubleの場合は-102210~102310の範囲で指定可能です。 仮数は、2進数の数値そのものの分数部分を、その最初の単位に関係なく、最初の単位の後にコンマが立つ形に縮小したもので、コンマ 数字の2進数表現と10進数との関係を少し理解していること。 24= 100002 = 1610 23= 10002 = 810 22= 1002 = 4 21=102= 2 20=12=110 2-1= 0.12=(1/2)10= 0.510 2-2= 0.012 = (1/4)10= 0.2510 2-3= 0.0012 = (1/8)10= 0.12510 2-4= 0.00012 = (1/16)10= 0.062510 2-5= 0.000012 = (1/32)10= 0.0312510 2-6= 0.0000012 = (1/64)10= 0.01562510 2-7= 0.00000012 = (1/128)10= 0.007812510 2-8= 0.000000012 = (1/256)10= 0.0039062510 2-9= 0.0000000012 = (1/512)10= 0.00195312510 2- 10= 0.00000000012 = (1/1024)10= 0.000976562510 2- 11= 0.000000000012 = (1/2048)10= 0.0004882812510 2- 12= 0.0000000000012 = (1/4096)10= 0.00024414062510 2- 13= 0.00000000000012 = (1/8192)10= 0.000122070312510 ダブルの例をおさらいして おきましょう。 例1 891677.4025191という10進数の数字があります。 この数字は2進数で表すことができる。 11011001101100011101.01100111000010110111110110001000001111111010001110 (確認したい人はどうぞ))) 与えられた数値の仮数を取り出すには、コンマを19桁左に移動させ(この場合)、最初の単位の後に来るようにすればよいのです。 1.1011001101100011101011001110000101101111101111000101000001111101110001110* 219 でも、仮数は52ビットしかないんです。そこで、最初の52個の有効ビットを取ります Мантисса =1011001101100011101011001110000101101111101111000101 指数=(19+1023)10=100000100102(指数は符号付き数字で、指数が負になることもあるので(例えば0.0000042132なら)、1023を10に 足す(0111111112)、0111111112はゼロ、それ以上は正、それ以下は負になります)。つまり、指数の逆数を求めるには、指数の11ビットの値から1023を引けばよい。 合計すると、私たちの番号891677.4025191は 、タイプ ダブルでは 次の ようになります。 0100000100101011001101100011101011001110000101101111101111000101 しかし、これは2進数表現なので、正確に10進数に変換してみよう。 ということは、891677.4025190999964252114295947265625と なります。 例2 0.00000145258556224114という10進数の数値があります。 この数字は2進数で表すことができる。 -0.000000000000000000011000010111101100111010110111010011010101001111001110 この数値の仮数を選択するには、コンマを20桁右に移動して、最初の単位の後にあるようにすればよい。 1.1000010111101100111010110111010011010101001111001110* 2-20 Мантисса =1000010111101100111010110111010011010101001111001110 指数 = (-20+1023)10=011111010112 マイナス符号なので、最初のビットは1です。 私たちの合計数-0.00000145258556224114は、ダブルタイプでは次のようになります。 1011111010111000010111101100111010110111010011010101001111001110 10進数に正確に変換します。 это будет-0.00000145258556224113991124017968015191826225418481044471263885498046875 この場合、0.01という数値は、複式で表現されるため、問題が発生します。 0 01111111000 0100011110101110000101000111101011100001010001111011 であり、10進数表記に換算すると、0.0100000000002081668171172168513294309377670288085937510に等しくなる。 一方、表現では 310= 1.5*2 = 1.12*2 1 510= 2.5*2 = 10.12*2 1 610= 1.5*4 = 1.12*2 2 710 = 3.5*2 = 11.12*2 1 問題ありません。 なぜ、倍の0.01という数字が本当に大きいのか? その理由はこうです。 0 011111000 01000111101101010010111101110100101111011 - 0.01000000000000000020816681711721685132943093776702880859375 エラー = 0.000 000 000 000 000 000 208166817... 0 011111000 0100011110111000010101111010 - 0.009999999999984747344334119407569175064563751220703125 error = - 0.000 000 000 000 001 5265566... このプロセスケミストリーを理解するために、以下の計算機で遊んでみてください:https://babbage.cs.qc.cuny.edu/IEEE-754.old/Decimal.html https://baseconvert.com/ieee-754-floating-point https://baseconvert.com/ieee-754-floating-point Errors, bugs, questions Experts: Milestone 貧乏投資家のための自動化されたアドバイザー。 x572intraday 2021.01.13 10:31 #29382 Nikolai Semko: https://baseconvert.com/ieee-754-floating-point ありがとうございます、参考になります。まあ、基本的にはMQはあった方がいいのですが、補正不足なのか、判断がユーザーに委ねられているのか? Aleksei Skrypnev 2021.01.13 10:36 #29383 EAパラメータを保存するための機能、またはその他の追加機能(ライブラリ、コード)はありますか? 例えば、シンボル(追加機能は期間分析)上でEAを実行するときに、設定された設定ファイルを保存するようなondeinitのコードを入れることである。 例)-EA名-記号-ピリオド。 上書き可能なファイル - シンボルの最後の設定のみ。 例えば、テスターの標準設定は、最後に実行したときのものが保存されます。 Slava Botalov 2021.01.13 10:55 #29384 ごきげんよう。 リモートPCでの問題ですが、MQL5のサイトにアクセスできないので、購入したインジケータを ダウンロードできません。MQL5のサイトに入れないため、購入したインジケータをダウンロードできない。 Vladislav Andruschenko 2021.01.13 10:57 #29385 Slava Botalov: こんにちは、リモートコンピューターで問題が発生しました。MQL5のウェブサイトにアクセスできないため、購入したインジケーターを ダウンロードすることができないのです。インジケーターをダウンロードできないので、使用できません。 が、Zomroのリモートコンピュータ? Nikolai Semko 2021.01.13 11:05 #29386 x572intraday:ありがとうございます、参考になります。まあ、基本的にはMQはあった方がいいが、補正不足か、ユーザーの判断に任されているのだろうか。 だから、もらえなかったんです。間違いはありません。すべては思いのまま。 Slava Botalov 2021.01.13 11:21 #29387 Vladislav Andruschenko:が、Zomroのリモートコンピュータ? はい Vladimir Karputov 2021.01.13 11:27 #29388 Slava Botalov: ごきげんよう。 リモートPCでの問題ですが、MQL5のサイトにアクセスできないので、購入したインジケータを ダウンロードできません。インジケータがダウンロードできないので、MQL5のサイトでインストールできない。 Vladislav Andruschenko: が、Zomroのリモートコンピュータ? スラバ・ボタロフ: はい このプロバイダーは重大な違法行為で出入り禁止になって います。 トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラムなぜ、www.mql4.com へのアクセスがブロックされているのですか?レナート・ファットフーリン さん 2020.11.17 12:16*** サブネットを持つZomroプロバイダー全体が、自分のサブネットから大量の不正行為を行ったとしてブロックされます。 *** x572intraday 2021.01.13 11:30 #29389 Nikolai Semko: だから、理解されないのです。 エラーは全くありません。 すべては思いのまま。 そういう問題じゃないんです。問題は、特にプログラマーではなく、トレーダーにとって、どこで役に立つのか、ということです。端末の価格表示でも発注画面でもそんな数字見たことない、どこも同じ(どこか5桁、どこか違う)。 Slava Botalov 2021.01.13 11:31 #29390 Vladimir Karputov:このプロバイダーは、重大な違法行為により追放されました。 残念ですが、他の製品に変更しなければなりません。 何か良い方法はありませんか? 1...293229332934293529362937293829392940294129422943294429452946...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
価格はすべて小数点以下5桁まで表示され、同じリストの中の1つはなぜかこのように受け取られる:なぜ?エラーなのか、それとも私の出力が同じに見えるように調整すべきなのか。まあ、仮にPrintFormatやfprintで梳くとして、原理的に数値の表現として間違ってはいないのでしょうか。
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
バグ、バグ、質問
ニコライ・セムコ さん 2020.01.05 21:41
私はいつもこの疑問を抱いています。
常にすべての IEEE 規格 754についての 話が、人々はしばしば、彼らはウィキペディアに行くとき - 複雑さのために、または怠惰のためかどうか規格の意味を理解せずに残します。
この投稿をさらに参考にしていただくために、少し時間をかけて、この規格をできるだけ簡潔に、わかりやすい言葉で説明することを心がけたいと思います。
つまり、double型 は8バイト=64ビットで構成されています。(float 4バイト=32ビット)
また 、double および float の数値表現は 、符号、指数、仮数の 3つの要素から構成されて います。
DOUBLE(ダブル)。
フロートです。
当然ながら、このフォーマットでは10進数表現はなく、2進数表現のみとなる。
数字の2進数表現と10進数との関係を少し理解していること。
24= 100002 = 1610
23= 10002 = 810
22= 1002 = 4
21=102= 2
20=12=110
2-1= 0.12=(1/2)10= 0.510
2-2= 0.012 = (1/4)10= 0.2510
2-3= 0.0012 = (1/8)10= 0.12510
2-4= 0.00012 = (1/16)10= 0.062510
2-5= 0.000012 = (1/32)10= 0.0312510
2-6= 0.0000012 = (1/64)10= 0.01562510
2-7= 0.00000012 = (1/128)10= 0.007812510
2-8= 0.000000012 = (1/256)10= 0.0039062510
2-9= 0.0000000012 = (1/512)10= 0.00195312510
2- 10= 0.00000000012 = (1/1024)10= 0.000976562510
2- 11= 0.000000000012 = (1/2048)10= 0.0004882812510
2- 12= 0.0000000000012 = (1/4096)10= 0.00024414062510
2- 13= 0.00000000000012 = (1/8192)10= 0.000122070312510
ダブルの例をおさらいして おきましょう。
例1
891677.4025191という10進数の数字があります。
この数字は2進数で表すことができる。
11011001101100011101.01100111000010110111110110001000001111111010001110
(確認したい人はどうぞ)))
与えられた数値の仮数を取り出すには、コンマを19桁左に移動させ(この場合)、最初の単位の後に来るようにすればよいのです。
1.1011001101100011101011001110000101101111101111000101000001111101110001110* 219
でも、仮数は52ビットしかないんです。そこで、最初の52個の有効ビットを取ります
Мантисса =1011001101100011101011001110000101101111101111000101
指数=(19+1023)10=100000100102(指数は符号付き数字で、指数が負になることもあるので(例えば0.0000042132なら)、1023を10に 足す(0111111112)、0111111112はゼロ、それ以上は正、それ以下は負になります)。つまり、指数の逆数を求めるには、指数の11ビットの値から1023を引けばよい。
合計すると、私たちの番号891677.4025191は 、タイプ ダブルでは 次の ようになります。
0100000100101011001101100011101011001110000101101111101111000101
しかし、これは2進数表現なので、正確に10進数に変換してみよう。
ということは、891677.4025190999964252114295947265625と なります。
例2
0.00000145258556224114という10進数の数値があります。
この数字は2進数で表すことができる。
-0.000000000000000000011000010111101100111010110111010011010101001111001110
この数値の仮数を選択するには、コンマを20桁右に移動して、最初の単位の後にあるようにすればよい。
1.1000010111101100111010110111010011010101001111001110* 2-20
Мантисса =1000010111101100111010110111010011010101001111001110
指数 = (-20+1023)10=011111010112
マイナス符号なので、最初のビットは1です。
私たちの合計数-0.00000145258556224114は、ダブルタイプでは次のようになります。
1011111010111000010111101100111010110111010011010101001111001110
10進数に正確に変換します。
это будет-0.00000145258556224113991124017968015191826225418481044471263885498046875
この場合、0.01という数値は、複式で表現されるため、問題が発生します。
0 01111111000 0100011110101110000101000111101011100001010001111011
であり、10進数表記に換算すると、0.0100000000002081668171172168513294309377670288085937510に等しくなる。
一方、表現では
310= 1.5*2 = 1.12*2 1
510= 2.5*2 = 10.12*2 1
610= 1.5*4 = 1.12*2 2
710 = 3.5*2 = 11.12*2 1
問題ありません。
なぜ、倍の0.01という数字が本当に大きいのか?
その理由はこうです。
0 011111000 01000111101101010010111101110100101111011 - 0.01000000000000000020816681711721685132943093776702880859375 エラー = 0.000 000 000 000 000 000 208166817...
0 011111000 0100011110111000010101111010 - 0.009999999999984747344334119407569175064563751220703125 error = - 0.000 000 000 000 001 5265566...
このプロセスケミストリーを理解するために、以下の計算機で遊んでみてください:
https://babbage.cs.qc.cuny.edu/IEEE-754.old/Decimal.html
https://baseconvert.com/ieee-754-floating-point
https://baseconvert.com/ieee-754-floating-point
https://baseconvert.com/ieee-754-floating-point
ありがとうございます、参考になります。まあ、基本的にはMQはあった方がいいのですが、補正不足なのか、判断がユーザーに委ねられているのか?
EAパラメータを保存するための機能、またはその他の追加機能(ライブラリ、コード)はありますか?
例えば、シンボル(追加機能は期間分析)上でEAを実行するときに、設定された設定ファイルを保存するようなondeinitのコードを入れることである。
例)-EA名-記号-ピリオド。
上書き可能なファイル - シンボルの最後の設定のみ。
例えば、テスターの標準設定は、最後に実行したときのものが保存されます。
こんにちは、リモートコンピューターで問題が発生しました。MQL5のウェブサイトにアクセスできないため、購入したインジケーターを ダウンロードすることができないのです。インジケーターをダウンロードできないので、使用できません。
が、Zomroのリモートコンピュータ?
ありがとうございます、参考になります。まあ、基本的にはMQはあった方がいいが、補正不足か、ユーザーの判断に任されているのだろうか。
が、Zomroのリモートコンピュータ?
はい
ごきげんよう。 リモートPCでの問題ですが、MQL5のサイトにアクセスできないので、購入したインジケータを ダウンロードできません。インジケータがダウンロードできないので、MQL5のサイトでインストールできない。
が、Zomroのリモートコンピュータ?
はい
このプロバイダーは重大な違法行為で出入り禁止になって います。
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
なぜ、www.mql4.com へのアクセスがブロックされているのですか?
レナート・ファットフーリン さん 2020.11.17 12:16
***だから、理解されないのです。
そういう問題じゃないんです。問題は、特にプログラマーではなく、トレーダーにとって、どこで役に立つのか、ということです。端末の価格表示でも発注画面でもそんな数字見たことない、どこも同じ(どこか5桁、どこか違う)。
このプロバイダーは、重大な違法行為により追放されました。
残念ですが、他の製品に変更しなければなりません。 何か良い方法はありませんか?