新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1383

 

这个怎么样?

bool CheckSpr(int _sp)
{
   static int ts=0, res=0;
   static long tc=0;
   if(tc>50 && res*3<_sp) return(false);
   tc++;
   ts += _sp;
   res =ts/tc;
   if(tc>LONG_MAX-1) {
      tc=0;
      ts=0;
   }
   // Comment( res,"=",tc );
   if(tc<50) return(false);
   return(res>_sp?true:false);
}

还是那个问题,如果你在翻转期间而不是在翻转之前运行代码,它就会写出一个50点的巨大价差,这一行就没有意义了。

如何修复该代码?

 
Vitaly Muzichenko:

这个怎么样?

还是那个问题,如果你在翻转期间而不是在翻转之前运行代码,它就会写出一个50点的巨大价差,这一行就没有意义了。

如何修复该代码?

这种逻辑是不可取的。为什么确切地说,从50个点的平均数与一个计数器到longmax,可以持续很长一段时间。

在符号属性中,有一个声明的传播。它最初应该是由一个输入口输入的。如果没有进入,就会被接收。而如果我们得到一个增加的价差,我们会错误地认为它是平均的。我们需要在一个相当短的范围内的平均值来检测变化。

如果有一个日内点差,我们在每一个tick上进行比较,并得到平均值,以获得必要的值。问题是,如果不记住中间值,我们就无法计算出平均值。我用的是这样,我记住所有的值,当我得到最后一个值加一的时候,我把它加到总和上,然后减去第一个值,并进行移位编号(在数组A(n)=A(n+1))。这比把计数器拨到巨大的数值更便宜。而在10-20个数值以下,我使用变量。

我不知道SymbolInfoInteger 和Bid和Ask之间的差异哪个更贵)。

 
Valeriy Yastremskiy:

这种逻辑是不可取的。为什么确切地说,从50个点的平均数与一个计数器到longmax,可以持续很长一段时间。

在符号属性中,有一个声明的传播。它最初是由一个输入口输入的。如果没有进入,就会被接收。而如果我们得到一个增加的价差,我们会错误地认为它是平均的。我们需要在一个相当短的范围内的平均值来检测变化。

如果有一个日内点差,我们在每一个tick上进行比较,并得到平均值,以获得必要的值。问题是,如果不记住中间值,我们就无法计算出平均值。我用的是这样,我记住所有的值,当我得到最后一个值加一的时候,我把它加到总和上,然后减去第一个值,并进行移位编号(在数组A(n)=A(n+1))。这比把计数器拨到巨大的数值更便宜。而在10-20个数值以下,我使用变量。

我不知道,什么是更昂贵的SymbolInfoInteger 或Bid和Ask之间的差异)。

只有 "漂浮 "这个词,这就是问题所在。


 
Vitaly Muzichenko:

只是 "漂浮 "这个词,这就是挑战。


有一点兴奋)。那么相信第一个数值的逻辑是正确的。或者等待10分钟,收集这段时间内点差变化平滑度的统计数据,找到50或100个点的平均最小情节,并将其作为平均值。控制启动时间,使其不落在交易所不工作的时间。如果你也想从一个傻瓜那里得到充分的保护)

 
Valeriy Yastremskiy:

(我有点激动。)那么相信第一个数值的逻辑是正确的。或者等待10分钟,收集统计这段时间内点差变化的平稳性,找出50或100个点差的平均最小情节,并把它作为一个平均值。控制启动时间,使其不落在 交易所不工作的时间。如果在充分保护的情况下,也是一个傻瓜)。

这应该以某种方式避免。

该算法是有效的,只要我们不在翻身时运行专家顾问,周末后这种情况会一直发生。

 
Vitaly Muzichenko:

这应该以某种方式避免。

该算法是有效的,只要我们不在翻转时运行专家顾问,周末后这种情况会一直发生。

有一种控制,无论如何应该避免,应该用一些东西来代替。的时间间隔。不算太贵。如果蜱虫的间隔时间超过10秒,就有问题了。

 
Vitaly Muzichenko:

这应该以某种方式避免。

该算法是有效的,只要我们不在翻转时运行专家顾问,周末后这种情况会一直发生。

我们需要为翻转制定单独的时间参数:开始/结束。
,并且在这段时间内不做任何事情(除了注释 "翻转,等待")。

 
Taras Slobodyanik:

你必须为翻转制定单独的时间参数:开始/结束。
而在那个时候什么都不做(除了 "翻转,等待 "的注释)。

有一个参数 "按时间工作",我改变了交易并开始猫头鹰--交易在翻转时被打开。

交易时间变成了-1 gmt,而不是通常的+2gmt

这就是为什么人们非常渴望摆脱时间处方。

 
Vitaly Muzichenko:

有一个 "按时间工作 "的参数,我改变了交易并开始了猫头鹰--交易在翻身时被打开。

交易时间变成了-1 gmt,而不是通常的+2gmt

这就是为什么我有一个很大的愿望,要摆脱时间处方。

将 "时间值 "替换为传入(新)时间和最后计算的时间之间的差值是否可行?

也就是说,我们将知道,新的时间已经到来。

-从新的一天开始

-从新的一周开始

-或差额超过指定的

 
Vitaly Muzichenko:

有一个 "按时间工作 "的参数,我改变了交易并开始了猫头鹰--交易在翻身时被打开。

交易时间变成了-1 gmt,而不是通常的+2gmt

这就是为什么人们非常渴望摆脱时间处方。

使得如果周初的 "滚动,等待 "和无论何时的服务器