mql5言語の特徴、微妙なニュアンスとテクニック - ページ 237 1...230231232233234235236237238239240241242243244...247 新しいコメント Nikolai Semko 2023.11.15 05:33 #2361 Alain Verleyen #:私は何かを見逃しているかもしれませんが、私はPeriodSeconds(のみ)をチェックするためにあなたのスクリプトを使用しました。私のテスト結果2023.11.15 00:26:58.896 DDD__ (EURUSD,M1) контрольная сумма - 34192800000000, время выполнения 1 иттерации = 29.78 наносекунд - PeriodSecondsFastFXS 2023.11.15 00:26:59.056 DDD__ (EURUSD,M1) контрольная сумма - 34192800000000, время выполнения 1 иттерации = 16.03 наносекунд - PeriodSecondsFast 2023.11.15 00:26:59.477 DDD__ (EURUSD,M1) контрольная сумма - 34192800000000, время выполнения 1 иттерации = 42.08 наносекунд - Расчет через PeriodSeconds 2023.11.15 00:26:59.477 DDD__ (EURUSD,M1) ======================================================================== 2023.11.15 00:27:16.018 DDD__ (EURUSD,M1) =====LOOP=10000000 2023.11.15 00:27:16.318 DDD__ (EURUSD,M1) контрольная сумма - 34192800000000, время выполнения 1 иттерации = 29.99 наносекунд - PeriodSecondsFastFXS 2023.11.15 00:27:16.474 DDD__ (EURUSD,M1) контрольная сумма - 34192800000000, время выполнения 1 иттерации = 15.59 наносекунд - PeriodSecondsFast 2023.11.15 00:27:16.901 DDD__ (EURUSD,M1) контрольная сумма - 34192800000000, время выполнения 1 иттерации = 42.74 наносекунд - Расчет через PeriodSeconds 2023.11.15 00:27:16.901 DDD__ (EURUSD,M1) ======================================================================== 2023.11.15 00:27:25.206 DDD__ (EURUSD,M1) =====LOOP=10000000 2023.11.15 00:27:25.508 DDD__ (EURUSD,M1) контрольная сумма - 34192800000000, время выполнения 1 иттерации = 30.14 наносекунд - PeriodSecondsFastFXS 2023.11.15 00:27:25.666 DDD__ (EURUSD,M1) контрольная сумма - 34192800000000, время выполнения 1 иттерации = 15.77 наносекунд - PeriodSecondsFast 2023.11.15 00:27:26.110 DDD__ (EURUSD,M1) контрольная сумма - 34192800000000, время выполнения 1 иттерации = 44.47 наносекунд - Расчет через PeriodSeconds 2023.11.15 00:27:26.110 DDD__ (EURUSD,M1) ======================================================================== 2023.11.15 00:27:40.780 DDD__ (EURUSD,M1) =====LOOP=10000000 2023.11.15 00:27:41.089 DDD__ (EURUSD,M1) контрольная сумма - 34192800000000, время выполнения 1 иттерации = 30.90 наносекунд - PeriodSecondsFastFXS 2023.11.15 00:27:41.249 DDD__ (EURUSD,M1) контрольная сумма - 34192800000000, время выполнения 1 иттерации = 15.98 наносекунд - PeriodSecondsFast 2023.11.15 00:27:41.676 DDD__ (EURUSD,M1) контрольная сумма - 34192800000000, время выполнения 1 иттерации = 42.72 наносекунд - Расчет через PeriodSeconds 2023.11.15 00:27:41.676 DDD__ (EURUSD,M1) ======================================================================== 0 errors, 0 warnings, 234 msec elapsed, cpu='AVX2 + FMA3' 私はこのテスト自体があまり好きではありません。なぜなら、このテストでは同じ計算が1,000万回行われるからです。この場合、コンパイラがコードを最適化しようとして驚きを与えないという保証はない。 そしてこれらの値は21で割らなければならない。全部で21*10,000回の繰り返しがあるからだ。しかし、このテストでも私の結論は確認された。しかし、私のプロセッサーはより新しく、したがって最新のパフォーマンス機能を最大限に使用しているようであり、したがって、より最新のものであるため、より客観的である。他の人のこのテスト結果を見るのも面白いだろう。 Slava 2023.11.15 06:37 #2362 fxsaber #:フォーマットを見てみた。おそらくスピードアップはできないだろう。スイッチの奇跡的なスピードについては聞いている。 スパース・スイッチでは奇跡的なスピードは出ない。 最も驚異的なスピードが出るのは、0から255まで1刻みのケースを持つスイッチだろう fxsaber 2023.11.15 10:36 #2363 Slava #:スパース・スイッチは驚異的なスピードをもたらすわけではない。最も驚異的なスピードが出るのは、0から255までのケースを1刻みで持つスイッチである。 ありがとう。 Alain Verleyen 2023.11.15 13:43 #2364 Nikolai Semko # :あなたのテストの結果です:私はこのテスト自体があまり好きではありません。なぜなら、このテストでは同じ計算が1000万回行われるからです。この場合、コンパイラがコードを最適化しようとして驚きを与えないという保証はない。 また、これらの値は21で割る必要がある。全部で21*10,000回の繰り返しがあるからだ。しかし、このテストでも私の結論は確認された。しかし、私のプロセッサーはより新しく、したがって最新のパフォーマンス機能を最大限に使用しているようであり、したがって、より最新であるため、より客観的である。他の人のこのテスト結果を見るのも面白いだろう。 ありがとう。 コンパイラ最適化なしの結果を投稿したのは昨日の深夜だった。 以下は、cpu='AVX2 + FMA3'で最適化を最大にした場合の結果である。 fxsaber 2023.11.15 13:56 #2365 Nikolai Semko #:このアルゴリズムの主な難点は、月の開始時刻を計算することである(緑色でハイライト)。 このコードで最も興味深いのは、議論ではほとんど触れられなかったことだ。 Nikolai Semko 2023.11.15 14:19 #2366 fxsaber #:このコードで最も興味深いのは、議論ではほとんど触れられなかったことだ。 そこでは1年の始まりが1月1日ではなく3月1日になっている。これはstackoverflowで見たヒントだ。良いアドバイスだった。私は30.68の係数を見つけるためにスクリプトを書かなければならなかった。 fxsaber 2023.11.26 09:33 #2367 非常に短いコード(15行未満)をmqh-libraryという形で保存する必要に迫られた。 template <typename T1, typename T2> T1* New( const string &ClassName ) { return((typename(T2) == ClassName) ? new T2 : NULL); } template <typename T1, typename T2> T1* New( string ClassName, const T2 &FuncNew[] ) { T1* Res = NULL; #ifdef __MQL5__ ClassName = "class " + ClassName; #endif // #ifdef __MQL5__ for (uint i = ArraySize(FuncNew); (Res == NULL) && (bool)i--;) Res = FuncNew[i](ClassName); return(Res); } 関数へのポインタはグローバルなscopusの関数にしかできないので、やむを得ない措置です。 皆さんはどのように短いライブラリを使っていますか? fxsaber 2023.11.27 08:38 #2368 テンプレート関数のシグネチャーは、その呼び出し場所に依存することがある。 取引、自動取引システム、取引戦略のテストに関するフォーラム エラー、バグ、質問 fxsaber, 2023.11.26 23:26 template <typename T> void Func( void ) { Print(__FUNCSIG__); } void OnStart() { Func<int>(); // void "void OnStart()"::Func<int>() } fxsaber 2023.12.10 22:47 #2369 私の理解が正しければ、この場合、A::f()メソッドはg()の中でインライン化されている。 class A { void f() {} void g() { this.f(); } }; しかし、ここではそうではありません。 class A { virtual void f() {} void g() { this.f(); } }; A::f()は、Aクラスの子孫オブジェクトがコード内のどこにも生成されないという条件で、2番目のケースでもコンパイラによってインライン化されるのでしょうか? fxsaber 2023.12.17 01:35 #2370 ビジュアライザーの特定の場所にブレークポイントを作る必要があることがあります。そのために、私はこのような関数を使用しています。 bool IsManualChangeTester() { static const bool IsVisual = MQLInfoInteger(MQL_VISUAL_MODE); static ENUM_CHART_MODE PrevChartMode = (ENUM_CHART_MODE)ChartGetInteger(0, CHART_MODE); bool Res = false; if (IsVisual) { const ENUM_CHART_MODE ChartMode = (ENUM_CHART_MODE)ChartGetInteger(0, CHART_MODE); if (Res = (ChartMode != PrevChartMode)) PrevChartMode = ChartMode; } return(Res); }このアプリケーションでif (IsManualChangeTester()) DebugBreak();この条件を作成する必要があるときは、ビジュアライザーのグラフ表示 モードを変更するだけです。 そして、MEのExpert Advisorの動作を分析する。 1...230231232233234235236237238239240241242243244...247 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
私は何かを見逃しているかもしれませんが、私はPeriodSeconds(のみ)をチェックするためにあなたのスクリプトを使用しました。
私のテスト結果
0 errors, 0 warnings, 234 msec elapsed, cpu='AVX2 + FMA3'
私はこのテスト自体があまり好きではありません。なぜなら、このテストでは同じ計算が1,000万回行われるからです。この場合、コンパイラがコードを最適化しようとして驚きを与えないという保証はない。
そしてこれらの値は21で割らなければならない。全部で21*10,000回の繰り返しがあるからだ。
しかし、このテストでも私の結論は確認された。しかし、私のプロセッサーはより新しく、したがって最新のパフォーマンス機能を最大限に使用しているようであり、したがって、より最新のものであるため、より客観的である。
他の人のこのテスト結果を見るのも面白いだろう。
フォーマットを見てみた。
おそらくスピードアップはできないだろう。スイッチの奇跡的なスピードについては聞いている。
スパース・スイッチでは奇跡的なスピードは出ない。
最も驚異的なスピードが出るのは、0から255まで1刻みのケースを持つスイッチだろう
スパース・スイッチは驚異的なスピードをもたらすわけではない。
最も驚異的なスピードが出るのは、0から255までのケースを1刻みで持つスイッチである。
ありがとう。
あなたのテストの結果です:
私はこのテスト自体があまり好きではありません。なぜなら、このテストでは同じ計算が1000万回行われるからです。この場合、コンパイラがコードを最適化しようとして驚きを与えないという保証はない。
また、これらの値は21で割る必要がある。全部で21*10,000回の繰り返しがあるからだ。
しかし、このテストでも私の結論は確認された。しかし、私のプロセッサーはより新しく、したがって最新のパフォーマンス機能を最大限に使用しているようであり、したがって、より最新であるため、より客観的である。
他の人のこのテスト結果を見るのも面白いだろう。
ありがとう。
コンパイラ最適化なしの結果を投稿したのは昨日の深夜だった。
以下は、cpu='AVX2 + FMA3'で最適化を最大にした場合の結果である。
このアルゴリズムの主な難点は、月の開始時刻を計算することである(緑色でハイライト)。
このコードで最も興味深いのは、議論ではほとんど触れられなかったことだ。
このコードで最も興味深いのは、議論ではほとんど触れられなかったことだ。
非常に短いコード(15行未満)をmqh-libraryという形で保存する必要に迫られた。
関数へのポインタはグローバルなscopusの関数にしかできないので、やむを得ない措置です。
皆さんはどのように短いライブラリを使っていますか?
取引、自動取引システム、取引戦略のテストに関するフォーラム
エラー、バグ、質問
fxsaber, 2023.11.26 23:26
私の理解が正しければ、この場合、A::f()メソッドはg()の中でインライン化されている。
しかし、ここではそうではありません。
A::f()は、Aクラスの子孫オブジェクトがコード内のどこにも生成されないという条件で、2番目のケースでもコンパイラによってインライン化されるのでしょうか?
このアプリケーションで
この条件を作成する必要があるときは、ビジュアライザーのグラフ表示 モードを変更するだけです。
そして、MEのExpert Advisorの動作を分析する。