Init()和DeInit()执行顺序 - 页 17

 
fxsaber:

事实证明,服务将拥有几乎所有的开机功能。OnInit, OnDeinit, OnTick(string),OnTimer,OnTrade,OnTradeTransaction,OnTester, OnTesterInit, OnTesterPass, OnTesterDeinit, OnBookEvent, OnChartEvent(long ChartID, ...),OnCalculate, ...


而如果你不需要指标缓冲区,也不想面对指标/顾问的拐杖,那就写进一种新的程序类型--服务,它不会受到(从MT以前的版本中延伸出来的)限制。

正是如此。

将不会有OnCalculate。

还没有使用OnChartEvent的解决方案

 
Slawa:

这就对了。

这些拐杖对很多人来说一定很烦人

关于交易、自动交易系统和测试交易策略的论坛

我无法从高TF中获得指标数据

Sergey Dzyublik, 2017.04.14 10:55

该用户有一个衡量市场 "强度 "的指标。
该指标在当前的时间框架和货币对上工作。

任务是在一张图表上显示8种流行货币的结果,并有机会选择一个独立的TF来进行显示。
用户在哪个TF中并不重要--它应该显示在参数中设置的那个结果。

通过所需的TF从其他货币加载流量的问题通过以下拐杖得到了解决。

   for (int i = ArraySize(symbols_load) - 1; i >= 0; --i){
      int counter = 0;
      int max_count = 10;
      while(counter < max_count){
         RefreshRates();
         double tmp_arr[];
         int res = CopyClose(symbols_load[i] + Suffix, int(TF), 0, 3, tmp_arr);
         if (res == 3)
            break;
         RefreshRates();
         ++counter;
      }
   }

其中。

symbols_load- 需要加载的货币列表
后缀- 货币对名称的可能前缀
TF- 所需的时间框架

是否可以为某一特定成交量的历史数据(柱状和点状)添加订阅/订购?这样,在服务处总会有一个一定大小的给定符号的缓存(新鲜的条形图和点阵图)。


这样一来,比如说,写市场筛选报告就会容易得多。

 
Slawa:

指标的使用应符合其预期目的。

换句话说,在改变图表 符号周期时,OnInit和OnDeinit指标的执行顺序不应该困扰任何人

这种方法说明了很多问题。

所以,我们应该接受它,主要的是要意识到它。

 
Slawa:

没有。

再读一下这些指标是什么。阿克丽斯。科尔比。询问Yandex公司的市场指标是什么。

在MT3中,当我们引入自定义指标的概念时,我们允许对图表上的对象进行操作,因为只有2个指标缓冲区

让我们创造一个小小的历史。起初有FXCharts,我没有赶上,因为我在2002年10月才加入公司。然后是MetaTrader。我加入公司是为了开发MQL II(FXCharts已经有一个交易策略语言)。当我们做MQL II和EA时,我们把名字改为MetaTrader 2。当我们允许编写自定义指标时,MetaTrader 3成为第三个指标。

然后是MetaTrader 4和MQL4。自定义指标得到了用8个指标缓冲器操作的机会。保留了在图表上处理对象的可能性。但由于这些指标是在界面线程中计算的,因此很少有人滥用对象的工作。

而现在我们有了MT5。架构是完全不同的,但在使用图表上的图形对象的操作机会方面,我们是MT4的人质。是的,我们是Stakhanovites,我们也像英雄一样,从指标中增加了几乎无限的图表管理的可能性。我们已经到了。插图--16页的讨论,什么都没有。

让我们继续讨论服务

服务文件夹已经出现在MQL5编辑器中,但目前还不清楚如何使用这个工具。https://www.mql5.com/ru/forum/190129


Services , новый функциона в архитеркуте MT5, похороны MT4 не за горой.
Services , новый функциона в архитеркуте MT5, похороны MT4 не за горой.
  • www.mql5.com
Хотелось бы подробней с примерами использования обсудить новый функционал...
 
Slawa:

指标的使用应符合其预期目的。

换句话说,当改变图表 的符号周期时,指标的OnInit和OnDeinit的顺序不应该困扰任何人。

而为什么所有的争论都转移到了图形对象上?还有其他全局资源,如全局变量、文件等。(如果"在图表 符号周期变化时执行指标的OnInit和OnDeinit的顺序不应该困扰任何人",那么,它们能否根据其目的用于指标中?再次注意,现在内核的实现方式是,顺序应该让MQL程序员担心,以避免OnInit/Deinit调用顺序的不确定性造成的耙子。为了不让MQL担心,你需要一个内部负责解决不确定性的内核。
 
Stanislav Korotky:
为什么整个争论会落在图形对象上?还有其他全局资源,如全局变量、文件等(它们可以在指标中使用吗?(如果"在图表 符号周期变化时执行指标的OnInit和OnDeinit的顺序不会困扰任何人",那么,它们是否可以根据其目的用于指标中?再次注意,现在内核的实现方式是,顺序应该让MQL程序员担心,以避免OnInit/Deinit调用顺序的不确定性造成的耙子。为了不让MQL担心,你需要一个内部负责解决不确定性的内核。
这里有一个关于文件的好问题。如果有些东西需要在去初始化时被重置,并在随后的初始化中被读取,可能会有一些问题。
 
Stanislav Korotky:

服务或在一个图表上运行多个EA的能力怎么能不完全涵盖我们所讨论的问题?

想象一下,代替线程中提到的指标,会有一个正在运行的服务,其中包含一个完全计算的部分指标。它将把指标放在图表上,使数据可视化,由指标缓冲区 中的服务计算出来。


指标应该根据其预期目的来使用,而不是因为有几个指标要在一个图表中推出,就把它们变成了通用的东西。这样,你就可以开始抱怨指标中的OrderSend禁令了。

 
fxsaber:

服务或在一个图表上运行多个EA的能力怎么能不完全涵盖我们所讨论的问题?

想象一下,代替线程中提到的指标,会有一个正在运行的服务,其中包含一个完全计算的部分指标。它将把指标放在图表上,这将使该服务在指标缓冲区 计算的数据可视化。

也就是说,你将能够通过该服务创建一个指标?
 
Alexey Kozitsyn:
也就是说,是否可以通过该服务创建一个指标?
这已经可以从EA中实现(有一些限制)。
 
fxsaber:
从EA来看,这仍然是可能的(有一些限制)。
你是说使用拐杖?我可以给你举个例子吗?