よくぞ言ってくれました。
各分野のプロフェッショナル
ありがとうございました。
また、5月20日までの次のリリースでは、過去のデータでデバッガが利用できるようになる可能性が高いです。
5月26日~28日に開催される「iFX Expo」にて展示します。
- iFX EXPO
- www.ifxexpo.com
Renat Fatkhullin:
- 新しい64ビットMQL5コンパイラは、現行のMQL5コンパイラに比べて2~10倍高速化されています。
新しいコンパイラの開発には長い時間がかかりましたが、その成果は驚くべきものでした。文字列操作の最適化には課題がありますが、こちらも高速化を図っていきます。 - この新しいコンパイラは、Visual Studio 2012 x64コンパイラの品質と速度に非常に近いものです。
まだテスト中のため、すべての最適化手法を有効にしているわけではありません。したがって、今後も成果は上がっていくでしょう。
また、過去データのデバッガーは、5月20日までに次のリリースで利用可能になる可能性が高いです。
5月26日~28日に開催されるiFX Expoで デモを行います。
新しいコンパイラは、Visual Studio 2012 x64コンパイラの品質と速度に非常に近くなっている
まだテスト中のため、すべての最適化手法を有効にしているわけではありません。だからこそ、成果はどんどん上がっていくのです。
朗報です。よくやった
レナト・ファットフーリン
同時に多くの計算を行うことができ、DLLに切り替えることをあまり考えなくて済むかもしれません。特にヘビーな計算をする人には重要です。
そうですね、外部DLLが必要な作業はもう本当に思いつきませんね。
また、5月20日までの次のリリースでは、過去のデータでデバッガが利用できるようになる可能性が高いです。
これが本当に一番便利な機能です。本当にありがとうございました。
個人的には、配列へのポインタについてひとつだけ疑問があります。 プライベート配列の場合は、配列をクラスでラップすることで問題が解決します。
しかし、OnCalculate()関数に 渡される配列は、毎回データを内部バッファにコピーし、Analyzerオブジェクトとハンドラにポインタを渡すだけです。一度、memcpyを使ってポインタを渡そうとしたことがありますが、なぜか速度はほとんど変わらず、私の意見としては、このような「トリック」は適用すべきではないです。
一般に,配列の要素をコピーせずにアクセスすることが課題です.
そうですね、現実的にはもう外部DLLが必要な作業は思いつきませんね。
MqlTradeRequest構造体 インスタンスのdeviationフィールドにdeviation入力パラメータを代入すると、コード生成エラーになることが判明した。
仮の例(他はすべて削除しています)。
sinput ulong deviation = 100; int OnInit() { MqlTradeRequest request = { 0 }; request.deviation = deviation; //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- }コード生成エラー1 1」と表示されるのですが。
100」を割り当てるだけなら。
int OnInit() { MqlTradeRequest request = { 0 }; request.deviation = 100; //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- }
...すると、コンパイルはエラーなく行われるでしょう。注)AMD Athlon II X4 645, 3.1 GHz プロセッサを搭載しています。もしかしたら、それは重要なことかもしれません(ちょうど今週、servicedeskを使ったMQL4が、AMDでいくつかのバグをキャッチしています)。
私のコンパイラは他に何も文句を言いません。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
先にお約束した通り、64ビット版のMetaTrader 5に最適化した新しいMQL5コンパイラをリリースします。
32ビット版の端末にも、古いバージョンの端末にも、生成されたコードの完全な互換性を保ちました。
MetaQuotes-Demoサーバーでは、新機能を搭載したMetaTrader 5 build 1108へのアップグレードが既に可能です。新しい最適化コンパイラーを有効にするには、metaeditor.ini の [Experts] に Optimize=1 のキーを追加します。
MQL4、MQL5、C++コンパイラの性能をテストするために、標準的なコンパイラテストを 使用しました。すべてのソースファイルは、Excelスプレッドシートと一緒に添付されているので、誰でも再確認することができます。
とりあえず、以下の環境でテスト結果を見てみましょう。
詳細なグラフをご覧になるには、クリックしてください。
結論は何か。
MQL5はMQL4と比較して、数十%から数倍まで高速化されています。その理由は実行環境と32ビットにある。MetaTrader 5は、より効率的で常に開発されているランタイムを備えています。
新しいコンパイラの開発には多くの時間を要しましたが、その成果は驚くべきものでした。文字列操作の最適化には課題がありますが、こちらも高速化を図っていきます。
まだテスト中のため、すべての最適化手法を有効にしているわけではありません。そのため、成果はどんどん向上していくでしょう。
トレーダーに何を与えるのか?
同じ時間でより多くの計算ができるようになり、DLLへの切り替えを考えることが少なくなりました。特に、重い計算をする人には重要です。