// Пример обмена любыми данными (включая строковые массивы).#include <fxsaber\TradeTransactions\ResourceData.mqh> // https://www.mql5.com/ru/code/22166#define PRINT(A) Print(#A + " = " + (string)(A));
voidOnStart()
{
// Произвольные данные для примераstring Str[] = {"123", "Hello World!"};
double Num = 5;
MqlTick Tick = {0};
Tick.bid = 1.23456;
const RESOURCEDATA<uint> Resource; // Ресурс для обмена данными
CONTAINER<uint> Container; // Создаем контейнер - все будет храниться в массиве простого типа (в примере выбран uint)// Заполняем контейнер разными данными
Container[0] = Str;
Container[1] = Num;
Container[2] = Tick;
// Распечатаем типы хранимых в контейнере данныхfor (int i = 0; i < Container.GetAmount(); i++)
PRINT(Container[i].GetType())
Resource = Container.Data; // Отправили данные на обмен
CONTAINER<uint> Container2; // Сюда будем получать данные
Resource.Get(Container2.Data); // Получили данные// Получим данные в исходном видеstring Str2[];
Container[0].Get(Str2); // Получили массивArrayPrint(Str2);
PRINT(Container[1].Get<double>()) // Получили число
PRINT(Container[2].Get<MqlTick>().bid) // Получили структуру
}
サービスは、どのグラフのどのプログラムとも通信できる必要があります。プログラムメモリの共有化。
今すぐデータを交換できるリソースがあります。
文字列型の データのやりとりがひどくなっている。ユニバーサルタイプです。どんな目的でも。
すべてのプログラムに共通の文字列配列 - OnChartEvent()やディスクの負荷をかけずに、あらゆる情報をすばやく交換するための理想的なソリューションです。すべて非同期式。あるプログラムで書いて、別のプログラムで読む。
交換の仕組みは、とっくに終わっているのです。
文字列の値を交換するためのグローバル変数 があります。
プロジェクトは使い勝手が悪く、すべてをフォルダーに分類する方法がありません。そして、2つのプラットフォーム向けのコードを同時に開発する方法はありません。
もちろん、私が理解していないことがあるのかもしれません。例えば、私はすべてプロジェクトを通して開発します。MQL4/5間でコードのやり取りができるようになり、さらに便利になりました。もちろん、当初は両方のプラットフォームで同時に開発しようとしたのは言うまでもありません。ちなみに、MQL5では、たまに不具合が出ることもありますが、4用のコンパイルは簡単にできますよ。だから、とにかくコンパイルしたほうがいいんです。
追伸:このプロジェクトはオープンなので、接続して見ることができます。交換の仕組みは、そろそろ考えよう。
文字列の値を交換するためのグローバル変数 があります。
fxsaber さんの解決策 もあるのですが、分かりにくいのですぐには見つからないと思います。
fxsaber さんの解決策 もあるのですが、自明でなく、すぐには見つかりません。
トレーディング、自動売買システム、ストラテジーテストに関するフォーラム
ライブラリ:TradeTransactions
fxsaber さん 2018.12.17 23:48
リソースを通じて、あらゆるものを取引することができます。
サービスにはOnTimerもOnTickも存在しないことになります。OnStartのみ。
バックグラウンドでループする処理(データフィード、アナリティクス、外部リンクなど)のための特殊なプログラムであり、エキスパートの代用品ではありません。
ベータ1963がリリースされ、メニューからアップグレードができるようになりました。
OnStartとは何なのか、 同じOnTickと 何が違うのか、直接教えてください。
Servicesには、OnTimerやOnTickは存在しません。OnStartのみ。
バックグラウンドでのループ処理(データフィード、アナリティクス、外部リンクなど)のための特殊なソフトウェアであり、エキスパートの代わりにはなりません。
ベータ1963がリリースされ、メニューからアップデートできるようになりました。
また、ServiceとScriptsの違いは、Scriptsのために別のスケジュールを必要としないことを除けば、どのような点でしょうか。
サービスには、OnTimerやOnTickはありません。OnStartのみ。
バックグラウンドでループする処理(データフィード、アナリティクス、外部リンクなど)のための特別なタイプのプログラムです。
データフィードを扱う際にイベントモデルが ないのは、ある種の松葉杖のように見えます。
そのような松葉杖の例として、現在の数式記号の実装を考えてみると、イベントモデルではなく、タイマー(ループ)をベースにしていることがわかる。そのため、目盛りの飛びがあります。
以前、ServicesのマルチシンボルOnTickについて述べたことがありました。なぜ、このような良いアイデアを捨て、切り捨ててきたのでしょうか。