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

 
Aliaksandr Hryshyn:
1.ニュースのバックグラウンドでの読み込み
2. 重い計算を複数のスレッド(サービスのコピーを実行中)で行い、取引に影響を与えないようにする。
3.Expert Advisorは、カップから情報を収集し、サービスは定期的にZIPアーカイブにパックします。
4.複数のExpert Advisorが動作した際の全ての取引情報を収集し、加工してデータベースに保存または送信する。
5. ...
選択肢は?
1.ファイルへのアップロードの場合は、「はい」です。

2.できます。

3.よくわからない。スタックのイベントを受け付けるサービスですか?そうでない場合は、EAから渡す必要があり、意味がなくなります。

4.各EAが単純にレポートをファイルに書き、サービスがそれを読み込んで分析するのであれば、そうなりますね。

私自身はまだバリエーションを考えているところです
 
Roman:

Expert/Script は、オープン・チャートを必要とします。
グラフの数は、端末によって制限されます。
グラフのレンダリングや更新のたびに、システムのメッセージキューが発生し、不必要なリソースの負荷となる。

同意見です。
 
fxsaber:

2-3は、OBJ_CHART 上のスクリプトで実装可能です。

端末の起動時にサービスが開始されるため、スクリプトではできません。
 
Aliaksandr Hryshyn:
端末が起動するとサービスが開始されるので、スクリプトでは無理です。

この2つのタスクでは必要ありません。

 
Aliaksandr Hryshyn:
1.バックグランドニュースの読み込み
2.重い計算を複数のスレッド(サービスのコピーを実行中)で行い、取引に影響を与えないようにする。
3.Expert Advisorは、カップから情報を収集し、サービスは定期的にZIPアーカイブにパックします。
4.複数のExpert Advisorが動作した際の全ての取引情報を収集し、加工してデータベースに保存、または送信します。
5. ...
選択肢は?

これらのタスクのすべてについて、Expert Advisor のグループとサービスとの間のデータ交換の 問題を解決する必要があります。

私がサービスのために提案できる最大値は、他のブローカーからの価格が行くのソケットに耳を傾け、裁定取引を行うためにカスタムティックチャートにそれを転送し、カスタムチャート上のTSによって動作するエキスパート-アドバイザーです。

 
Igor Makanu:

上記のすべてのタスクについて、アドバイザリーグループとサービス間のデータ交換のタスクを解決する必要があります。

おそらく、プログラム間のデータ交換の ための共有メモリは、今後はリソースではなくDBで提供されるようになり、実装ややりとりが大幅に簡素化されるでしょう。
 
Sergey Lebedev:
Servicesの最大の問題は、Terminal Handleではなく、すべてのマージンケースなのです。

自動再接続機は、Handleがないと実現できない。そして、それは実際の取引にとても必要なことなのです。

 
スクリプト/サービスで多通貨のOnTick/OnBookEventを実装するオプションが追加されました。
//#property service

#include <NewData.mqh> // https://c.mql5.com/3/354/NewData.mqh

// Script/Service main function.
void OnStart()
{
  const string Symbols[] = {"EURUSD", "GBPUSD"};
  
  NEWDATA<TICK> Ticks(Symbols);
  NEWDATA<BOOKS> Books(Symbols);

  while (!IsStopped())
  {
    Ticks.Refresh();
    Books.Refresh();
        
    Sleep(50);
  }
}

void OnTick( const string &Symb )
{
  MqlTick Tick;
  
  if (SymbolInfoTick(Symb, Tick))  
    Print(Symb + " - new tick: " + (string)Tick.time);
}

void OnBookEvent( const string &Symb )
{
  MqlBookInfo Books[];

  if (MarketBookGet(Symb, Books))  
    Print(Symb + " - new book: " + (string)ArraySize(Books) + " bands.");
}


結果

2021.04.26 11:18:38.527 EURUSD - new tick: 2021.04.26 11:18:39
2021.04.26 11:18:38.527 EURUSD - new book: 14 bands.
2021.04.26 11:18:38.904 GBPUSD - new tick: 2021.04.26 11:18:39
2021.04.26 11:18:38.904 GBPUSD - new book: 16 bands.
2021.04.26 11:18:38.965 GBPUSD - new tick: 2021.04.26 11:18:39
2021.04.26 11:18:38.965 GBPUSD - new book: 16 bands.
2021.04.26 11:18:39.029 EURUSD - new tick: 2021.04.26 11:18:39
2021.04.26 11:18:39.029 EURUSD - new book: 14 bands.
2021.04.26 11:18:39.091 GBPUSD - new tick: 2021.04.26 11:18:39
2021.04.26 11:18:39.091 GBPUSD - new book: 15 bands.
2021.04.26 11:18:39.278 GBPUSD - new tick: 2021.04.26 11:18:40
2021.04.26 11:18:39.278 GBPUSD - new book: 16 bands.
2021.04.26 11:18:39.465 GBPUSD - new tick: 2021.04.26 11:18:40
2021.04.26 11:18:39.465 GBPUSD - new book: 16 bands.
2021.04.26 11:18:39.714 GBPUSD - new tick: 2021.04.26 11:18:40
2021.04.26 11:18:39.715 GBPUSD - new book: 16 bands.
2021.04.26 11:18:40.589 GBPUSD - new tick: 2021.04.26 11:18:41
2021.04.26 11:18:40.589 GBPUSD - new book: 16 bands.
ファイル:
NewData.mqh  2 kb
 
こんにちは、私はすべてのチャートからすべてのEAから普遍的なメッセージ送信者(スクリーンショットを持つメール、電報)を作成するサービスを使用したいと思いました。EAがチャート、メッセージテキスト、その他のパラメータを含むカスタムイベントを 送信すると、サービスがそのイベントを聞き、指定したチャートのスクリーンショットを撮り、必要なメッセージを送信するというものでした。しかし、サービスはチャートからイベントを受け取ることができないと読んだことがあります。では、解決策は端末のグローバル変数を利用することでしょうか?グラフが要素を追加し、サービスが処理(メッセージの送信)として要素を削除するグローバルな構造体の配列があるとします。このようなアイデアをどう思いますか?もしかしたら、他にもアイデアがあるかもしれませんね。MQL初心者です、書くより読んでます。これは、Expert Advisorのスレッドをメッセージの送信操作から解放するために登場したアイデアである。また、インジケータによるメッセージの送信にも応用できるだろう。
 
Реter Konow #:
を使用すると、EAからリソース経由でサービスにすべてのイベントを送信できます。そして今、またデータベースを通じて
それをファイルに書き出し、サービスのリソース変数として接続するのがアドバイザーでしょうか。