服务。他们已经启动并运行了吗? - 页 24

 
Aliaksandr Hryshyn:
1.新闻的背景加载
2.在多个线程中进行繁重的计算(运行服务的副本),以便不影响交易。
3.专家顾问从杯子中收集信息,该服务定期将其打包成一个压缩档案。
4.当多个专家顾问工作时,收集所有交易信息,处理并保存在数据库或发送。
5. ...
你有什么选择?
1.如果上传到一个文件,那么是的。

2.你可以。

3.不确定。该服务是否接受堆栈的事件?如果不是,它们需要从EA中传递出来,它就失去了意义。

4.如果每个EA只是在一个文件中写下它的报告,而服务则读取并分析它们,那么,是的。

我仍在思考我自己的变体
 
Roman:

Expert/Script需要一个开放的图表。
图形的数量,是由终端限制的。
每一次渲染/更新图形,都是一个系统消息队列和一个不必要的资源负载。

同意。
 
fxsaber:

2-3可以通过OBJ_CHART 上的一个脚本来实现。

该服务是在终端开始时启动的,脚本无法做到这一点。
 
Aliaksandr Hryshyn:
服务是在终端启动时启动的,脚本无法做到这一点。

在这两项任务中不需要这样做。

 
Aliaksandr Hryshyn:
1.背景新闻加载
2.在多个线程中进行繁重的计算(运行服务的副本),以便不影响交易。
3.专家顾问从杯子中收集信息,该服务定期将其打包成一个压缩档案。
4.当多个专家顾问工作时,收集所有交易信息,处理并保存在数据库或发送。
5. ...
你有什么选择?

对于所有这些任务,我们将需要解决一组专家顾问和服务之间的数据交换 问题。

我对该服务的最大建议是监听另一个经纪商的价格,并将其转发到自定义的tick图表上进行套利,并在自定义的图表上使用TS的专家顾问。

 
Igor Makanu:

对于上述所有的任务,必须解决咨询小组和服务机构之间的数据交换的任务

也许现在程序之间的数据交换 的共享内存将由DB而不是资源提供,这将大大简化执行和互动。
 
Sergey Lebedev:
服务的主要问题不是终端处理--而是所有的边缘案例。

如果没有手柄,就无法实现自动重新连接。而且对于真正的交易来说,这是一个非常必要的事情。

 
在脚本/服务中实现多货币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的新手,我读的比写的多。这个想法的出现是为了将专家顾问线程从信息发送操作中释放出来。此外,还可以应用于按指标发送信息。
 
Реter Konow #:
你可以通过资源从EA发送所有事件到服务。而现在,也是通过数据库。
顾问是否将其写入文件,并将其作为服务中的一个资源变量进行连接?