ライブラリ: 数学ユーティリティ - ページ 4 123456 新しいコメント amrali 2023.02.22 12:05 #31 fxsaber #: 適切なパフォーマンス測定の方法を学ぶ必要がある。 あなたは間違った結論を出している。 残念ながら、あなたは自分が何を測定しているのか理解していない。 では、私が何を理解していないのか教えてください :-) amrali 2023.02.22 12:16 #32 今までは、コードをあなたの最適化された(!)関数に置き換えて、ライブラリを使用する前にコンパイラの最適化を無効にするようにユーザーに大きな警告を出すべきだと理解していた! fxsaber 2023.02.22 12:26 #33 amrali #: 今までは、コードをあなたの最適化された(!)関数に置き換えて、ライブラリを使用する前にコンパイラの最適化を無効にするようユーザーに大きな警告を出すことで、こんなクソみたいなものを使わなくても同じパフォーマンスを得られるようにするべきだと理解していた! もし本当に、関数の性能を正しく測定する方法を知りたいのであれば、ロシア語のフォーラムに行って質問してください。開発者が例を挙げて詳しく話している。私はリンクを持っていない。 amrali 2023.02.22 12:35 #34 ありがとう amrali 2023.03.01 00:35 #35 2023年3月1日更新 倍数の比較関数を追加 //+------------------------------------------------------------------+ //| 小数の後に一致する小数の桁数を取得する。 //| GetEqualDigits(3.124,3.122)=>2|2つの数字の点。 //+------------------------------------------------------------------+ int GetEqualDigits(const double a, const double b); //+------------------------------------------------------------------+ //| 2つの数値の一致する有効桁数を取得する。 //| 例えば、GetEqualSignificantDigits(3.124, 3.122) => 3 |. //+------------------------------------------------------------------+ int GetEqualSignificantDigits(const double a, const double b); 雑多な関数を追加: //+------------------------------------------------------------------+ //| 有効桁数を取得する。有効数字 //| の左と右)の合計である。 //| 小数点以下はゼロを除く。 //| 例えば、1.23は小数点以下2桁、3桁の数字である。 //| ヒント:数字を科学的記数法に変えてください。その方が見やすい。| //+------------------------------------------------------------------+ int GetSignificantDigits(double value); //+------------------------------------------------------------------+ //| 科学的記数法の指数を返す。 //| 科学的表記法では、数値は10進数に変換される。 //| 1.0から10の間で、10の何乗かを掛ける。 //| ゼロでない小数点が1つだけ残るように計算する。 //| 小数点以下の桁数。| //+------------------------------------------------------------------+ int GetExponent10(const double value)l //+------------------------------------------------------------------+ //| 値の符号を 1, 0, -1 として計算する。 //+------------------------------------------------------------------+ double MathSign(const double value); 倍数を文字列にフォーマットする関数を追加: //+------------------------------------------------------------------+ //| 科学的記数法で数値を文字列に変換する。 //| 例:6.22e-23)。 //| 桁数:オプション。小数点以下の桁数。| //| デフォルトは、値を表すのに必要な桁数。 //+------------------------------------------------------------------+ string DoubleToExponential(const double value, int digits = -1); amrali 2023.03.08 15:32 #36 2023年3月8日更新 新しい雑多な関数を追加。 //+------------------------------------------------------------------+ //| pow(10, (int)power) を返し、累乗のために高速ルックアップテーブルを使用する。 //| https://github.com/php/php-src/blob/master/ext/standard/math | //+------------------------------------------------------------------+ double GetPower10(const int power); この関数は、MathPow(10, power) よりもはるかに高速なパフォーマンスを持っています。 amrali 2023.03.08 15:36 #37 fxsaber #:もっと速く。 @fxsaber ありがとう! 取引、自動取引システム、取引戦略のテストに関するフォーラム ライブラリ数学ユーティリティ amrali, 2023.03.08 15:32 2023年3月8日更新 新しい雑多な関数を追加しました。 //+------------------------------------------------------------------+ //| pow(10, (int)power) を返し、累乗のために高速ルックアップテーブルを使用する。 //+------------------------------------------------------------------+ double GetPower10(const int power); この関数はMathPow(10, power) よりもはるかに高速です。 amrali 2023.04.21 17:33 #38 より高速な丸め関数を追加。 //+------------------------------------------------------------------+ //| 算術演算子を使ってceil、floor、roundを高速に行う。 //+------------------------------------------------------------------+ inline long Ceil (const double v); inline long Floor(const double v); inline long Round(const double v); inline long Trunc(const double v); 組み込みの MathCeil、MathFloor、MathRound と比較して、160-240% の速度向上。 amrali 2023.04.24 07:46 #39 2023年4月24日更新 新しい関数を追加しました: //+------------------------------------------------------------------+ //| 最小値(包含)と最大値(包含)の間の値をラップする。 //+------------------------------------------------------------------+ template<typename T> T Wrap(const T value, const T min, const T max); <MathStatMath.mqh>との名前の衝突を避けるため、丸め関数の名前をCeil()、Floor()、Round()、Trunc() に変更した。 稀な状況での無限ループを回避するためにGetDigits() 関数を修正した。 Ohene Kofi Akuoku Osei 2023.04.25 13:38 #40 これらは、浮動小数点数の比較や丸め、お金の書式設定に便利な3つの関数です: 1. `bool DoubleEquals(double x, double y, double eps)` 2つのダブル値 `x` と `y` を与えられたイプシロン値 `eps` で比較し、それらが与えられた許容範囲内で等しいかどうかを示すブール値を返す。 2. `double RoundTo(double value, int digits)` 二重の値 `value` を、与えられた小数 `digits` の数に丸める。 3.文字列 FormatMoney(double amount)` は、double 値 `amount` を通貨量を表す文字列としてフォーマットする。これは、小数点以下2桁で金額をフォーマットし、小数点をカンマに置き換え、読みやすくするために3桁ごとに空白を挿入する。また、最後に `AccountInfoString(ACCOUNT_CURRENCY)` から取得した通貨記号を追加する。 DoubleEquals(double x, double y, double eps) - この関数は、2つのダブル値xとyを許容誤差epsで比較します。x が y の eps 以内であれば真を返します。これは、丸め誤差のために正確に等しくない浮動小数点数を比較するのに便利です。 bool DoubleEquals(double x, double y, double eps) { return fabs(x - y) < eps; } RoundTo(double value, int digits) - この関数は、double 値を指定した小数桁数に丸めます。MathRound() 関数を使用して丸めを行います。 double RoundTo(double value, int digits) { double factor = pow(10, digits); return MathRound(value * factor) / factor; } FormatMoney(double amount) - この関数は、double 値の金額を、通貨記号、桁区切りのカンマ、および小数点以下 2 桁を含む文字列として書式設定します。この関数は、金額をユーザーフレンドリーな方法で表示するのに便利です。 string FormatMoney(double amount) { string currency = AccountInfoString(ACCOUNT_CURRENCY); string formatted = StringFormat("%.2f", amount); formatted = StringReplace(formatted, ".", ","); int len = StringLen(formatted); for (int i = len - 6; i > 0; i -= 3) { formatted = StringSubstr(formatted, 0, i) + " " + StringSubstr(formatted, i); } return formatted + " " + currency; } モデレータによってフォーマットされた投稿 機械学習とニューラルネットワーク MQL5で日次ドローダウンリミッターEAを作成する PrintFormat()を調べてすぐ使える例を適用する 123456 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
fxsaber #:
適切なパフォーマンス測定の方法を学ぶ必要がある。
あなたは間違った結論を出している。
残念ながら、あなたは自分が何を測定しているのか理解していない。
では、私が何を理解していないのか教えてください :-)
今までは、コードをあなたの最適化された(!)関数に置き換えて、ライブラリを使用する前にコンパイラの最適化を無効にするようユーザーに大きな警告を出すことで、こんなクソみたいなものを使わなくても同じパフォーマンスを得られるようにするべきだと理解していた!
もし本当に、関数の性能を正しく測定する方法を知りたいのであれば、ロシア語のフォーラムに行って質問してください。開発者が例を挙げて詳しく話している。私はリンクを持っていない。
2023年3月1日更新
倍数の比較関数を追加
雑多な関数を追加:
倍数を文字列にフォーマットする関数を追加:
新しい雑多な関数を追加。
この関数は、MathPow(10, power) よりもはるかに高速なパフォーマンスを持っています。
もっと速く。
@fxsaber ありがとう!
取引、自動取引システム、取引戦略のテストに関するフォーラム
ライブラリ数学ユーティリティ
amrali, 2023.03.08 15:32
新しい雑多な関数を追加しました。
この関数はMathPow(10, power) よりもはるかに高速です。
より高速な丸め関数を追加。
2023年4月24日更新
新しい関数を追加しました:
<MathStatMath.mqh>との名前の衝突を避けるため、丸め関数の名前をCeil()、Floor()、Round()、Trunc() に変更した。
稀な状況での無限ループを回避するためにGetDigits() 関数を修正した。
3.文字列 FormatMoney(double amount)` は、double 値 `amount` を通貨量を表す文字列としてフォーマットする。これは、小数点以下2桁で金額をフォーマットし、小数点をカンマに置き換え、読みやすくするために3桁ごとに空白を挿入する。また、最後に `AccountInfoString(ACCOUNT_CURRENCY)` から取得した通貨記号を追加する。
モデレータによってフォーマットされた投稿