サービスを提供します。もう稼働しているのでしょうか? - ページ 2

 
サービスは、どのグラフのどのプログラムとも通信できる必要があります。プログラムの共有メモリ。
 
Реter Konow:
サービスは、どのグラフのどのプログラムとも通信できる必要があります。プログラムメモリの共有化。
今、データをやり取り するためのリソースがある。
 
Renat Fatkhullin:
今すぐデータを交換できるリソースがあります。

文字列型の データのやりとりがひどくなっている。ユニバーサルタイプです。どんな目的でも。

すべてのプログラムに共通の文字列配列 - OnChartEvent()やディスクの負荷をかけずに、あらゆる情報をすばやく交換するための理想的なソリューションです。すべて非同期式。あるプログラムで書いて、別のプログラムで読む。

 

交換の仕組みは、とっくに終わっているのです。

文字列の値を交換するためのグローバル変数 があります。

 
Vladimir Pastushak:

プロジェクトは使い勝手が悪く、すべてをフォルダーに分類する方法がありません。そして、2つのプラットフォーム向けのコードを同時に開発する方法はありません。

もちろん、私が理解していないことがあるのかもしれません。

例えば、私はすべてプロジェクトを通して開発します。MQL4/5間でコードのやり取りができるようになり、さらに便利になりました。もちろん、当初は両方のプラットフォームで同時に開発しようとしたのは言うまでもありません。ちなみに、MQL5では、たまに不具合が出ることもありますが、4用のコンパイルは簡単にできますよ。だから、とにかくコンパイルしたほうがいいんです。

追伸:このプロジェクトはオープンなので、接続して見ることができます。
 
Renat Fatkhullin:

交換の仕組みは、そろそろ考えよう。

文字列の値を交換するためのグローバル変数 があります。

datetime  GlobalVariableSet( 
   string  name,      // имя 
   double  value      // устанавлимое значение 
   );

fxsaber さんの解決策 もあるのですが、分かりにくいのですぐには見つからないと思います。

 
Mikhail Dovbakh:

fxsaber さんの解決策 もあるのですが、自明でなく、すぐには見つかりません。

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

ライブラリ:TradeTransactions

fxsaber さん 2018.12.17 23:48

リソースを通じて、あらゆるものを取引することができます。

// Пример обмена любыми данными (включая строковые массивы).

#include <fxsaber\TradeTransactions\ResourceData.mqh> // https://www.mql5.com/ru/code/22166

#define  PRINT(A) Print(#A + " = " + (string)(A));

void OnStart()
{    
  // Произвольные данные для примера
  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) // Получили структуру  
}

 
Renat Fatkhullin:

サービスにはOnTimerもOnTickも存在しないことになります。OnStartのみ。

バックグラウンドでループする処理(データフィード、アナリティクス、外部リンクなど)のための特殊なプログラムであり、エキスパートの代用品ではありません。


ベータ1963がリリースされ、メニューからアップグレードができるようになりました。

OnStartとは何なのか、 同じOnTickと 何が違うのか、直接教えてください。

 
Renat Fatkhullin:

Servicesには、OnTimerやOnTickは存在しません。OnStartのみ。

バックグラウンドでのループ処理(データフィード、アナリティクス、外部リンクなど)のための特殊なソフトウェアであり、エキスパートの代わりにはなりません。


ベータ1963がリリースされ、メニューからアップデートできるようになりました。

また、ServiceとScriptsの違いは、Scriptsのために別のスケジュールを必要としないことを除けば、どのような点でしょうか。

 
Renat Fatkhullin:

サービスには、OnTimerやOnTickはありません。OnStartのみ。

バックグラウンドでループする処理(データフィード、アナリティクス、外部リンクなど)のための特別なタイプのプログラムです。

データフィードを扱う際にイベントモデルが ないのは、ある種の松葉杖のように見えます。

そのような松葉杖の例として、現在の数式記号の実装を考えてみると、イベントモデルではなく、タイマー(ループ)をベースにしていることがわかる。そのため、目盛りの飛びがあります。


以前、ServicesのマルチシンボルOnTickについて述べたことがありました。なぜ、このような良いアイデアを捨て、切り捨ててきたのでしょうか。