[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 419 1...412413414415416417418419420421422423424425426...432 新评论 [删除] 2013.06.13 13:57 #4181 Forexman77: 我怎样才能让程序给出EMA水平作为价格?假设EMA1有周期(1),EMA2有周期(0),EMA1等于1.3321,而EMA2本期为1.3200。表达的结果(EMA1到EMA2)必须是0.0121。当你运行脚本时,警报显示为零,而我们需要 "0.0121"。如何解决这个问题? double delta = iMA(NULL,0,1,0,MODE_EMA,PRICE_CLOSE,0) - iMA(NULL,0,0,0,MODE_EMA,PRICE_CLOSE,0); if (delta == 0.0121) Alert("Delta=0.0121"); Chiripaha 2013.06.13 14:02 #4182 Forexman77: 如何使程序输出EMA水平作为价格?假设EMA1有周期(1),EMA2有周期(0),EMA1等于1.3321,EMA2为当前周期1.3200。表达的结果(EMA1到EMA2)必须是0.0121。当我运行脚本时,警报显示为零,而我需要 "0.0121"。如何解决这个问题? 有可能看到脚本本身吗?- 估计你要么是数据类型 不对,比如是interger而不是double(所以它四舍五入为0),要么是其他原因导致了0:没有代码就很难理解。顺便说一下,如果你用脚本检查你之前写的东西,错误可能是在脚本本身(估计是为了检查你的指标而写的),或者是在指标本身的代码中。 elllfix 2013.06.13 14:24 #4183 TarasBY: 如果你正确地过滤了你的订单,我建议你这样做,如果你在计算中包括佣金和掉期,那么一切都能正常工作。 你一定给了一个非常复杂的路径。这对我来说是行不通的。我愚蠢地在你的样本中插入了以下内容。ld_Profit = fGet_ProfitLastCloseOrd (12); Print (ld_Profit); 它给出了一些数字,但与现实相差甚远。你能不能告诉我,我需要在哪里输入数字12来使其发挥作用。因为我不知道 "过滤订单",在....。 TarasBY 2013.06.13 15:16 #4184 lottamer: 你一定给了一个非常复杂的方法。这对我来说是行不通的。我愚蠢地在你的样本中插入了以下内容。它给出了一些数字,但与现实相差甚远。你能不能告诉我,我需要在哪里输入数字12来使其发挥作用。因为我根本不知道 "订单过滤",....。 我已经在图表上进行了所有的中间计算,以便更好地控制功能的工作。只剩下你写代码了。你有两个办法:要么自己理解(通过实例--我已经给了你一个工作脚本),要么找人帮你做。P.S. 如果你突然想了解它,你可以从这里 开始。 附加的文件: calculateprofitlastcloseord_1.zip 3 kb forexman77 2013.06.13 16:04 #4185 Chiripaha:有可能看到脚本本身吗?- 估计你要么是数据类型不对,比如是interger而不是double(所以它四舍五入为0),要么是其他原因导致了0:没有代码就很难理解。顺便说一句,如果你把以前写的东西编成脚本,错误可能在脚本本身(估计是为了测试你的指标而写的)或指标本身的代码中。 你是对的,我把EMA从int移到double,一切都像原来一样了。 elllfix 2013.06.13 18:15 #4186 TarasBY:为了完全控制该功能,所有的中间计算都显示在图表上。剩下的就是由你来写代码了。有两种方法:要么你自己想办法(使用例子--我给了你一个工作脚本),要么你可以找人帮你做。P.S. 如果你突然想弄清楚,你可以从这里 开始。 谢谢你,我一定会想办法解决。 Artyom Trishkin 2013.06.14 02:12 #4187 Forexman77: 我怎样才能使程序将EMA水平作为价格输出?假设EMA1的周期为(1),EMA2的周期为(0),EMA1为1.3321,EMA2为1.3200的当前周期。表达的结果(EMA1到EMA2)必须是0.0121。当我运行脚本时,警报显示为零,而我需要 "0.0121"。如何解决这个问题? 在计算中使用double类型 的变量而不是int类型 的变量。在计算表达式的结果时,使用NormalizeDouble(number1-number2, 所需精度)。使用DoubleToStr(得到的结果,期望的精度)在屏幕上显示结果(在日记中)。没有你的代码,就没有其他建议... Artyom Trishkin 2013.06.14 02:18 #4188 Forexman77: 你是对的,我把EMA从int改成double,一切都像原来那样了。 在这里,我们已经找到了...总之,要注意的是,为了避免隐藏的错误和不准确,在比较和计算double类型 的数据时要使用归一化的方法 [删除] 2013.06.14 04:36 #4189 Chiripaha:一句话:当然,为了利益,可以请你更详细地描述一下当时的情况,因为你只提供了一个大概的描述:机器人订单是什么时候定的(是否提前定的;是否与机器人同时手动,等等)。但无论如何,即使在这种情况下,你也只需要与你的经纪人打交道,因为他有自己的线程,可能会排队进行交易。假设,如果手动挂单是先下的,那么订单执行时间就会不同(包括其他客户的订单),因此,价格也可能不同。如果机器人在形成信号的期间内下了订单,那么订单在队列中的到来是不明显的--因此执行价格可能出现偏差。另外,它可能受到你没有写任何东西的头寸大小的影响......等...但是...都一样,这只能通过经纪人(DC)来澄清。而且我想他会找到一堆我没有提到的理由。- 而建议是正确的:在你的手中和对经纪人的日志,当然,如果你仍然认为你的挂单已经移动。但不要混淆两个不同的概念:挂单和这个挂单的交易。限价单是以任何最近的价格和申报的数量进入市场的指令。而交易 - 是有可能执行你的订单的价格,以申报的资金量(手)。- 而且这些订单的价格很可能是不同的(尤其是在快速市场上,也就是你得到的链接)。对于限价订单,订单的价格和执行的价格是相等的(根据定义)。而事实上,模拟和真正的经纪人没有任何区别,这是很好的!- 这表明经纪人不会为了吸引客户而伪造交易(从你的话中可以看出)。- 在这种情况下,看不出有什么差异。 谢谢你如此详细的答复,一切都变得清晰了。如果我们使用即时 执行系统,这个问题会得到解决吗?我没有提到的条件呢。机器人下单的时间比人工下单的时间早,但在新闻发布前就已经修改了。交易量是相同的,距离大约相同一般来说,条件几乎完全相同。 elllfix 2013.06.14 05:17 #4190 TarasBY: 本日开始于当前D1条的开始(iTime (NULL, PERIOD_D1, 0)),但你是不是在寻找简单的方法?:)) 问题就在这里。一切正常,但只有一次。例如,如果我设置了一天的周期(iTime (NULL,PERIOD_D1, 0)),它在第二天就不起作用了。写了一个测试代码来测试GetProfitFromDateInCurrency (Symbol(), -1, -1, iTime (NULL, PERIOD_M1, 0)); if (GetProfitFromDateInCurrency()<1 && GetProfitFromDateInCurrency()>-1) { My_buy (); My_close(); }поставил период МИНУТКИ, так чтобы за минуту слить доллар на спреде и остановиться, ДО НАЧАЛА ВТОРОЙ МИНУТЫ. И он льет и останавливается. А вот почему на второй минуте он не открывает сделок? 1...412413414415416417418419420421422423424425426...432 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我怎样才能让程序给出EMA水平作为价格?假设EMA1有周期(1),EMA2有周期(0),EMA1等于1.3321,而EMA2本期为1.3200。表达的结果(EMA1到EMA2)必须是0.0121。当你运行脚本时,警报显示为零,而我们需要 "0.0121"。如何解决这个问题?
如何使程序输出EMA水平作为价格?假设EMA1有周期(1),EMA2有周期(0),EMA1等于1.3321,EMA2为当前周期1.3200。表达的结果(EMA1到EMA2)必须是0.0121。当我运行脚本时,警报显示为零,而我需要 "0.0121"。如何解决这个问题?
有可能看到脚本本身吗?- 估计你要么是数据类型 不对,比如是interger而不是double(所以它四舍五入为0),要么是其他原因导致了0:没有代码就很难理解。
顺便说一下,如果你用脚本检查你之前写的东西,错误可能是在脚本本身(估计是为了检查你的指标而写的),或者是在指标本身的代码中。
如果你正确地过滤了你的订单,我建议你这样做,如果你在计算中包括佣金和掉期,那么一切都能正常工作。
你一定给了一个非常复杂的路径。
这对我来说是行不通的。
我愚蠢地在你的样本中插入了以下内容。
它给出了一些数字,但与现实相差甚远。
你能不能告诉我,我需要在哪里输入数字12来使其发挥作用。因为我不知道 "过滤订单",在....。
你一定给了一个非常复杂的方法。
这对我来说是行不通的。
我愚蠢地在你的样本中插入了以下内容。
它给出了一些数字,但与现实相差甚远。
你能不能告诉我,我需要在哪里输入数字12来使其发挥作用。因为我根本不知道 "订单过滤",....。
我已经在图表上进行了所有的中间计算,以便更好地控制功能的工作。
只剩下你写代码了。
你有两个办法:要么自己理解(通过实例--我已经给了你一个工作脚本),要么找人帮你做。
P.S. 如果你突然想了解它,你可以从这里 开始。
有可能看到脚本本身吗?- 估计你要么是数据类型不对,比如是interger而不是double(所以它四舍五入为0),要么是其他原因导致了0:没有代码就很难理解。
顺便说一句,如果你把以前写的东西编成脚本,错误可能在脚本本身(估计是为了测试你的指标而写的)或指标本身的代码中。
为了完全控制该功能,所有的中间计算都显示在图表上。
剩下的就是由你来写代码了。
有两种方法:要么你自己想办法(使用例子--我给了你一个工作脚本),要么你可以找人帮你做。
P.S. 如果你突然想弄清楚,你可以从这里 开始。
谢谢你,我一定会想办法解决。
我怎样才能使程序将EMA水平作为价格输出?假设EMA1的周期为(1),EMA2的周期为(0),EMA1为1.3321,EMA2为1.3200的当前周期。表达的结果(EMA1到EMA2)必须是0.0121。当我运行脚本时,警报显示为零,而我需要 "0.0121"。如何解决这个问题?
在计算中使用double类型 的变量而不是int类型 的变量。
在计算表达式的结果时,使用NormalizeDouble(number1-number2, 所需精度)。
使用DoubleToStr(得到的结果,期望的精度)在屏幕上显示结果(在日记中)。
没有你的代码,就没有其他建议...
你是对的,我把EMA从int改成double,一切都像原来那样了。
一句话:当然,为了利益,可以请你更详细地描述一下当时的情况,因为你只提供了一个大概的描述:机器人订单是什么时候定的(是否提前定的;是否与机器人同时手动,等等)。但无论如何,即使在这种情况下,你也只需要与你的经纪人打交道,因为他有自己的线程,可能会排队进行交易。假设,如果手动挂单是先下的,那么订单执行时间就会不同(包括其他客户的订单),因此,价格也可能不同。如果机器人在形成信号的期间内下了订单,那么订单在队列中的到来是不明显的--因此执行价格可能出现偏差。另外,它可能受到你没有写任何东西的头寸大小的影响......等...
但是...都一样,这只能通过经纪人(DC)来澄清。而且我想他会找到一堆我没有提到的理由。- 而建议是正确的:在你的手中和对经纪人的日志,当然,如果你仍然认为你的挂单已经移动。但不要混淆两个不同的概念:挂单和这个挂单的交易。限价单是以任何最近的价格和申报的数量进入市场的指令。而交易 - 是有可能执行你的订单的价格,以申报的资金量(手)。- 而且这些订单的价格很可能是不同的(尤其是在快速市场上,也就是你得到的链接)。对于限价订单,订单的价格和执行的价格是相等的(根据定义)。
而事实上,模拟和真正的经纪人没有任何区别,这是很好的!- 这表明经纪人不会为了吸引客户而伪造交易(从你的话中可以看出)。- 在这种情况下,看不出有什么差异。
谢谢你如此详细的答复,一切都变得清晰了。如果我们使用即时 执行系统,这个问题会得到解决吗?
我没有提到的条件呢。
机器人下单的时间比人工下单的时间早,但在新闻发布前就已经修改了。
交易量是相同的,距离大约相同
一般来说,条件几乎完全相同。
本日开始于当前D1条的开始(iTime (NULL, PERIOD_D1, 0)),但你是不是在寻找简单的方法?:))
问题就在这里。
一切正常,但只有一次。例如,如果我设置了一天的周期(iTime (NULL,PERIOD_D1, 0)),它在第二天就不起作用了。
写了一个测试代码来测试