什么时候在指标中保留部分机器人代码才有意义? - 页 14 1...789101112131415161718192021...38 新评论 Игорь 2011.03.20 15:09 #131 Integer: 从本质上讲,让我们把EMA计算代码转移到专家顾问。 在翻阅了档案后,这里有我的一个古老的选择。把它从专家顾问中拿出来。 int GetSignal (int nMax, int shift, double& prevVals[]) // prevVals[3] - [0] требуется для быстрого расчета SMA. // [1] пред. порог перехода // [2] пред. пред. порог перехода { int j, k, pos; double currMA, sum; /////////////////////////////////////////////////////// // Restore if (prevVals[0] < 0.1) { pos = nMax; sum = 0; for(k = 0; k < paramMAperiod; k++, pos--) { sum += vPrice(paramMAprice, pos); } prevVals[0] = sum/paramMAperiod; for ( ; shift < pos; pos--) { currMA = (vPrice(paramMAprice, pos) + (paramMAperiod-1)*prevVals[0])/paramMAperiod; prevVals[0] = currMA; j = 0.5+MathAbs(prevVals[1]-currMA)/Point; if (j >= paramMAporog) { prevVals[2] = prevVals[1]; prevVals[1] = currMA; } } } /////////////////////////////////////////////////////// pos = shift; currMA = (vPrice(paramMAprice, pos) + (paramMAperiod-1)*prevVals[0])/paramMAperiod; prevVals[0] = currMA; /////////////////////////////////////////////////////// pos = 0; j = 0.5+MathAbs(prevVals[1]-currMA)/Point; if (j >= paramMAporog) { if (prevVals[2] > prevVals[1] && prevVals[1] < currMA) pos = -1; if (prevVals[2] < prevVals[1] && prevVals[1] > currMA) pos = 1; prevVals[2] = prevVals[1]; prevVals[1] = currMA; } if (IsOptimization() == false) { string szName = "ArrTest_"; szName = szName+gObject; ObjectCreate(szName, OBJ_ARROW, 0, Time[shift], prevVals[1]); ObjectSet (szName, OBJPROP_ARROWCODE, 159); ObjectSet (szName, OBJPROP_COLOR, Gold); gObject++; } return(pos); } 我对你的理解是否正确? Dmitry Fedoseev 2011.03.20 15:15 #132 OneDepo: 在翻阅了档案后,这里有我的一个古老的选择。从一个专家那里拿出来的。 我对你的理解正确吗? 在连接打孔后会有误差,时间越短,误差越大。 hrenfx 2011.03.20 15:15 #133 Vinin: 顺便说一句,迪米特里,你也提供了一个不正确的解决方案。我说的是专家顾问。 我还没有完成所有的窗户,中断....。 不,不,这是个好例子。为什么要人为地把事情弄得很复杂?我只是不明白我的代码有什么 "玩具性"? Виктор 2011.03.20 15:15 #134 德米特里,我对这个比赛一点都不感兴趣。我很想知道,由一个普通的程序员来执行这两种变体,哪一种会更快。而对于一个或多或少标准的自定义指标,并采用相同的计算方案。而你的竞争最终可能是有人 "发明了一种不漏水的粉末",这只能说明他或她是一个好的程序员,但不能说明EA的计算速度更快(反之亦然)。 Victor Nikolaev 2011.03.20 15:19 #135 hrenfx: 还没有完成所有的窗户,中断....。 不,不,这是个好例子。为什么要人为地把事情弄得很复杂?我只是不明白,我的代码的 "玩法 "是什么? 只要比较你的计算值和标准EMA就可以了。见 Dmitry Fedoseev 2011.03.20 15:20 #136 granit77: 德米特里,我对这个比赛一点都不感兴趣。我很想知道,由一个普通的程序员执行的两种变体中,哪一种会更快。而对于一个或多或少标准的自定义指标,并采用相同的计算方案。而你的竞争最终可能是有人 "发明了一种不漏水的粉末",这只能说明他或她是一个好的程序员,但不能说明EA的计算速度更快(反之亦然)。 我们可以看到,到目前为止,还没有人提供一个完全正确的计算EMA的方法,在现实中实际适用,更不用说更快了。 hrenfx 2011.03.20 15:20 #137 Vinin: 只要比较你的计算值和标准EMA就可以了。你会看到嗯,这并不是真正的腌制,这完全取决于你从哪里开始。对于相同的指标,第一个条形图将是完全相同的。但为了不引起不必要的争论,我现在将进行最简单的修改。 Dmitry Fedoseev 2011.03.20 15:21 #138 Vinin: 只要将你的计算值与标准EMA进行比较即可。见 我可能犯了一个系数的错误,我现在要检查一下,但原理不会改变。 Игорь 2011.03.20 15:22 #139 Integer: 打孔后会有误差,时间越短,误差越大。 不,它不会。你可以在代码中看到,信号的计算 过程是由参数prevVals[0]控制的(只有最后一个棒或给定的nMax棒)。如果它是0,我们就按nMax条数恢复计算。prevVals[0]的值由另一个代码控制。 但我们不要偏离主题,让我们进入正题。上面有两个选项,在测试器中 哪个更快?所以 Dmitry Fedoseev 2011.03.20 15:23 #140 红色的是我的,上面的蓝色的是内置在终端的。 1...789101112131415161718192021...38 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
从本质上讲,让我们把EMA计算代码转移到专家顾问。
在翻阅了档案后,这里有我的一个古老的选择。把它从专家顾问中拿出来。
我对你的理解是否正确?
在翻阅了档案后,这里有我的一个古老的选择。从一个专家那里拿出来的。
我对你的理解正确吗?
在连接打孔后会有误差,时间越短,误差越大。
顺便说一句,迪米特里,你也提供了一个不正确的解决方案。我说的是专家顾问。
我还没有完成所有的窗户,中断....。
不,不,这是个好例子。为什么要人为地把事情弄得很复杂?我只是不明白我的代码有什么 "玩具性"?
还没有完成所有的窗户,中断....。
不,不,这是个好例子。为什么要人为地把事情弄得很复杂?我只是不明白,我的代码的 "玩法 "是什么?
只要比较你的计算值和标准EMA就可以了。见
德米特里,我对这个比赛一点都不感兴趣。我很想知道,由一个普通的程序员执行的两种变体中,哪一种会更快。而对于一个或多或少标准的自定义指标,并采用相同的计算方案。而你的竞争最终可能是有人 "发明了一种不漏水的粉末",这只能说明他或她是一个好的程序员,但不能说明EA的计算速度更快(反之亦然)。
我们可以看到,到目前为止,还没有人提供一个完全正确的计算EMA的方法,在现实中实际适用,更不用说更快了。
只要比较你的计算值和标准EMA就可以了。你会看到
嗯,这并不是真正的腌制,这完全取决于你从哪里开始。对于相同的指标,第一个条形图将是完全相同的。但为了不引起不必要的争论,我现在将进行最简单的修改。
只要将你的计算值与标准EMA进行比较即可。见
我可能犯了一个系数的错误,我现在要检查一下,但原理不会改变。
打孔后会有误差,时间越短,误差越大。
不,它不会。你可以在代码中看到,信号的计算 过程是由参数prevVals[0]控制的(只有最后一个棒或给定的nMax棒)。如果它是0,我们就按nMax条数恢复计算。prevVals[0]的值由另一个代码控制。
但我们不要偏离主题,让我们进入正题。上面有两个选项,在测试器中 哪个更快?所以
红色的是我的,上面的蓝色的是内置在终端的。