Одной из основных проблем с MQL5 до сих пор было удаление встроенных функций для работы с таймсериями. Несмотря на то, что такой подход расширил для программистов возможности разработки, он также замедлил работу из-за обязательного шага по созданию и удалению новых ячеек памяти каждый раз, когда требуется доступ к данным таймсерии. Рассмотрим...
MT5の主な速度低下の理由は、完全な取引環境の模倣です。大半のExpert Advisorでは、そのような正確なシミュレーションは必要ありません。そのようなExpert Advisorのための優れた解決策は、取引環境の単純なモデリングで、簡略化されたテストモードに切り替えることでしょう。しかし、そのような可能性はありません。しかし、自分で簡略化したストラテジー・テスターを作成し、それを数学的計算 モードで実行すれば、最適化のスピードは飛躍的に向上します! Expert Advisorsの最適化速度を劇的に 向上させたいとお考えの皆様には、このような方法をお勧めします。
CStrategyでは、取引操作は CTradeを通じて直接行われる。つまり、CStrategyにはそれ自体の取引ロジックは全くありません。テスト用Expert Advisorでは、N秒後にポジションをオープン/クローズする以外の取引ロジックは見当たりませんでした。また、CStrategyはヒストリカル・ポジションを保存しないため、この例は残念ながらCStrategyでは実現できません。
CTradeも履歴を保存しませんが、だからといって、それを使ってバリアントを実装することを妨げるものではありませんでした。
OOPコードが手続き型コードより遅いという事実は、私に何も教えてはくれない。本題に入りましょう。どのCTradeメソッドがボトルネックになっているのでしょうか?なぜか?これらのメソッドのプロファイリングは何を教えてくれるのか?テスターで遅いコードセクションをどうやって特定するのですか?
SBブレーキの理由を分析したことはありませんが、OOPではないと思います。なぜならMT4OrdersもOOPで書かれているからです。BODへのリクエストの後、開発者はSBを加速させた。SB自体をいじったのか、コンパイラをいじったのかはわからない。
私自身は、まず絶対ブレーキを分析し、次に相対ブレーキを分析する。
MetaTrader 5には、過去のデータからExpert Advisorをプロファイリングする優れた機能があります。しかし、動作が遅い(ビジュアルモード)ことに加え、最終的な結果は相対的な単位で提供されます。
MT5の主な速度低下の理由は、完全な取引環境の模倣です。大半のExpert Advisorでは、そのような正確なシミュレーションは必要ありません。そのようなExpert Advisorのための優れた解決策は、取引環境の単純なモデリングで、簡略化されたテストモードに切り替えることでしょう。しかし、そのような可能性はありません。しかし、自分で簡略化したストラテジー・テスターを作成し、それを数学的計算 モードで実行すれば、最適化のスピードは飛躍的に向上します! EAの最適化速度を劇的に 上げたいすべての方に考えていただきたいことです。
カスタム・シンボルを使えば、フル・シミュレーションで何桁ものスピードアップが実現できます。実際、カスタム・シンボルのベータ・モードでも、これを実現することは可能です。後でやってみます。
MT4Orders:
MQL5は、同じMQL5で書かれたライブラリよりも遅いことが判明した!私は調査を開始し、次の置換を行うことでその原因を見つけました。
エキスパートアドバイザーのMQL5バージョンはこのようなパフォーマンスを示すようになった。
PositionSelectを PositionGetTicketに置き換えただけで、バックテスト速度が7%向上した!
MT4Ordersは最大に最適化された純粋なMQL5より1%未満遅れている。
各賞の順位は以下の通りである。
機能性や汎用性は変えずに、SB自体を少しいじった(Expert Advisorが使用するSBの一部)。84%ではなく97%になった。
SBを使っている人は、加速の可能性に注意してください。
同じMT4多通貨Expert Advisorを異なる方法で変換した場合のパフォーマンスを比較するのが面白くなりました。
フルコンバージョン
職人的(高速)変換
取引、自動取引システム、取引戦略のテストに関するフォーラム。
エキスパートアドバイザー:スプレッダー
fxsaber, 2016.09.03 11:18 AM.
パフォーマンス測定の結果。
本格版
職人的なもの
artisanalは大きく負けています。理由は簡単で、高速な時系列を求めるなら、MT4の時系列を真正面から変換できないからです
取引、自動取引システム、取引戦略のテストに関するフォーラム。
ライブラリ: CPrice
fxsaber, 2016.08.28 10:36 AM
そのようなオプションを見て ください
MT4のように、Open[bar]、High[bar]、Time[bar]、Volume[bar]などを呼び出すことができます。また、iHigh(...)、iClose(...)など。
ブッシュだけでなく、本格的なバリアントでも)この ようなソリューションを使用する必要があります。
職人的なものは大きく損をする。理由は簡単で、高速な時系列を求めるなら、MT4の時系列を真正面から変換できないからだ。
間違った結論だ。ブレーキの理由はまったく異なる。MT5の各バリアントに1行だけ挿入してみよう。
そしてもう一度計測してみよう
フル装備の方が67%速く、アルチザナルの方が108%速い!まとめると、その差は小さくなり、フル装備の方がアーティザナルより~11%速い。その理由はOOPオーバーヘッドにあるようだ。
しかし、メインはそこではない。1行でEAを高速化することに成功したのだ!しかも、これはオプティマイザーでのことで、コメントは 何の役割も果たしていない。
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
ライブラリ: TesterBenchmark
fxsaber, 2017.07.24 14:13
トレーディングSBは純粋なMQL5より1.5倍遅い!
これはSDアプリケーションと一緒に夏に書かれたものです。すべてが互角とは驚きです!それとも論理的?ほとんどすべての(SBを使用した)EAが速度で失敗し、クラウドで資金を食いつぶすなどしているのに、どうしてテスターの超高速について語ることができるのでしょうか!どうやらこれが普通らしい。
私はヒストリーとMT4Ordersの作業を捨ててソースコードを単純化した。純粋なMQL5とSBだけを残した。
SBの結果
純粋なMQL5の結果
すべて同じ1.5倍!でも、カモは 気にしない、スーパーSBを 使い続けよう。
同じ1.5倍!でも、カモは 気にしない、スーパーSBを 使い続けよう。
これがSBの微調整だ。
SBアドバイザーを奇跡的にスピードアップさせる。複雑ですか?
率直に言って、APIロジックを変えずに取引SBを、ほぼ完全に書き換えるべきだ。どの部分もダメだ。