MT5とスピードの関係 - ページ 78 1...717273747576777879808182838485...94 新しいコメント fxsaber 2020.11.21 09:28 #771 Valeriy Yastremskiy:端末のメモリは、mclやtixなどの端末プログラムメモリとスタックされていることを正しく理解すること。 いいえ。CopyTicksは、要求されたティックのキャッシュを10秒間保存するだけです。例えば、3Gbのメモリを要求された場合、ターミナルはこの3Gbをさらにキャッシュに保存します。合計で6GBを消費します。ArrayFreeを 行い、別のシンボルに3Gbを要求すると、端末は9Gbを消費します。といった具合に。 Renat Fatkhullin 2020.11.21 09:51 #772 Valeriy Yastremskiy:端末のメモリに端末のプログラムmclやtixなどが追加されることを正しく理解すること。 もちろんです。 fxsaber 2020.11.21 10:25 #773 複数のシンボルのティック履歴を 元に数式でカスタムシンボルを作成するスクリプトを作りたいのですが MqlTick Formula( const MqlTick &Symbol1_Tick const MqlTick &Symbol2_Tick, const MqlTick &Symbol3_Tick, const MqlTick &Symbol4_Tick, const MqlTick &Symbol5_Tick );この作業には、10億ティックでも100MBのRAMがあれば十分だと思われます。しかし、MT5では、CopyTicksを使用してこのタスクを解決することはできません。これが松葉杖です。 CopyTicksは各シンボルに対して個別に呼び出され(そして、呼び出しのたびにキャッシュの解放を待つ必要がある)、FileSaveを介してティック履歴を対応するファイルに書き出します。 そして、これらのファイルからダニを読み出し、そのダニに対してFormulaを呼び出すことになります。 確かに気持ち悪い松葉杖だが、他に選択肢はない。そのため、CopyTicksと直接連携することはできません。ティックのファイルアーカイブを使用する必要があります。 呼び出しのたびにキャッシュが解放されることを想定した場合でも、最もメモリを消費するのはp.1.であろう。この場合、p.2.は無料で実行されます。 traveller00 2020.11.24 14:33 #774 私は一度に8つのペアで取引しており、各ペアで複数のExpert Advisorを使用しています。また、リソース面では、メモリ使用量は25%以下、CPUは10%以上負荷がかからないなど良好のようですが、一般的な取引と同様に新しいチャートが数秒開くなど、ラグが目立ちます。少なくとも抽象的な話ですが、どうすれば全部を詰め込んで速く動作させることができるのか、ベストプラクティスがあるのかもしれませんね。複数のExpert Advisorを1つに仮想化しているとのことですが。落とし穴は?トレードオーダーの 送信はどのように実施されたのですか?どんなことに気をつければいいのでしょうか? 追伸:私自身はVirtualで同期をとり、MT4Ordersでトレード、1チャート1EAという使い方をしています。 Anton 2020.11.24 15:04 #775 fxsaber:同じく。VPSを利用する。マーケットスクリーニングが効かない。ZS 何カ月も続いているしゃっくりを解消するのはいいことだと思います。このスクリプトは、RAMが無限のマシンで実行してください。例えば、6月1日からのティックを1文字ずつだけアップロードすることができないのです。CopyTicksをハングアップさせるだけで、リソースの消費はゼロです。 ハングアップ」した時の端末のダンプを取る。その原因を見てみましょう。 fxsaber 2020.11.24 15:16 #776 traveller00:私は一度に8つのペアで取引しており、各ペアで複数のExpert Advisorを使用しています。また、リソース面では、メモリ使用量は25%以下、CPUは10%以上負荷がかからないなど良好のようですが、一般的な取引と同様に新しいチャートが数秒開くなど、ラグが目立ちます。少なくとも抽象的な話ですが、どうすれば全部を詰め込んで速く動作させることができるのか、ベストプラクティスがあるのかもしれませんね。 新しいMT4Orders(このブランチが作成された後、履歴処理が加速される)を使用し、現在の環境:注文とポジションをスナップショットします。全部飛んでるよ。 複数のExpert Advisorを1つに仮想化しているとのことですが。落とし穴は?トレードオーダーの 送信はどのように実施されたのですか?どんなことに気をつければいいのでしょうか? synchronous OrderSendを使っていますが、MT5のチェックを無効にしています。 トレーディング、自動売買システム、ストラテジーテストに関するフォーラム ライブラリ:MT4Orders fxsaber, 2020.09.29 08:45 このセリフで。 MT4ORDERS::OrderSend_MaxPause = 0; // Отключение проверки корректности работы MT5-OrderSend. を使用すると、すべてを無効にすることができます。MT4Ordersは、この履歴を参照してMT5-OrderSendの正しさをチェック(修正)することもあるため、MT5の取引履歴が滞っている 場合に有効かもしれません。 これはお勧めしません。 各セット(入力パラメータのセット)には、それぞれ独自のVirtualが与えられます。シンクロナイザーはすべてのVirtualを通過し、それぞれのVirtualのシンクロを行う。これは最初のVirtualからではなく、ループで行う必要があります。シンクロナイザー内部で)OrderSendを呼び出すと、必ずスナップショットが作成され、OrderSend実行時間中に来た新しい目盛りが(すべてのVirtualに)追加されます。つまり、仮に一時停止した後でも、すべてを新しく作り直すのです。新鮮なティックは、毎回CopyTicks経由でのみ撮影しています。ロールスルーするSymbolInfoTickがない。CopyTicks_LastTick.time_msc < SymbolInfoTick.time_msc(呼び出しが次々と(どんな順序であっても)頻繁に起こる) なら、シンクロナイザーが有効でないことを確認します。そうでない場合、実時間制限は実行されるが、仮想時間制限は実行されないという現象が発生する可能性があります。また、同期の問題も出てくるでしょう。VIRTUAL::Snapshotでスナップショットを作っています。スピードだけでなく、自分のシンボルを他のシンボルから切り離すことができるため、自分のシンボルだけがそこに届くことになります。これにより、さらなるスピードアップを実現しています。さらに、スナップショットで無効になるのは履歴だけではありません。#define VIRTUAL_SNAPSHOT_WITHOUT_HISTORY // Отказ от снепшота истории для повышения производительностиのみならず、履歴へのアクセスを必要とする分野(以下にマーク)。#define MACROS(A) this.##A = ::Order##A(); bool ORDERS::Copy( const bool WithoutHistory = false ) { MACROS(CloseTimeMsc) if (WithoutHistory && !this.CloseTimeMsc) // Для исторических ордеров оставляем все без изменений. { const string Str = NULL; this.comment = Str; this.Commission = 0; this.OpenPriceRequest = this.OpenPrice; } else // В MT4Orders требуется обращение к истории. { const string Str = ::OrderComment(); this.comment = Str; MACROS(Commission) MACROS(OpenPriceRequest) }以前は、LastDeal.time_mscがLastTick.time_mscより大きくないかどうかもチェックしました。この条件が満たされない場合は、当然のことながら同期を拒否しました。しかし、そのようなチェックは多くのリソースを消費する(履歴で動作する)ので、お断りしました。トレードオン機能 - OnTick。おそらく主なものを挙げてみたと思います。 traveller00 2020.11.24 16:21 #777 同期とは、OrderSendだけでなく、変更、削除などを含む全ての取引注文の ことですね? SymbolInfoTickは、ティックの順序が台無しになる可能性があるため、スロースルーされません?そして、CopyTicksはまさに正しい順番で並んでいます。 SymbolInfoTickは時刻を確認するためだけに必要なことがわかりましたが、それだけでしょうか?トレードなどはすべてCopyTicksだけで 修正されるのですか? 1on1チャートに複数のEAを詰め込もうとすることに意味はあるのでしょうか?不可能ではないが、手間をかけて書き直す価値があるのか、それとも利益はわずかなものなのか、理解しようとしているのだ。 Andrey Khatimlianskii 2020.11.24 16:45 #778 traveller00:1on1チャートに複数のEAを詰め込もうとするのは意味があるのでしょうか?不可能ではないが、手間をかけて書き直す価値があるのか、それとも利益はわずかなものなのか、考えているところだ。 その利益はどこから出てくるのでしょうか?トレードの 際には、誰もがそのどれかを待ち望んでいることでしょう。 そして、パラレルが少ないだけです。 注文のキャッシュをひとつにまとめておけば別ですが、そのメリットは疑問です...。 Andrey Khatimlianskii 2020.11.24 16:46 #779 Anton:端末が「ハングアップ」したときのダンプを取る。何が原因かを確認する 問題を再現するコードで十分ではないでしょうか?それとも再生産されないのでしょうか? fxsaber 2020.11.24 17:29 #780 traveller00:同期とは、OrderSendだけでなく、変更、削除などを含む全ての取引注文の ことですね? MT5-OrderSendのことです。 SymbolInfoTickが渡されないのは、ティックの順序が台無しになる可能性があるから?そして、CopyTicksはすべて正しい順序で正確に進みます。 穴があくからです。 つまり、SymbolInfoTickが必要なのは時間の確認だけ、それだけ? はい。 トレードなどは全てCopyTicksだけで行って いるのでしょうか? だけです。 1on1チャートに複数のEAを詰め込もうとするのは意味があるのでしょうか?不可能ではないが、手間をかけて書き直す価値があるのか、それとも利益はわずかなものなのか、考えている。 これは私にとって大きな助けです。 最後のすべてのシングルパス(シングルテストモード)は、そのインステップを同じファイルに書き込みます。そこで、最適化後のパスをいくつか見てみると、それらのパスのデータが入ったファイルを入手することができます。そして、このファイルでフィルタリングし、良さそうなものだけを残すのです。そして、ロボットの起動時にFileSelectDialogを使って、このファイルを選択するだけです。このように、ポートフォリオを取引するのです。 Optimizationに20分かかることが判明。パスのプレビュー - 3分そのフィルター-3分ロボットの稼働開始-秒ロボットはコンパイルする必要がありません。バージョンとチャートの管理 - 似たようなもの。 起動時に、各セットのレポートを見ることができます。いつでもリアルからバーチャルとその名前のステータスを見ることができ、ホットキーでバーチャルとリアルの両方の詳細なHTML-Reportを見ることができるのです。1セットでも、ポートフォリオ全体でも。 バーチャルの売買統計は特別に早く書かれているので、その場で(キーボードから)素早くセットを比較 することが可能です。 ファイル: clip0184.gif 64 kb 1...717273747576777879808182838485...94 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
端末のメモリは、mclやtixなどの端末プログラムメモリとスタックされていることを正しく理解すること。
いいえ。CopyTicksは、要求されたティックのキャッシュを10秒間保存するだけです。例えば、3Gbのメモリを要求された場合、ターミナルはこの3Gbをさらにキャッシュに保存します。合計で6GBを消費します。ArrayFreeを 行い、別のシンボルに3Gbを要求すると、端末は9Gbを消費します。といった具合に。
端末のメモリに端末のプログラムmclやtixなどが追加されることを正しく理解すること。
この作業には、10億ティックでも100MBのRAMがあれば十分だと思われます。しかし、MT5では、CopyTicksを使用してこのタスクを解決することはできません。
これが松葉杖です。
確かに気持ち悪い松葉杖だが、他に選択肢はない。そのため、CopyTicksと直接連携することはできません。ティックのファイルアーカイブを使用する必要があります。
呼び出しのたびにキャッシュが解放されることを想定した場合でも、最もメモリを消費するのはp.1.であろう。この場合、p.2.は無料で実行されます。
私は一度に8つのペアで取引しており、各ペアで複数のExpert Advisorを使用しています。また、リソース面では、メモリ使用量は25%以下、CPUは10%以上負荷がかからないなど良好のようですが、一般的な取引と同様に新しいチャートが数秒開くなど、ラグが目立ちます。少なくとも抽象的な話ですが、どうすれば全部を詰め込んで速く動作させることができるのか、ベストプラクティスがあるのかもしれませんね。複数のExpert Advisorを1つに仮想化しているとのことですが。落とし穴は?トレードオーダーの 送信はどのように実施されたのですか?どんなことに気をつければいいのでしょうか?
追伸:私自身はVirtualで同期をとり、MT4Ordersでトレード、1チャート1EAという使い方をしています。
同じく。VPSを利用する。マーケットスクリーニングが効かない。
ZS 何カ月も続いているしゃっくりを解消するのはいいことだと思います。このスクリプトは、RAMが無限のマシンで実行してください。例えば、6月1日からのティックを1文字ずつだけアップロードすることができないのです。CopyTicksをハングアップさせるだけで、リソースの消費はゼロです。
ハングアップ」した時の端末のダンプを取る。その原因を見てみましょう。
私は一度に8つのペアで取引しており、各ペアで複数のExpert Advisorを使用しています。また、リソース面では、メモリ使用量は25%以下、CPUは10%以上負荷がかからないなど良好のようですが、一般的な取引と同様に新しいチャートが数秒開くなど、ラグが目立ちます。少なくとも抽象的な話ですが、どうすれば全部を詰め込んで速く動作させることができるのか、ベストプラクティスがあるのかもしれませんね。
複数のExpert Advisorを1つに仮想化しているとのことですが。落とし穴は?トレードオーダーの 送信はどのように実施されたのですか?どんなことに気をつければいいのでしょうか?
synchronous OrderSendを使っていますが、MT5のチェックを無効にしています。
トレーディング、自動売買システム、ストラテジーテストに関するフォーラム
ライブラリ:MT4Orders
fxsaber, 2020.09.29 08:45
このセリフで。
を使用すると、すべてを無効にすることができます。MT4Ordersは、この履歴を参照してMT5-OrderSendの正しさをチェック(修正)することもあるため、MT5の取引履歴が滞っている 場合に有効かもしれません。
これはお勧めしません。
各セット(入力パラメータのセット)には、それぞれ独自のVirtualが与えられます。シンクロナイザーはすべてのVirtualを通過し、それぞれのVirtualのシンクロを行う。これは最初のVirtualからではなく、ループで行う必要があります。
シンクロナイザー内部で)OrderSendを呼び出すと、必ずスナップショットが作成され、OrderSend実行時間中に来た新しい目盛りが(すべてのVirtualに)追加されます。つまり、仮に一時停止した後でも、すべてを新しく作り直すのです。
新鮮なティックは、毎回CopyTicks経由でのみ撮影しています。ロールスルーするSymbolInfoTickがない。CopyTicks_LastTick.time_msc < SymbolInfoTick.time_msc(呼び出しが次々と(どんな順序であっても)頻繁に起こる) なら、シンクロナイザーが有効でないことを確認します。そうでない場合、実時間制限は実行されるが、仮想時間制限は実行されないという現象が発生する可能性があります。また、同期の問題も出てくるでしょう。
VIRTUAL::Snapshotでスナップショットを作っています。スピードだけでなく、自分のシンボルを他のシンボルから切り離すことができるため、自分のシンボルだけがそこに届くことになります。これにより、さらなるスピードアップを実現しています。さらに、スナップショットで無効になるのは履歴だけではありません。
のみならず、履歴へのアクセスを必要とする分野(以下にマーク)。
以前は、LastDeal.time_mscがLastTick.time_mscより大きくないかどうかもチェックしました。この条件が満たされない場合は、当然のことながら同期を拒否しました。しかし、そのようなチェックは多くのリソースを消費する(履歴で動作する)ので、お断りしました。
トレードオン機能 - OnTick。
おそらく主なものを挙げてみたと思います。
同期とは、OrderSendだけでなく、変更、削除などを含む全ての取引注文の ことですね?
SymbolInfoTickは、ティックの順序が台無しになる可能性があるため、スロースルーされません?そして、CopyTicksはまさに正しい順番で並んでいます。
SymbolInfoTickは時刻を確認するためだけに必要なことがわかりましたが、それだけでしょうか?トレードなどはすべてCopyTicksだけで 修正されるのですか?
1on1チャートに複数のEAを詰め込もうとすることに意味はあるのでしょうか?不可能ではないが、手間をかけて書き直す価値があるのか、それとも利益はわずかなものなのか、理解しようとしているのだ。
1on1チャートに複数のEAを詰め込もうとするのは意味があるのでしょうか?不可能ではないが、手間をかけて書き直す価値があるのか、それとも利益はわずかなものなのか、考えているところだ。
その利益はどこから出てくるのでしょうか?トレードの 際には、誰もがそのどれかを待ち望んでいることでしょう。
そして、パラレルが少ないだけです。
注文のキャッシュをひとつにまとめておけば別ですが、そのメリットは疑問です...。
端末が「ハングアップ」したときのダンプを取る。何が原因かを確認する
問題を再現するコードで十分ではないでしょうか?それとも再生産されないのでしょうか?
同期とは、OrderSendだけでなく、変更、削除などを含む全ての取引注文の ことですね?
MT5-OrderSendのことです。
SymbolInfoTickが渡されないのは、ティックの順序が台無しになる可能性があるから?そして、CopyTicksはすべて正しい順序で正確に進みます。
穴があくからです。
つまり、SymbolInfoTickが必要なのは時間の確認だけ、それだけ?
はい。
トレードなどは全てCopyTicksだけで行って いるのでしょうか?
だけです。
1on1チャートに複数のEAを詰め込もうとするのは意味があるのでしょうか?不可能ではないが、手間をかけて書き直す価値があるのか、それとも利益はわずかなものなのか、考えている。
これは私にとって大きな助けです。
最後のすべてのシングルパス(シングルテストモード)は、そのインステップを同じファイルに書き込みます。そこで、最適化後のパスをいくつか見てみると、それらのパスのデータが入ったファイルを入手することができます。そして、このファイルでフィルタリングし、良さそうなものだけを残すのです。そして、ロボットの起動時にFileSelectDialogを使って、このファイルを選択するだけです。このように、ポートフォリオを取引するのです。
Optimizationに20分かかることが判明。パスのプレビュー - 3分そのフィルター-3分ロボットの稼働開始-秒ロボットはコンパイルする必要がありません。バージョンとチャートの管理 - 似たようなもの。
起動時に、各セットのレポートを見ることができます。いつでもリアルからバーチャルとその名前のステータスを見ることができ、ホットキーでバーチャルとリアルの両方の詳細なHTML-Reportを見ることができるのです。1セットでも、ポートフォリオ全体でも。
バーチャルの売買統計は特別に早く書かれているので、その場で(キーボードから)素早くセットを比較 することが可能です。