[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 303

 
もう一つ質問です。xrust indicator (https://www.mql5.com/ru/code/8318) 現在、最大値と最小値の価格をExpert Advisorに送る必要があります(チャートに出力)。いくつかのトラブルシューティングを行いましたが、必要な値を得ることができません((:一方は送られ、他方は0に等しい。
ファイル:
 
hoz:

ライブラリとの連携も勉強中です。Expert Advisorを書いているのですが、こんな関数があるんです。

インクルージョンに入れたら、すべて元通りに動くようになった。しかし、ライブラリに接続すると、Expert Advisorのコンパイル時にエラーが発生します。

なぜ、この機能はライブラリに表示されないのですか?

ライブラリはこの内容で、コンパイルは完璧です。

エラーが多い。例を見て、類推してやってもいいのでしょうか?
 

相場があり、仮にAsk=1.20667とすると

この見積書から、小数点以下3桁を削除する必要があります。つまり、1.206という値を取り、残りは破棄してください。

Normalize"で切り上げると1.20700になってしまうので、正しい方法を教えてください。

回避策を試しました。

DoubleToStr(Ask,3)

はい、すべて正しく表示されます -> 1.206 .しかし、Doubleに 戻ると、再び丸められますが、小数点以下2桁になります。

StrToDouble(DoubleToStr(Ask,3)) = 1,2100    // 1,2100 - это получившийся результат (т.е. округляет)

四捨五入は必要ない。小数点以下の2桁目、3桁目、4桁目(私の選択)を取り、残りを捨てればいいのです。

どうすれば正しくできるのか?

 
Chiripaha:

相場があり、仮にAsk=1.20667とすると

この見積書から、小数点以下3桁を削除する必要があります。つまり、1.206という値を取り、残りは破棄してください。

Normalize"で切り上げると1.20700になってしまうので、正しい方法を教えてください。

回避策を試しました。

はい、すべて正しく表示されます -> 1.206 .しかし、Doubleに 戻ると、再び丸められますが、小数点以下2桁になります。

四捨五入は必要ない。小数点以下の2桁目、3桁目、4桁目(私の選択)を取り、残りを捨てればいいのです。

どうすれば正しくできるのか?

Digitsで doubleをstringに変換し、その結果から必要な桁数を切り取る(StringSubstr())のが正しい方法です。
 
Chiripaha:

相場があり、仮にAsk=1.20667とすると

この見積書から、小数点以下3桁を削除する必要があります。つまり、1.206という値を取り、残りは破棄してください。

Normalize"で切り上げると1.20700になってしまうので、正しい方法を教えてください。

回避策を試しました。

はい、すべて正しく表示されます -> 1.206 .しかし、Doubleに 戻ると、再び丸められますが、小数点以下2桁になります。

四捨五入は必要ない。小数点以下の2桁目、3桁目、4桁目(私の選択)を取り、残りを捨てればいいのです。

どうすれば正しくできるのか?

https://docs.mql4.com/ru/strings/StringSubstr
 

申し訳ございませんでした。明確にしようとしたが、効果はまだある。- 私のせいです、すみません。

小数点以下3桁、4桁などではなく、小数点以下2桁、3桁、4桁までの全桁が必要なのですが、どうしたらいいですか?BUT!丸めずに。

そして問題は、桁をDouble 型に戻すと、また四捨五入されることです。

で、全体としては、その桁がアホみたいに大きくても、まずString型で1文字ずつ変換して、それをDoubleに変換しているわけです。

また丸くなる。- これは皮肉なことである。なぜ StrToDouble() は数値を丸めるのですか?- これが理解できないのです。から変換するのがこの関数の仕事です。

をあるフォーマットから別のフォーマットに変換し、そこに自分から何かを「型取り」したり、追加したりしないことです。しかし、それは何かを「向上」させるものでもあります。

 
Chiripaha:

申し訳ございませんでした。明確にしようとしたが、効果はまだある。- 私のせいです、すみません。

小数点以下3桁、4桁などではなく、小数点以下2桁、3桁、4桁までの全桁が必要なのですが、どうしたらいいですか?BUT!丸めずに。

そして問題は、桁をDouble 型に戻すと、また四捨五入されることです。

で、全体としては、その桁がアホみたいに大きくても、まずString型で1文字ずつ変換して、それをDoubleに変換しているわけです。

また丸くなる。- これは皮肉なことである。なぜ StrToDouble() は数値を丸めるのですか?- これが理解できないのです。から変換するのがこの関数の仕事です。

をあるフォーマットから別のフォーマットに変換し、そこに自分から何かを「型取り」したり、追加したりしないことです。しかし、それは何かを「向上」させるものでもあります。

数字と数値の違いをご存知ですか?
 
Chiripaha:

申し訳ございませんでした。明確にしようとしたが、効果はまだある。- 私のせいです、すみません。

小数点以下3桁、4桁などではなく、小数点以下2桁、3桁、4桁までの全桁が必要なのですが、どうしたらいいですか?BUT!丸めずに。

そして問題は、桁をDouble 型に戻すと、また四捨五入されることです。

で、全体としては、その桁がアホみたいに大きくても、まずString型で1文字ずつ変換して、それをDoubleに変換しているわけです。

また丸くなる。- これは皮肉なことである。なぜ StrToDouble() は数値を丸めるのですか?- これが理解できないのです。から変換するのがこの関数の仕事です。

をあるフォーマットから別のフォーマットに変換し、そこに自分から何かを「型取り」したり、追加したりしないことです。しかし、それは何かを「向上」させるものでもあります。

人は「聞く」力を養わなければならない!:))
 

:))))))))そうですね~、その通りです。すべての非難を受け付けます- あらためてお詫び申し上げます。- 強く開発された(特殊な演習による)結果が全てです。

創造的、想像的、詩的な側面など、すべて同じです。人間には、創造的な半球と理性的な半球の2つがあります。私の落ち度は、それを見て訂正しなかったことです。

だから、あなたの主張はすべて的を射ていて、私は有罪なのです。

しかし、その疑問だけは解決されないまま...。

最終的にどう解決するか?

私が聞いていないと思うことがあれば、はっきり言ってください。フィードバック技術は(「聞こえる」ようになるための)理解できるが、解決策はまだ見えていない。

Ask = 1,20667 のような場合、Double で小数点以下3桁まで丸めずに正しい数値を得るにはどうしたらよいでしょうか?- StrToDouble(DoubleToStr(Ask,3))" のような解法があります。= 1,2100 // 1,2100が結果(=四捨五入)」となってしまい、うまくいきませんでした。

ご理解とご容赦をお願いいたします。

 
Zhunko:
数字と数値の違いをご存知ですか?


:))はい、もちろん違いは理解しています。しかし、謝罪と説明の投稿で、私はとにかくその失態を犯し(四捨五入せずに正しい数字を得るには...)、訂正しなければならなかった(そしてすぐに気がつかなかった)。誤解ではなく、イメージを膨らませることの裏返しなのです。残念なことに、これがその代償なのです。リビングデッド」などと言われても、これまた意味不明。しかし、それなくしては、物事の本質を比喩的に捉えることはできないのです。それが普通だということです。判断しないでください。: )物事を文字通りに捉えるのも、あまり良いことではありません。- 皆さんの協力も含めて、私の通信を修正するよう努力します。一緒に人生をより良く、より完璧にしましょう。コメントありがとうございます。