私のアプローチコアはエンジンです。 - ページ 91

 
Реter Konow:

もうひとつ、真面目な質問です。

私自身は試していませんが、リソースを介した迅速なやりとりの有効性には疑問があります。

高速交換、-16ミリ秒を常時往復している。

ドライブに負荷がかかるのでは?

"早すぎた最適化の罪 "に陥っているのです。:-)

データ交換の クラス(GSEが魅力的でない場合は、機能のセット)を作る - 実際のプロジェクトでは、それが遅れる場合は、オプションを熟考することでしょう。その間、あなたはさらに半年間、無意味なテストに追われることになるのです。

PS ところで、このプロジェクトを一般に発表するために何かしたのですか? それとも、伝統的にフォーラムで自尊心を傷つけているだけですか?)

 
Artyom Trishkin:

チャートコメントには、サイズに制限があります。それとも違うのでしょうか?なんとなく、偶然見つけたんです。

限界はあると思います。私自身は、MqlTick-ticksを 文字列でEventChartCustomに渡すだけで、イベントキューがtickのシーケンスを保存するからです。やけに便利ですね。

 
Реter Konow:

つまり、文字列の配列をunionを通してuintに変換することができるのです?

どのように実装されているかは忘れましたが、文字列配列だけでなく、他のデータ型も任意の型に変換することができます(MqlTickでも)。コードは同じになります。

そして、StringToChar() を使うより速いのですか?

どうだろう。MqlTickから文字列に変換し、StringToCharからuintに変換する方法を試してみてください。もちろん、その逆も然りです。測って比較する。

できれば、小さくて簡単な例を挙げてください。あなたのコードの意味がわからない。

#include <TypeToBytes.mqh> // https://www.mql5.com/ru/code/16280

void OnStart()
{    
  string Str[] = {"123", "Hello World!", "Peter Konow"};

  CONTAINER<uint> Container; // Создаем контейнер - все будет храниться в массиве простого типа (в примере выбран uint)    
  Container[0] = Str;        // Записали в контейнер строковый массив
  
  CONTAINER<uint> Container2;                 // Создаем контейнер-получатель  
  ArrayCopy(Container2.Data, Container.Data); // Скопировали в него ТОЛЬКО содержимое uint массива

  string Str2[];
  Container2[0].Get(Str2); // Получили данные в исходном виде
  ArrayPrint(Str2);
}
 
fxsaber:

限界はあると思います。私自身は、MqlTick-ticksを 文字列でEventChartCustomに渡すだけで、イベントキューがtickのシーケンスを保存するからです。本当に便利なんですよ。

もし、小さなメッセージ(64文字まで)と一定の高速な受け渡しが問題なら、いくつかの便利なオプションがあります。

そしてEventChartCustomはOnChartEvent()のイベント・キューに入るので、ベストなものではありません。

しかし、1000以上のシンボルを高速に往復転送する場合、EventChartCustomとイベントキューは遅延につながります(例えば、テーブルの再読み込みやアニメーションの使用時など)。

資源のファストパスには疑問がある。

ディスクを読み込まないのか?

 

沈黙から判断すると、おそらくそうでしょう。

ほら、見てみてください)

 
Реter Konow:

リソースを介した高速転送 - 問題になっているのは

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

MetaTrader 5 build 1930の新バージョン:MQL5におけるフローティング・チャート・ウィンドウと.Netライブラリ

fxsaber さん 2018.12.09 00:18

この例では、15倍高速に動作するようになりました

1000000
Time[TestResource()] = 286646


大雑把に言うと、リソースのフル書き込み/読み出しのティックサイクルは、1秒間に400万ティックで実行さ れます。


ここで一言、ドライブに負荷がかからないか?

ディスクはリソース操作で使用されません。すべてはメモリーの中に。

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

バグ、バグ、質問

fxsaber さん 2018.12.11 09:19

確認したところ、60MBが安全に(MT4/5)Resourcesに書き込まれています。だから、もし限界があるとすれば、それはもっと高いところにある。

 
fxsaber:


リソースの作業時には、ドライブは使用しません。すべてはメモリーの中に。

ありがとうございます。だから、この選択肢は残っている。

 
fxsaber:


リソースの作業時には、ドライブは使用しません。すべてはメモリーの中に。

テスターはどうするのですか?テスターで作成したリソースは、テスターの外でも見ることができますか?また、テスターで作成されることは一切ないのでしょうか?

ZS.ここの同志は、リソースが - それは彼らがテスターで動作するかどうか不明であることを言った)) 。
 
Реter Konow:

テスターはどうするのですか?テスターで作成したリソースは、テスターの外でも見ることができますか?

また、テスターで作成されることは一切ないのでしょうか?

Strategy Testerでリソースが動作するかどうかは確認していません。もしそこで動作した場合、MT4ではTesterがTerminal内に あるため表示されますが、MT5ではTesterがTerminalと接続されていないため、表示されません。そこではCommonファイルを通じてのみ、ファイルのやり取りが可能です。


以上の情報を見て、私は一方的に、自問自答し、コードを確認しながら答えました。おすすめです。

 
fxsaber:

Strategy Testerでリソースが動作するかどうかは確認していません。そこで動作すれば、MT4ではテスターがターミナル内にある ため表示されますが、MT5ではテスターがターミナルに一切接続されていないため表示されません。そこでは、コモンファイルを通じてのみ交流が可能です。

なるほど、確認が必要ですね。今日、確認します。