開発者への質問 - 最適化時にすべての計算コアを使用することについて - ページ 8

 
面白いアプローチですね。
私も、自分の「自転車」を作らなければならないでしょう。
タスクはおおよそ次のようなものです。
は、パラメータの数は可変です。
値によっては、新しいパラメータが表示されたり、既存のパラメータが消えたりします。
その数は30、100、200、無限大と様々ですが、平均すると20〜50くらいでしょうか。
ストラテジーは、利用可能なパラメーターの値の組み合わせによってのみ完全なものとなり、完全なストラテジーにおいてのみ、利益やドローダウンなどを計算することができるのです。
を使えば、(計算機的に)簡単にパラメータの追加や削除ができ、値が変わったときにどのパラメータが現れて、どのパラメータが消えるかを判断することができます。

テスターをどのように 使えば良いパラメータが得られるかを考えなければなりません。パラメータは、戦略の機能的要素です。プログラムによるテスターの管理(開始、停止、測定器の変更、日付、レバレッジ、計算時間の見積もり、EA/指標パラメータの変更など)、最適化結果の取得(キャッシュの読み込み)が可能です。
何かアイデアがあれば教えてください :)?まだ、この段階には至っていません。
 
Aliaksandr Hryshyn:
面白いアプローチですね。
私の『自転車』もやらなきゃ。
タスクはおおよそ次のようなものです。
の場合、パラメータの数は可変です。
値によっては、新しいパラメータが表示されたり、既存のパラメータが消えたりします。
その数は30、100、200、無限大と様々ですが、平均すると20〜50くらいでしょうか。
ストラテジーは、利用可能なパラメーターの値の組み合わせによってのみ完全なものとなり、完全なストラテジーにおいてのみ、利益やドローダウンなどを計算することができるのです。
を使えば、(計算機的に)簡単にパラメータの追加や削除ができ、値が変わったときにどのパラメータが現れて、どのパラメータが消えるかを判断することができます。

テスターをどのように 使えば良いパラメータが得られるかを考えなければなりません。パラメータは、戦略の機能的要素です。プログラムによるテスターの管理(開始、停止、測定器の変更、日付、レバレッジ、計算時間の推定値の取得、EA/指標パラメータの変更など)、最適化結果の取得(キャッシュの読み込み)が可能です。
何かアイデアがあれば教えてください :)?まだ、この段階には至っていません。

この問題には、仕様によっていくつかの解決策が考えられます。

すでに存在するパラメータも、これから現れるかもしれないパラメータも、すべてパラメータの集合(染色体またはそれに相当するもの)の中に厳密に位置づけられるのであれば、まったく問題はないのである。

各パラメータの定位置をあらかじめ定義できない場合は、パラメータ同士を厳密に組み合わせられるタイプに分ける必要がある(そうすれば、パラメータがどこにあっても問題ない)ので、AOの修正が必要である。

他にも解決する方法はありますが、いずれにせよ、標準的なものの上に上部構造であるカスタムAOが必要になります。

 
Boris Egorov:
メモリ過多を確認.不思議とスワップはキャンセルされなかったが、改めて開発者はこのことを考慮する必要があると思う。

どのように問題が解決されたかを教えてください。心配なんですよね。

エージェントごとに必要な最小メモリはどれくらいですか(すべてのエージェントが均等に 負荷がかかるようになるまで、起動するエージェントの数を減らしましたか?)

ページファイルを増やした?物理メモリが常にスワップされるため、速度が大きく低下する可能性があり、トータルの最適化時間が最小となるコア数を見つける必要があります。

 
Edgar Akhmadeev:

どのように問題が解決されたかを教えてください。心配なんですよね。

エージェントごとに必要な最小メモリはどれくらいですか(すべてのエージェントが均等に負荷がかかるようになるまで、起動するエージェントの数を減らしましたか?)

ページファイルを増やした?物理メモリが常にスワップされ、速度低下が激しくなる可能性があるため、最適化の総時間が最小になるようなコア数を見つける必要があるのです。

ティックの使用量、履歴の深さ、ツールの数によって異なります。タスクマネージャを見れば、すべてのRAMから1-2GBのOS用を除いた量を、1つのエージェントが使用する量で割ったものが表示されます。一人ひとり違うんです。

RAMの1つの領域を相場と、場合によってはインジケータに使用すれば、開発者は真の意味で改善することができます。
 
Aliaksandr Hryshyn:

ティックの使い方、履歴の深さ、ツールの数によって、すべてが変わってくるのです。タスクマネージャーを見れば、RAMの総容量からOSの1〜2GBを除いたサイズを、1つのエージェントが使用する容量で割っていることが分かります。一人ひとり違うんです。

RAMの1つの領域を引用符と、おそらくインジケータに使用すれば、開発者は本当に状況を改善することができます。

説明してるのか?男に問題を説明していたのに、その結果が気になる。フィードバックがない。

また、端末によるメモリの非効率的な使用についてはすでに何度も議論しており、MQは各エージェントのために重複したティック履歴と一時ファイル、および各ティックの 最適化の前にそれらの長い作成で状況を変えることを何度も約束しています。個人的には、数年にわたり、エージェントとティック最適化のほぼ半分を無効にする必要がありました。8GBと8エージェントを持っています。しかし、今は今あるものを使い、メモリサイズを増やすか、エージェントを無効にするかのどちらかです。

 
Edgar Akhmadeev:

説明してるのか?その人に問題を説明したのだが、さて結果はどうだろう。フィードバックがない。

また、端末によるメモリの非効率的な使用については、すでに何度も議論しており、MQは、エージェントごとにティック履歴と一時ファイルの複製、および各ティックの 最適化の前にそれらの長い作成で状況を変えることを何度も約束しています。個人的には、何年もの間、エージェントの半分近くとティック最適化を無効にしなければなりませんでした。8GBと8エージェントを持っています。しかし、今は今あるものを使い、メモリサイズを増やすか、エージェントを無効にするかのどちらかです。

>どのように問題が解決されたかを知らせてくれればいいのです。心配なんです。

> その人に問題を説明し、今は その結果に関心を持っている。フィードバックはありません。

すみません、仕事中で時間がなかったんです。

EAを最適化しました。オプティマイザーを動作させるために、いくつかの「重要でない」部分を削除しました(具体的には、OpenCLとSQLiteに関連するものすべてです)。今はメモリのオーバーフローはありません。でも ...もちろん、解決策にはなりません。

別のコンピュータでは、フリーズを避けるためにコアのいくつかを無効にしなければなりませんでした.そのため、例えば3950X(16コア/32スレッド)、32GBのシステムで、すべてのスレッドを使用すると、ただハングアップしてしまうのです。しかも、エージェントでハングアップして、タスクマネージャーから手動でプロセスを終了させるまでハングアップしてしまう・・・。一部のコアを無効化しても、計算は続きました。開発者は問題を明示するようなことをするべきだと思う。オプティマイザが本当に計算のために10ギガ以上のメモリを必要とするのであれば、アラートのようなもので明確に書いておくべきです。スワップについては、今一度、念を押しておきますが。Xmetersをインストールしているのですが・・・。だから、タスクバー上でメモリの負荷を視覚的に確認することができるんだ。

amdc CPUに特化した他の不具合があり、以前はなかったと思うのですが......アドバイザーは同じでしたが。症状は以下の通りです。5コアしかない・・・。と誤算がぶら下がる...。そして、それは正確にメモリ、すなわち同じExpert Advisorは問題なく16スレッドを強制し、問題はフローティング、今とそれではないのです。オプティマイザーを使用しないテストを実行すると、正常に実行されます。何度も気づきました。だから、チェックしなければならないのです。

ネットワークエージェントのブレーキについてですが、やはり手が届きません。ワン・コア-ワン・ジョブ」は、開発者の理解を超えている。前回同様、10個のコアがそれぞれ30個のジョブを取得し、さらに30個のネットワークエージェントがアイドルになります。何かを考える作業を分散させるのに時間がかかる。だから全体的にラグが多いんです。

そして、そうです、忘れていました:皆さん、ご参加、ご協力、アドバイス、本当にありがとうございました。
 

toRenat Fatkhullin

それでも、もう一度このテーマを取り上げ、レナト・ファトフリンに 具体的な質問をしたい

1.私は、性能の全く異なる複数のサーバーで構成されるローカルファームを最適化していますが、最適化中に性能の異なるCPUが原因で本当にひどい遅延が発生するのを見ました。CPU Xeon E5-2620 v2 (2.1 GHz), Xeon E5-2620 0 (2.00 GHz), i7-3820 (3.6 GHz), Xeon E3-1245 (3.7 GHz), Ryzen 7 2700, Ryzen 9 3900X, Ryzen 9 3950X を搭載したサーバがあると仮定します。現在のアルゴリズムは、ジョブスタックを形成し、そのジョブスタックを利用可能な各コアに均等に分割する、というものです。低速のXeon E5-2620 0 (2.00GHz) とXeon E5-2620 v2 (2.1GHz) CPUのため、ファームはアイドル状態でタスクをカウントしていましたが、この2CPUはその半分もカウントしていませんでした。そのため、農場全体がただただ閑散としている。CPUの速度が違うから起こるのであって、ジョブがパケットで配布される限り、これからも起こり続ける。経験上、ネットワークの遅延は全く問題ではなく、無視できるレベルです。各コアに複数のジョブを割り当てるのではなく、「解放された各コアに現世代スタックから1つのジョブを 与える」というジョブ配分アルゴリズムの作り直しは既に可能でしょうか?

2.10分ごとにテスト結果をxmlファイルに保存し、最後に保存したものから実行することは可能ですか?

Renat Fatkhullin - MetaQuotes
  • www.mql5.com
Профиль трейдера
 

テスターとオプティマイザーの全面的な書き直しに取り組みました。

蓄積された問題を抜本的に見直し、解決していきます。

 
Renat Fatkhullin:

テスターとオプティマイザーの全面的な書き直しに取り組みました。

蓄積された問題を抜本的に見直し、解決していきます。

あるのでしょうか。

1.エージェント脱落への対応が早い。例えば、エージェントからの脱落がない場合、数分間パケット配信を中断し、パケットの再配信を行う。

2.リモートマシン 上のすべてのエージェントのデータを一度にアップロードすることは可能でしょうか?

3.大量のデータを転送する問題は、エージェントとの接続が切れたときに、最適化に必要なすべてのデータ(ファイル)をダウンロードしていないのでしょうか?

 

もうひとつ気になることがあるんです.

最適化が 行われ、その瞬間にエージェントのメタトレーダーが更新されたとします.エージェントにジョブ(というかバッチ)がある場合、それは失われるのですか、それとも再計算されるのですか?