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

 
这些服务需要能够与任何图形上的任何程序进行沟通。方案的共享记忆。
 
Реter Konow:
这些服务需要能够与任何图形上的任何程序进行沟通。共享的程序内存。
现在有一些资源可以 通过它们来交换数据
 
Renat Fatkhullin:
现在有一些资源,你可以通过它们来交换数据

亟需交换字符串类型的 数据。一个普遍的类型。用于任何目的。

所有程序都有一个共同的字符串数组--是快速交换任何信息的理想解决方案,无需OnChartEvent()或磁盘加载。都是异步的。用一个程序写,用另一个程序读。

 

交流机制早就该建立了。

全局变量 用于交换字符串值。

 
Vladimir Pastushak:

项目对用户不是很友好,没有办法将所有的东西分类到文件夹里。而且没有办法同时为两个平台开发代码。

当然,也许我有不明白的地方。

例如,我通过项目来发展一切。在MQL4/5之间交换代码就更方便了。不言而喻,我最初试图同时为两个平台开发所有东西。顺便说一下,我可以很容易地在MQL5中为4编译,尽管有时可能会引起故障。因此,无论如何,最好还是要把它们编译出来。

P.S. 这个项目是开放的,你可以连接并看看。
 
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:

服务中不会有OnTimer或OnTick。只有OnStart。

这是一种特殊类型的软件,用于后台循环过程(数据输入、分析、外部链接等),而不是专家的替代品。


1963年的测试版已经出来了,你可以通过菜单更新。

那么,除了不需要为服务和脚本制定单独的时间表外,服务和脚本之间有什么区别?

 
Renat Fatkhullin:

服务中不会有OnTimer或OnTick。只有OnStart。

这是一种特殊类型的程序,用于后台循环进程(数据馈送、分析、外部链接等)。

在使用数据源时没有事件模型,看起来像是某种拐杖。

作为这种拐杖的一个例子,我们可以考虑目前公式符号的实现,它不是基于事件模型,而是基于定时器(循环)。因此,出现了跳票的情况。


早些时候,我们提到了服务中的多符号OnTick。为什么他们放弃并砍掉了像这样的好主意?