新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1294 1...128712881289129012911292129312941295129612971298129913001301...1953 新评论 Александр 2020.11.03 09:14 #12931 ANDREY:大家好!我正在尝试将mql4转为mql5。问题:为什么mql5计算并显示一些我不知道的表达式,比如2.99999999-(减去)05,而不是当前价格和Hay 变量值之间的差值,这应该是<1(像mql4)?我怎样才能使mql5正确地计算出这些数值之间的差异?我使用 NormalizeDouble()对所有数值进行了归一化 处理,但上述数值值显示不变。这对我来说很奇怪,因为这两个值都是二进制类型的。感谢大家的帮助。 2.9999999999-(减)05=2.9999999999/100000=0.00002999999。数学中就是这样做的。 -(减)05就是除以10的五次方。 Александр 2020.11.03 09:18 #12932 IndependentMK:又见面了。 请注意一个新手的问题。 我需要指出代码中的错误,因为在测试器中,专家顾问并没有打开订单...编译器没有显示任何错误或警告,在日志中也是如此,没有任何错误......。 它没有打开是因为其中一个条件没有得到满足。 它是 while(MA_Smoth_B > MA_Smoth_S) 或这个 if(MA_Simpl_B_Op < MA_Simpl_S_Op && MA_Simpl_B_Cl > MA_Simpl_S_Cl) 评论出两个闪光点//,你就会知道是哪一个。这就是你发现错误的方法。 ANDREY 2020.11.03 09:54 #12933 Александр:2.9999999999-(减)05=2.9999999999/100000=0.0000299999999。数学中就是这样做的。 -(减)05就是除以10的五次方。 谢谢你的回答,但是为什么程序不计算价格1.33671和Hay 1.33664之间的差额,而不计算表达式,应该是0.00007,而是输出表达式? 同时,当我用常数1. 33664( SymbolInfoDouble(Symbol(),SYMBOL_BID)-1.33664)替换1.33664的Hay 变量时,程序计算出这些数值之间的实际差异,即0.00007。事实上,代码中的Hay 变量取的是前一个tick上的订单的开盘价值,是 一个1.33664 的双倍值。 提前感谢您的帮助。 Artyom Trishkin 2020.11.03 09:57 #12934 ANDREY:谢谢你的回答,但是为什么程序不计算价格值1.33671和Hay 1.33664之间的差额,而不计算表达式,应该是0.00007,而是输出表达式?提前感谢您的提示。 DoubleToString()。这不是关于MQL5的问题,这是关于日志中真实值的不正确输出。这对MQL4同样适用。 Документация по MQL5: Преобразование данных / DoubleToString www.mql5.com [in] Формат точности. Если значение digits лежит в диапазоне от 0 до 16, то будет получено строковое представление числа с указанным количество знаков после запятой. Если значение digits лежит в диапазоне от -1 до -16, то... ANDREY 2020.11.03 11:57 #12935 Artyom Trishkin:DoubleToString()。而且这不是关于MQL5的问题,而是关于日志中真实值的不正确输出。这也同样适用于MQL4,程度完全相同。 明白了。谢谢你。我以前从未遇到过这样的问题。现在我将知道。 我不太清楚精确格式对我的代码意味着什么。在我看来,它是小数点后的数字。 但在MT4中,在完全相同的代码中(除了OrderSend),如果我没有记错的话,Print函数总是输出两个价格值之间的实际差值,即小于1的数字(0.00000),0后面有5位小数。 Artyom Trishkin 2020.11.03 12:10 #12936 ANDREY:明白了。谢谢你。我以前从未遇到过这种情况。现在我就知道了。我还不太清楚准确率格式对我的代码意味着什么。在我看来,它是小数点后的数字。 但在MT4中,在完全相同的代码中(除了OrderSend),如果我没有记错的话,Print函数总是输出两个价格值之间的实际差值,即小于1的数字(0.00000),0后面有5位小数。 真实的数据值被打印在各个地方。它只是实数表示的不同格式。如果终端没有指定输出格式,它自己决定哪种格式更方便。当然,这是以你知道所有的数字表示格式为前提的。 这一切都在帮助中。 ANDREY 2020.11.03 12:21 #12937 Artyom Trishkin:真实的数据值到处显示。它只是一种表示实数的不同格式。如果终端没有指定输出格式,它决定哪种格式更方便。当然,这要假设你知道所有的数字格式。一切都在帮助中。 那么,MT4和MT5对实数的表示有不同的格式? 我应该在mql5帮助中阅读什么来处理这个问题? 谢谢你的帮助。 Michail_David 2020.11.03 15:31 #12938 Michail_David: 你好,各位专家。我需要你的帮助来纠正这个指标。该指标的实质如下。计算相对于前一栏的价格上涨幅度。对于零需要一个星条。就是说,开盘价等于收盘价。编译时没有错误,但测试时在第80行20个字符处出现错误。信号线 的画法也不正确。但我认为这就是主缓冲区计算不正确的原因。请帮助我解决这个问题。 好的。看来在这里只有少数人得到帮助。 Vitaly Muzichenko 2020.11.03 16:01 #12939 Michail_David:好的。看来在这里只有少数人得到帮助。 试试这个。 //--- typical price and its moving average for(i=0; i<rates_total-1; i++) { ExtTempBuffer[i] = NormalizeDouble((close[i]-open[i])/Point(),2); Michail_David 2020.11.03 17:37 #12940 Vitaly Muzichenko:试试这个。 谢谢你,维塔利。但在ExtTempBuffer[i]=NormalizeDouble((close[i]-open[i])/Point(),2);这一行,我仍然得到一个错误。 1...128712881289129012911292129312941295129612971298129913001301...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
大家好!
我正在尝试将mql4转为mql5。
问题:为什么mql5计算并显示一些我不知道的表达式,比如2.99999999-(减去)05,而不是当前价格和Hay 变量值之间的差值,这应该是<1(像mql4)?
我怎样才能使mql5正确地计算出这些数值之间的差异?我使用 NormalizeDouble()对所有数值进行了归一化 处理,但上述数值
值显示不变。这对我来说很奇怪,因为这两个值都是二进制类型的。
感谢大家的帮助。
2.9999999999-(减)05=2.9999999999/100000=0.00002999999。数学中就是这样做的。
-(减)05就是除以10的五次方。
又见面了。
请注意一个新手的问题。
我需要指出代码中的错误,因为在测试器中,专家顾问并没有打开订单...
编译器没有显示任何错误或警告,在日志中也是如此,没有任何错误......。
它没有打开是因为其中一个条件没有得到满足。
它是
while(MA_Smoth_B > MA_Smoth_S)
或这个
if(MA_Simpl_B_Op < MA_Simpl_S_Op && MA_Simpl_B_Cl > MA_Simpl_S_Cl)
评论出两个闪光点//,你就会知道是哪一个。这就是你发现错误的方法。
2.9999999999-(减)05=2.9999999999/100000=0.0000299999999。数学中就是这样做的。
-(减)05就是除以10的五次方。
谢谢你的回答,但是为什么程序不计算价格1.33671和Hay 1.33664之间的差额,而不计算表达式,应该是0.00007,而是输出表达式?
同时,当我用常数1. 33664( SymbolInfoDouble(Symbol(),SYMBOL_BID)-1.33664)替换1.33664的Hay 变量时,程序计算出这些数值之间的实际差异,即0.00007。事实上,代码中的Hay 变量取的是前一个tick上的订单的开盘价值,是 一个1.33664 的双倍值。
提前感谢您的帮助。
谢谢你的回答,但是为什么程序不计算价格值1.33671和Hay 1.33664之间的差额,而不计算表达式,应该是0.00007,而是输出表达式?
提前感谢您的提示。
DoubleToString()。这不是关于MQL5的问题,这是关于日志中真实值的不正确输出。这对MQL4同样适用。
DoubleToString()。而且这不是关于MQL5的问题,而是关于日志中真实值的不正确输出。这也同样适用于MQL4,程度完全相同。
明白了。谢谢你。我以前从未遇到过这样的问题。现在我将知道。
我不太清楚精确格式对我的代码意味着什么。在我看来,它是小数点后的数字。
但在MT4中,在完全相同的代码中(除了OrderSend),如果我没有记错的话,Print函数总是输出两个价格值之间的实际差值,即小于1的数字(0.00000),0后面有5位小数。
明白了。谢谢你。我以前从未遇到过这种情况。现在我就知道了。
我还不太清楚准确率格式对我的代码意味着什么。在我看来,它是小数点后的数字。
但在MT4中,在完全相同的代码中(除了OrderSend),如果我没有记错的话,Print函数总是输出两个价格值之间的实际差值,即小于1的数字(0.00000),0后面有5位小数。
真实的数据值被打印在各个地方。它只是实数表示的不同格式。如果终端没有指定输出格式,它自己决定哪种格式更方便。当然,这是以你知道所有的数字表示格式为前提的。
这一切都在帮助中。
真实的数据值到处显示。它只是一种表示实数的不同格式。如果终端没有指定输出格式,它决定哪种格式更方便。当然,这要假设你知道所有的数字格式。
一切都在帮助中。
那么,MT4和MT5对实数的表示有不同的格式?
我应该在mql5帮助中阅读什么来处理这个问题?
谢谢你的帮助。
你好,各位专家。我需要你的帮助来纠正这个指标。该指标的实质如下。计算相对于前一栏的价格上涨幅度。对于零需要一个星条。就是说,开盘价等于收盘价。编译时没有错误,但测试时在第80行20个字符处出现错误。信号线 的画法也不正确。但我认为这就是主缓冲区计算不正确的原因。请帮助我解决这个问题。
好的。看来在这里只有少数人得到帮助。
好的。看来在这里只有少数人得到帮助。
试试这个。
试试这个。
谢谢你,维塔利。但在ExtTempBuffer[i]=NormalizeDouble((close[i]-open[i])/Point(),2);这一行,我仍然得到一个错误。