#include <TypeToBytes.mqh> // https://www.mql5.com/ru/code/16280voidOnStart()
{
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);
}
もうひとつ、真面目な質問です。
私自身は試していませんが、リソースを介した迅速なやりとりの有効性には疑問があります。
高速交換、-16ミリ秒を常時往復している。
ドライブに負荷がかかるのでは?
"早すぎた最適化の罪 "に陥っているのです。:-)
データ交換の クラス(GSEが魅力的でない場合は、機能のセット)を作る - 実際のプロジェクトでは、それが遅れる場合は、オプションを熟考することでしょう。その間、あなたはさらに半年間、無意味なテストに追われることになるのです。
PS ところで、このプロジェクトを一般に発表するために何かしたのですか? それとも、伝統的にフォーラムで自尊心を傷つけているだけですか?)
チャートコメントには、サイズに制限があります。それとも違うのでしょうか?なんとなく、偶然見つけたんです。
限界はあると思います。私自身は、MqlTick-ticksを 文字列でEventChartCustomに渡すだけで、イベントキューがtickのシーケンスを保存するからです。やけに便利ですね。
つまり、文字列の配列をunionを通してuintに変換することができるのです?
どのように実装されているかは忘れましたが、文字列配列だけでなく、他のデータ型も任意の型に変換することができます(MqlTickでも)。コードは同じになります。
そして、StringToChar() を使うより速いのですか?
どうだろう。MqlTickから文字列に変換し、StringToCharからuintに変換する方法を試してみてください。もちろん、その逆も然りです。測って比較する。
できれば、小さくて簡単な例を挙げてください。あなたのコードの意味がわからない。
限界はあると思います。私自身は、MqlTick-ticksを 文字列でEventChartCustomに渡すだけで、イベントキューがtickのシーケンスを保存するからです。本当に便利なんですよ。
もし、小さなメッセージ(64文字まで)と一定の高速な受け渡しが問題なら、いくつかの便利なオプションがあります。
そしてEventChartCustomはOnChartEvent()のイベント・キューに入るので、ベストなものではありません。
しかし、1000以上のシンボルを高速に往復転送する場合、EventChartCustomとイベントキューは遅延につながります(例えば、テーブルの再読み込みやアニメーションの使用時など)。
資源のファストパスには疑問がある。
ディスクを読み込まないのか?
沈黙から判断すると、おそらくそうでしょう。
ほら、見てみてください)
リソースを介した高速転送 - 問題になっているのは
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
MetaTrader 5 build 1930の新バージョン:MQL5におけるフローティング・チャート・ウィンドウと.Netライブラリ
fxsaber さん 2018.12.09 00:18
この例では、15倍高速に動作するようになりました
大雑把に言うと、リソースのフル書き込み/読み出しのティックサイクルは、1秒間に400万ティックで実行さ れます。
ここで一言、ドライブに負荷がかからないか?
ディスクはリソース操作で使用されません。すべてはメモリーの中に。
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
バグ、バグ、質問
fxsaber さん 2018.12.11 09:19
確認したところ、60MBが安全に(MT4/5)Resourcesに書き込まれています。だから、もし限界があるとすれば、それはもっと高いところにある。
リソースの作業時には、ドライブは使用しません。すべてはメモリーの中に。
ありがとうございます。だから、この選択肢は残っている。
リソースの作業時には、ドライブは使用しません。すべてはメモリーの中に。
テスターはどうするのですか?テスターで作成したリソースは、テスターの外でも見ることができますか?また、テスターで作成されることは一切ないのでしょうか?
ZS.ここの同志は、リソースが - それは彼らがテスターで動作するかどうか不明であることを言った)) 。テスターはどうするのですか?テスターで作成したリソースは、テスターの外でも見ることができますか?
また、テスターで作成されることは一切ないのでしょうか?
Strategy Testerでリソースが動作するかどうかは確認していません。もしそこで動作した場合、MT4ではTesterがTerminal内に あるため表示されますが、MT5ではTesterがTerminalと接続されていないため、表示されません。そこではCommonファイルを通じてのみ、ファイルのやり取りが可能です。
以上の情報を見て、私は一方的に、自問自答し、コードを確認しながら答えました。おすすめです。
Strategy Testerでリソースが動作するかどうかは確認していません。そこで動作すれば、MT4ではテスターがターミナル内にある ため表示されますが、MT5ではテスターがターミナルに一切接続されていないため表示されません。そこでは、コモンファイルを通じてのみ交流が可能です。
なるほど、確認が必要ですね。今日、確認します。