来自一个 "傻瓜 "的问题 - 页 66

 
Yedelkin:

这完全取决于自定义指标 的逻辑。原则上,它可以每天重新计算一次其数值,跳过所有其他时间。可以说,根据作者的意愿。

基本上,有些人试图使用这种怪物的方法:通过iCustom创建一个指标的副本,复制必要的数据,删除指标的副本。该程序根据需要重复进行。

还有一个函数OnTimer(),我自己没有用过,但也许你可以根据你的任务调整它。

谢谢你。我想也是。安时器不适合。

有一种情况是,指标在M5上,但每小时叫一次,比如说。事实证明,为了每小时调用一次,该指标将在专家顾问中每5分钟空转计算一次。这就是为什么我想知道是否有可能暂停指标的重新计算。

 
masharov:

有一种情况是,指标在M5上,但比如说每小时调用一次。事实证明,为了每小时调用一次,该指标将在专家顾问中每5分钟闲置计算一次。

你就不能重写指标,使其被称为每小时?
 
Yedelkin:
我能否重写该指标,使其也能按小时计算?
该交易是在M5上进行的。现在还不知道何时会调用指标。可能是每两小时一次,也可能是每小时三次。该指标用于确认进行交易的决定。
Способы вызова индикаторов в MQL5
Способы вызова индикаторов в MQL5
  • 2010.03.09
  • KlimMalgin
  • www.mql5.com
C появлением новой версии языка MQL, не только изменился подход к работе с индикаторами, но и появились новые способы создания индикаторов. Кроме того, появилась дополнительная гибкость при работе с индикаторными буферами - теперь вы можете самостоятельно указать нужное направление индексации и получать ровно столько значений индикатора, сколько вам требуется. В этой статье рассмотрены базовые методы вызова индикаторов и получения данных из индикаторных буферов.
 
masharov:
交易是在M5上进行的。目前还不知道何时会调用该指标。可能是每两小时一次,也可能是一小时内三次。该指标用于确认交易的决定。
这个逻辑很清楚。在这种情况下,我采用了一种聪明而简单的方法:我将指标中的计算块直接转移到专家顾问中。也就是说,专家顾问没有使用外部数据源(指标),而是使用了它的一个函数--再现了指标的计算算法。在这种情况下,这个函数根据需要被调用,并对必要的数值进行完全重新计算。
 

你好,请你告诉我。

1)如何处理TRADE_RETCODE_LOCKED,TRADE_RETCODE_FROZEN 这样的错误,以及在什么情况下请求被阻止或头寸/订单被冻结?

2)我还想知道如何处理TRADE_RETCODE_INVALID_FILL,在什么情况下发生?

 
PunkBASSter:

你好,请你告诉我。

1)如何处理TRADE_RETCODE_LOCKED,TRADE_RETCODE_FROZEN 这样的错误,以及在什么情况下请求被阻止或头寸/订单被冻结?

2)还想知道如何处理TRADE_RETCODE_INVALID_FILL,在什么情况下发生?

1)查看论坛搜索。大约一年前就讨论过这个问题。

2) 在ENUM_ORDER_TYPE_FILLING 参考中查看。可能是指定的 "执行订单类型 "的交易请求与执行模式不匹配,将导致指定的返回代码。

例如ORDER_FILLING_FOK 和SYMBOL_TRADE_EXECUTION_MARKET。

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
Yedelkin, 非常感谢)
 
masharov:

我怀疑,如果该指标是通过iCustom激活的,它是在每个tick上计算的。而且它不依赖于通过CopyBuffer对它的调用。这是否正确?

如果是正确的,那么是否可以禁用指标的计算,只在调用CopyBuffer之前启用?

如果我没有理解错的话,那么你可以通过iFractals帮助中的例子,尝试限制下一个ticks的计算(见OnCalculate 中的多个条件)。

也许,你也可以在OnCalculate 中标记所有必要的条形图的指标计算的初始执行,并检查终端的服务器时间,在它发生后,将该标记重置为假,从而允许重新计算,并再次将其设置为真...等等。

或者甚至这样:写一个 带有计算功能的外部函数,在OnInit中调用它,它将在指标首次启动时运行一次(以及在改变TF等时,这是由用户主动发生的),然后以第二种 方式在OnCalculate 中调用相同的函数(在服务器上的指定时间和通过标记)。

但第一种方法很好,不仅不会在每个tick点加载处理器进行全面的重新计算(往往导致没有新的结果),而且甚至不会在给定的时间间隔内进行全面的重新计算,只会计算最新的条形图(如果在每个tick点,则计算一个新的,如果一次t,则计算这段时间内积累的几个)...虽然这个版本最好亲自检查,我可能是错误的...另外,一切都取决于指标的具体目的。如果它取决于一个大的甚至整个市场历史,那么你就无法摆脱对整个历史的重新计算。

 

没有理解这个笑话的幽默感(写了一个指标,虽然这没有什么区别)。

struct TBuffer
{
  double buffer[];
};

TBuffer BuffArray[4];

编译时没有错误或警告。

int elements=4;

struct TBuffer
{
  double buffer[];
};

TBuffer BuffArray[elements];

编译时有1个错误,0个警告:'elements' - 无效的索引值。

这里有什么可以超越明显的常识呢?

 
x100intraday:


这里有什么可以超越明显的常识呢?

阵列元素的 数量由一个常数指定

如果事先不知道元素的数量,可以使用ArrayResize来设置变量的大小。

这就是C++的基础知识。

因此,要么

#define  elements 4