記事"R で 統計分布を MQL5 に -"についてのディスカッション - ページ 5

 
Renat Fatkhullin:
  1. ソースコード内にMQL5ライブラリが存在するため、そのコードを呼び出し先に直接ネイティブにインライン化し、呼び出し先のconst環境を最大限に利用することができます。

多くの標準関数もインライン化のためにライブラリに含まれるのでしょうか?

 
Renat Fatkhullin:

それは深刻ではない。

ワインの下で、しかも32ビット。MT5の32ビットにはMT4と同じような古いコンパイラが使われている。MT5の64ビット版専用の新しいコンパイラで作られた64ビットのコードに比べると、数十倍遅い。32ビットと64ビットのMQL5プログラムの速度を比較したレポートを発表しました。

各MQL5プログラムには、実際にはコンパイルされたコードが2部含まれています:互換性のために古いシステム用の32ビットと新しいシステム用の64ビットです。

32ビットコンパイラの開発は意味がなく、将来性もないため、私たちは完全に放棄しました。

そのため、最大限のパフォーマンスを得たいのであれば、MetaTrader 5の64ビット版のみを使用する必要があります。


ちなみに、MT4に座っている方への情報ですが、そこでもMQL4のコード実行速度は64ビットのMetaTrader 5より数十倍遅いです。

私にとっては、これは自分の習慣を再考し、MT5に乗り換える本当に重大な理由である。以前は、あまり意味がないと思っていたのだが......。
 
fxsaber:

多くの標準関数もインライン化のためにライブラリ化されるのでしょうか?

その通りです。

次の数回のビルドで、それを実現する予定です。コンパイル中にオンザフライでプログラムに関数ソースを追加し、オプティマイザがその能力をフルに発揮できるようにします。

プラットフォーム・カーネルへの呼び出し回数を最小限に抑えることは、私たちにとって非常に重要です。

 
Реter Konow:
思いがけず...私にとっては、最終的に自分の習慣を再考し、MT5に乗り換える重大な理由となりました。以前はあまり意味がないと思っていたのですが...。

MT4とMT5の内部処理(取引を含む)のレイテンシーを深く掘り下げると、MT4から逃げ出すことになる。プロセスの質と整頓には奈落の底がある。

私たちがMT5のパフォーマンスと最適化に熱狂的なのには理由があります。技術的に大きなアドバンテージがあるからです。

 
Renat Fatkhullin:

Rは、最初のスタートと最大時間ではなく、何回ものスタートで最小時間を 取った。

つまり、「コールドスタート」では説明できない。また、すべてのライブラリコードがDLLにある場合でさえもだ。実質的にウォームアップするものは何もない。

しかし、説明できることがある:

  1. 純粋に型付けされた ダブル・データを 扱うため、Rのようなダイナミック・オブジェクトのオーバーヘッドがない。
  2. MQL5のコンパイラは恐ろしく効率的だ。出来上がったasmコードを見ると、本当に恐ろしくなる。
  3. ソースコードにMQL5ライブラリが存在するため、そのコードを呼び出し先に直接ネイティブにインライン化し、呼び出し先のconst環境を最大限に利用することができる。

    DLLの最適化されていない実装は、環境を学習してそれに適応するチャンスがない。

ここで何を測っているかというと、C++とLispのホリバーを思い起こさせる。)両者は根本的に違うものなのだから......。
 
Renat Fatkhullin:

MT4とMT5の内部処理(取引を含む)のレイテンシを深掘りすると、MT4から逃げ出すことになる。プロセスの品質と整理整頓には奈落の底がある。

私たちがMT5のパフォーマンスと最適化に熱狂的なのには理由があります。技術的に大きなアドバンテージがあるからです。

今ならわかる。もちろん、すべてのコードを移植するのは、十分な言語互換性があったとしても簡単なことではありませんが、その価値はあると信じています。私は常に効率化を志向しており、パフォーマンスとスピードの差の問題は常に大きな関心事だった。この違いをもっと早く知っていれば、速くないプラットフォームのことなどとっくに忘れていただろう。情報をありがとう。
 
Maxim Kuznetsov:
ここで何を測っているのだろう? C++とLispのホリバーを思い出す。)両者は根本的に違うものなのだ......。

これは、https://www.mql5.com/ru/forum/96176/page10(どこかで言及されていた)のトピックでいくつかのトレーダーが表明した立場の誤りを、実践と理論で純粋に証明したに過ぎない:

  • Rのライブラリはすべて最適化されており、可能な限り高速である。
  • インテル・スレッディング・ビルディング・ブロックなど、Rには多くの最適化がある。


これは真実ではないことがわかった。最も単純な関数では、それは無駄であり、MQL5の方が効率的であることが判明した。さらに、理論的になぜMQL5の方が速いのかを実証した。実用的な結果に加えて

Используете ли вы CExpert при создании роботов?
Используете ли вы CExpert при создании роботов?
  • www.mql5.com
Да Нет, пишу класс робота с нуля Нет, у меня есть свой базовый класс робота Нет, я не использую ООП Хочу посмотреть результат...
 
Renat Fatkhullin:

MT4とMT5の内部処理(取引を含む)のレイテンシを深掘りすると、MT4から逃げ出すことになる。プロセスの品質と整頓には奈落の底がある。

取引はいつの間にか忘れ去られている

取引、自動取引システム、取引戦略のテストに関するフォーラム

エラー、バグ、質問

fxsaber, 2016.10.09 09:39 PM

MT5-OrderSendは完全に同期していません - 取引環境と同期していません。これは、履歴の読み取りが実際の状態に対応していないことを意味します。

タイムアウトは問題外です。同期の問題はサーバーレベルではなく、端末レベルで対処しなければならないため、この問題に対する確実な解決策はありません。

実際、MT5ユーザーは、MT4ブリッジ開発者が直面していることに直面している。

OrderSendが送信された場合、それが行われたことを記憶しておく必要がある(ここに潜在的な脆弱性がある)。そして、対応するメッセージが OnTrade に到着するまで、現在の履歴(取引環境)を無視します。メッセージが到着したら、NOTHING を FORGOTTEN する必要がある。

FORGOTTENデータがない場合、MT4と同様に履歴を信頼することができます。

MT4-OrderSendは完全に同期しています。

はい、そして残りは、それが判明したように、はるかに単純な、問題です。

 
fxsaber:

なぜか忘れ去られるトレード

あなたは、非同期処理と同期を見たいという願望を混同している。

OrderSendの タスクは、リクエストを出し、できるだけ早く確認を受け取ることだ。そしてシステムはそれに完璧に対処する。

しかし、完了した取引/案件を取得し、履歴に残し、リクエストに応じてそれを提供することは、別のプロセスであり、OrderSendの作業を遅らせる権利はない。

トランザクションを素早く実行し、隣のパケットでミリ秒後(実際にはもっと前)にチケットの更新を取得し、それを使って作業する。


残りは、もっと単純なのだが、同様に問題がある。

コンパイラを書いたり、特に邪悪なC++テンプレートを実装するのは簡単なことなのか?

とにかく、A100の忍耐強さには感謝している。


しかし、これはオフトピックであり、これらの疑問について議論したいのであれば、ネイティブのスレッドでやってほしい。ここではRについて。
 
このスレッドに関係のないコメントは「MT5でOrderSendを適切に使用する方法」に移動しました。