mt5策略测试器的刻度 - 页 11

 
RaptorUK:

我希望能够控制我使用的历史数据,以便我能够在受控条件下重复测试(策略测试器)。

什么控制 条件?

谢谢你

 
WhooDoo22:

什么样的控制条件?

谢谢你

我选择的条件,而不是我的经纪人选择的条件。 你还打算怎么测试? 每次测试的条件都是随机的? 但我们不要偏离主题。
 
RaptorUK:
我选择的条件不是我的经纪人选择的条件。 你还建议如何测试? 每次测试的条件都是随机的? 但我们不要偏离主题。

明白了。

谢谢你

 
angevoyageur:

如果你读了我的链接和/或RaptorUK的链接,你就会更清楚。如果没有,再读一遍 :-D

1.000000000006551e-005只是0.00001000000000006551的另一种记号。

你好,angevoyageur。

1.000000000006551e-005

0.00001000000000006551

第二个双数 的小数被向左移动了五次,但是;)在测试器中不能以这种格式返回,因为双数返回的最大值是小数右边的十六个数字(有效数字)。



主持人
1651
angevoyageur 2013.04.14 09:39
WhooDoo22:

你好,MQL5社区。

https://www.mql5.com/en/docs/common/comment

"双数类型的数据 以小数点后16位的精度输出,并且可以以传统格式或科学格式输出,这取决于哪种符号会更紧凑。Float类型的数据在小数点后有5位数字输出。要以另一种精度或预定义的格式输出实数,请使用DoubleToString() 函数。"

USDJPY在 98.370的价格表示 是浮动类型的数据(在小数点后5位输出)。

USDJPY在-0.0019999999995339的价格表示是双数类型的数据,传统格式(小数点后最多输出16位数)。

如果一个双数输出只到小数点后16位,为什么双数-0.001999999999533[9] 会返回小数点后的第18位

谢谢你

价格总是双数,98.370是双数。有 16位有效数字。零是没有意义的


如果零并不重要,为什么不能 在测试器中返回0.00001000000000006551 ,而不是1.000000000006551e-005?我更喜欢以0.00001000000000006551 的格式进行计算!

谢谢你

 
WhooDoo22:


如果零并不重要,为什么不能 在测试器中返回0.00001000000000006551 这个,而不是1.000000000006551e-005?我更喜欢以0.00001000000000006551 的格式进行计算!

一个浮点数(双数)在内部总是 以这种格式保存......1.000000000006551e-005,你阅读并理解了所给链接中的信息吗?

从这里:浮点数

"一个IEEE-754浮点数(4字节)或双倍数(8字节)有三个组成部分(在IEEE-854下也有一个类似的96位扩展精度格式):一个符号位告诉这个数字是正数还是负数,一个指数给出其数量级,一个尾数指定数字的实际数字。以单精度浮点数为例,以下是比特布局:"

3个部分

符号尾数指数
+1.000000000006551-005

如果你想看到0.00001000000000xyz,那么请使用DoubleToStr()将输出格式化为你喜欢的样子。

Articles - Understanding Floating Point Number Representation - Cprogramming.com
Articles - Understanding Floating Point Number Representation - Cprogramming.com
  • www.cprogramming.com
Floating point representations vary from machine to machine, as I've implied. Fortunately one is by far the most common these days: the IEEE-754 standard. This standard is prevalent enough that it's worthwhile to look at it in depth; chances are good you'd be able to use this information on your platform (look for ieee754.h). An IEEE-754...
 
RaptorUK:

一个浮点数(双数)在内部总是 以这种格式保存 . . . 1.000000000006551e-005,你阅读并理解了所给链接的信息吗?

从这里:浮点数

"一个IEEE-754浮点数(4字节)或双倍数(8字节)有三个组成部分(在IEEE-854下也有一个类似的96位扩展精度格式):一个符号位告诉这个数字是正数还是负数,一个指数给出其数量级,一个尾数指定数字的实际数字。以单精度浮点数为例,以下是比特布局:"

3个部分

符号尾数指数
+1.000000000006551-005

如果你想看到0.00001000000000xyz,那么请使用DoubleToStr()将输出格式化为你喜欢的样子。

是的,我读了你提供的所有链接,发现它们很有帮助,再次感谢你提供这些链接。我喜欢将DoubleToString结合起来,并选择双数的倒数第二位值(例如:CADJPY 95.9[5]9)作为DoubleToString的第二个参数。我认为这个 "can price!=price "的问题并不难解决!你对此有何看法?

谢谢你

 
WhooDoo22:

是的,我读了你提供的所有链接,发现它们很有帮助,再次感谢你提供的链接。我喜欢结合DoubleToString,选择双倍数的倒数第二位值(例如:CADJPY 95.9[5]9)作为DoubleToString的第二个参数。我认为这个 "can price!=price "的问题并不难解决!你对这个问题怎么看?

那么你的意思是这样的?

double value = 95.959;

Print("Value: ", DoubleToStr(value, _Digits - 1) );

Can price !=price是一个不同的问题,但略有联系。 它其实是无法解决的,首先你需要了解问题是什么 ......然后你再去解决它。

 
RaptorUK:

所以你的意思是这样的?

Can price != price是一个不同的问题,但略有联系。 它不能真正解决,首先你需要了解问题是什么 ......然后你要解决它。

double value=95.959;

Print("value returns ",DoubleToString(value,2));//value's expected print return is 95.95.

你对这个 "可以价格!=价格 "的问题有什么看法?

谢谢你

 

WhooDoo22:

...

价格总是双倍的,98.370是双倍的。有 16位有效数字。零是不重要的

如果零不重要,为什么不能 在测试器中返回0.00001000000000006551 ,而不是1.000000000006551e-005?我更喜欢以0.00001000000000006551 的格式进行计算!

谢谢你

可以的,这只是格式化输出值的一个选择。

所有等价物
0.00001000000000006551
0.0001000000000006551e-001
0.001000000000006551e-002
0.01000000000006551e-003
0.1000000000006551e-004
1.000000000006551e-005

这正是 因为 意义不大

WhooDoo22:

是的,我读了你提供的所有链接,发现它们很有帮助,再次感谢你提供这些链接。我喜欢结合DoubleToString,并选择双数的倒数第二位值(例如:CADJPY 95.9[5]9)作为DoubleToString的第二个参数。我认为这个 "can price!=price "的问题并不难解决!你对此有何看法?

谢谢你

对不起,我不明白这句话。
 
angevoyageur:

这可能是,这只是格式化输出值的一个选择。

所有的等价物
0.00001000000000006551
0.0001000000000006551e-001
0.001000000000006551e-002
0.01000000000006551e-003
0.1000000000006551e-004
1.000000000006551e-005

这正是 因为 零的 意义不大

对不起,但我不理解这句话。

"对不起,我不明白这句话。"

double value=95.959;

Print("value returns ",DoubleToString(value,2));//value's expected print return is 95.95.

谢谢你