关于MQL4文件的讨论 - 页 17 1...1011121314151617181920 新评论 Rashid Umarov 2007.03.20 17:01 #161 Yurixx: Rosh,如果我对你的沉默理解正确的话,对于哪些情况和哪些表达式/变量需要规范化,没有明确的说法。如果是这样的话,也许可以回答一个更简单的问题:计算值的规范化形式是否为 int StLs=25。 double prc = Ask + StLs*Point; 或者我应该在实验中自己发现这个问题? 我不认为你在等待我对问题的回答。我的回答是:在这种情况下,我不做正常化处理,订单正常打开。但有一次,我加载了一个手工制作的历史,并试图在上面运行一个测试器--这时我感到很惊讶。几乎在所有情况下,都应该使用规范化,以备不时之需--无论是自己制作的指标值插入OrderSend()的价格参数中[如各种枢轴],还是EA内部的复杂计算(也不复杂)--在所有情况下,你都不能用黄油糟蹋任何东西。 但实际上,我不能给出一个明确的表述,什么时候绝对没有必要在OrderSend()中应用价格规范化。原则上,一个夜行人在半年内就会有感觉,但没有必要去找感觉,只要一直正常化就可以了。 Rashid Umarov 2007.03.21 10:23 #162 另外,今天在检查帮助程序时,我在数据转换 部分发现了一组函数 : ,提供数据从一种格式到另一种格式的转换。 特别值得注意的是NormalizeDouble() 函数,它确保了价格表示的准确性要求。 你不能在交易操作中使用非正常化的价格,其准确性至少超过交易服务器所要求的准确性一个数字。 Rashid Umarov 2007.03.21 10:29 #163 也是归一化双数 double normalizeDouble( double value, int digits) 将一个浮点数舍入到指定的精度。 计算出的 StopLoss和TakeProfit值,以及挂单的开盘价 必须被归一化为精度,其值被存储在预定义的变量Digits 中。 参数。 价值 - 带浮点的值。 数字 - 一种精度格式,小数点后的数字(0-8)。 例子。 double var1=0.123456789; Print(DoubleToStr(NormalizeDouble(var1,5),5)); // output: 0.12346 [删除] 2007.03.21 11:15 #164 "例子。 double var1=0.123456789; Print(DoubleToStr(NormalizeDouble(var1,5),5))。 //输出:0.12346"。 这些是我希望在文档中看到的例子。一切都很简单,也很容易理解。你在专家顾问或指标中插入它,就能马上看到结果。 Rashid Umarov 2007.03.21 11:29 #165 你是说像这样吗? Sceptic Philozoff 2007.03.21 17:17 #166 Rosh,请看同一论坛的第16页,我已经写了关于这个功能和改进对它的帮助的建议。 Rashid Umarov 2007.03.21 17:22 #167 现在已经固定了(将在新的构建中)。 double normalizeDouble( double value, int digits) 将一个浮点数舍入到指定的精度。 计算出的StopLoss和TakeProfit值,以及挂单的开盘价 应该被规范化为准确值,其值被存储在预定义的变量Digits 中。 参数。 价值 - 带浮点的值。 数字 - 一种精度格式,小数点后的数字(0-8)。 例子。 double var1=0.123456789; Print(DoubleToStr(NormalizeDouble(var1,5),8)); // output: 0.12346000 这个例子演示了通过NormalizeDouble()剪切到5位数,而Print()只是简单地渲染(抱歉,这不是俄罗斯的风格)它。 Sceptic Philozoff 2007.03.21 17:30 #168 是的,一旦字符的数量开始不同,这个例子就变得明显更有信息量。 Alexandre 2007.03.21 18:25 #169 bool SendFTP( string filename, string ftp_path=NULL) 将文件发送到发布窗口中指定的电子邮件地址。如果不成功,返回FALSE。 该功能在测试模式下不工作。这个函数也不能从自定义指标中调用。 要发送的文件必须位于terminal_directory/experts/files 文件夹或其子文件夹中。 如果在设置中没有指定FTP地址和/或访问密码,则不进行发送。 [...] 空白的SendMail( string subject, string some_text) 发送电子邮件到邮件标签上的设置中指定的地址。 发送可能在设置中被禁止,也可能没有指定电子邮件地址。必须调用GetLastError() 函数来获得错误信息。 [...] 观察任务:找到2个差异。 Rashid Umarov 2007.03.21 18:32 #170 显然,你必须放弃,这样你才能从背后扔掉正确的答案?:) 1...1011121314151617181920 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
Rosh,如果我对你的沉默理解正确的话,对于哪些情况和哪些表达式/变量需要规范化,没有明确的说法。如果是这样的话,也许可以回答一个更简单的问题:计算值的规范化形式是否为
int StLs=25。
double prc = Ask + StLs*Point;
或者我应该在实验中自己发现这个问题?
但实际上,我不能给出一个明确的表述,什么时候绝对没有必要在OrderSend()中应用价格规范化。原则上,一个夜行人在半年内就会有感觉,但没有必要去找感觉,只要一直正常化就可以了。
,提供数据从一种格式到另一种格式的转换。
特别值得注意的是NormalizeDouble() 函数,它确保了价格表示的准确性要求。 你不能在交易操作中使用非正常化的价格,其准确性至少超过交易服务器所要求的准确性一个数字。
计算出的 StopLoss和TakeProfit值,以及挂单的开盘价 必须被归一化为精度,其值被存储在预定义的变量Digits 中。
Rosh,请看同一论坛的第16页,我已经写了关于这个功能和改进对它的帮助的建议。
计算出的StopLoss和TakeProfit值,以及挂单的开盘价 应该被规范化为准确值,其值被存储在预定义的变量Digits 中。
这个例子演示了通过NormalizeDouble()剪切到5位数,而Print()只是简单地渲染(抱歉,这不是俄罗斯的风格)它。
是的,一旦字符的数量开始不同,这个例子就变得明显更有信息量。
该功能在测试模式下不工作。这个函数也不能从自定义指标中调用。
要发送的文件必须位于terminal_directory/experts/files 文件夹或其子文件夹中。
如果在设置中没有指定FTP地址和/或访问密码,则不进行发送。
[...]
发送可能在设置中被禁止,也可能没有指定电子邮件地址。必须调用GetLastError() 函数来获得错误信息。
[...]
观察任务:找到2个差异。