为什么需要最后一个参数 weightsum?
int LinearWeightedMAOnBuffer(常量 int rates_total,常量 int prev_calculated,常量 int begin,常量 int period,常量 double& price[],double& buffer[],int &weightsum)
而其他 3 个函数则没有。如果仍然需要,如何在初始化外部变量 weightsum=0 时使用它?
为什么需要最后一个参数 weightsum?
int LinearWeightedMAOnBuffer(常量 int rates_total,常量 int prev_calculated,常量 int begin,常量 int period,常量 double& price[],double& buffer[],int &weightsum)
而其他 3 个函数则没有。如果仍然需要,如何在初始化外部变量 weightsum=0 时使用它?
在终端提供的类似指标 Custom Moving Average.mq5 中,函数内部将其声明为静态:
static int weightsum;
为静态,即每次重新计算指标时都不会重置。在指标中,静态 int weightsum - 不会交叉,因为它们是不同的线程,有自己的变量。
但我认为,如果我们计算 2 个或更多不同周期的 LWMA(从 Expert Advisor 运行),那么每个 LWMA 的 weightsum 都应该是不同的,而不是通过在函数内部声明 static 而使所有 LWMA 的 weightsum 都是 1。
因此,我们需要为每个 LWMA 设置自己的全局变量,并将其传递给 LinearWeightedMAOnBuffer()、
例如,如果有 2 个 LWMA,则应全局声明以下变量
int weightsum1;
int weightsum2;
然后将它们传递给函数。
如果我理解有误,请指正。
在 ExponentiaMA 函数中,我不太理解输入第 3 个参数 prev_value 的含义。很明显,在计算平均值的纯公式 中,您需要前一期的值,但我认为,如果函数在内部计算这个值,并且像 SimpleMA 一样只输入 3 个数据,对普通人来说会更清楚。
完全同意!如何使用它并不清楚。最后我选择了 ExponentialMAOnBuffer,因为我不知道从哪里获取prev_value。这些函数不是从 Expert Advisor 调用外部指标所必需的,而是读取内部所有内容所必需的。开发人员提出了什么建议?
这让我想起漫画 "Prostokvashino "中的一句话--"要想卖掉你不需要的东西,你必须先买你不需要的东西,而我们没有钱"。
我完全同意!不清楚如何使用它。最后,我选择了 ExponentialMAOnBuffer,因为我不知道从哪里获取prev_value。这些函数不是从 Expert Advisor 调用外部指标所必需的,而是读取内部所有内容所必需的。开发人员提出了什么建议?
这让我想起漫画 "Prostokvashino "中的一句话--"要想卖掉你不需要的东西,你必须先买你不需要的东西,而我们没有钱"。
是的,我同意。同样的道理也适用于:
//+------------------------------------------------------------------+ //| 平滑移动平均线| //+------------------------------------------------------------------+ double SmoothedMA(const int position,const int period,const double prev_value,const double &price[]) { double result=0.0; //--- 检查时间 if(period>0 && period<=(position+1)) { if(position==period-1) { for(int i=0; i<period; i++) result+=price[position-i]; result/=period; } result=(prev_value*(period-1)+price[position])/period; } return(result); }
黄色 的代码如何计算并不重要。结果仍然是绿色 字符串。而这是在MT5 标准库中! 是的!
改进函数,否则它将毫无用处。在 MQL5 中,当您需要计算多个工具的 MA 值时,它非常有用。但事先并不知道是哪些。您无法从市场概览中形成所有工具 的 MA 手柄!
我完全同意!不清楚如何使用它。最后,我选择了 ExponentialMAOnBuffer,因为我不知道从哪里获取prev_value。这些函数不是从 Expert Advisor 调用外部指标所必需的,而是读取内部所有内容所必需的。开发人员提出了什么建议?
这让我想起漫画 "Prostokvashino "中的一句话--"要想卖掉你不需要的东西,你必须先买你不需要的东西,而我们没有钱"。
是的,我同意您的观点。同样适用于
如何计算黄色 高亮显示的代码并不重要。结果仍然是绿色 字符串。而这是在MT5 标准库中! 没错!
改进该函数,否则它将毫无用处。在 MQL5 中,当您需要计算多个工具的 MA 值时,该功能非常有用。但事先并不知道是哪些。您无法从市场概览中形成所有工具 的 MA 手柄!
您可以在 CodeBase 中搜索并查看。不止我一个人使用过这个库...
请问,变量 "位置 "是什么?
double SimpleMA(const int position,const int period,const double &price[])
double SimpleMA( const int position, const int period, const double &price[]) { double result= 0.0 ; //--- 检查时间 if (period> 0 && period<=(position+ 1 )) { for ( int i= 0 ; i<period; i++) result+=price[position-i]; result/=period; } return (result); }
早安
这样更清楚吗?
MovingAverages:
作者: MetaQuotes Software Corp.