错误、漏洞、问题 - 页 2986

 
Andrey Dik:

因此,另一个问题出现了:在用SymbolInfoTick()函数填充MqlTick结构后,我是否应该检查其数值是否正确?- 因为Ask和Bid的值可以是任何,包括负值。还是从SymbolInfoTick()中获取真值就足够了?

关于交易、自动交易系统和策略测试的论坛

新版MetaTrader 5 build 2755:报价窗口和调试器的改进

fxsaber, 2021.02.15 03:02

零价格的COPY_TICKS_INFO-tic是一个错误?

void OnStart()
{
  MqlTick Ticks[];
  
  CopyTicksRange("GBPUSD", Ticks, COPY_TICKS_INFO, D'2020.10.02 23:54:54' * 1000, D'2020.10.05 00:07:01' * 1000);
    
  ArrayPrint(Ticks);
  Print(AccountInfoString(ACCOUNT_SERVER));
}


结果。

                         [time]   [bid]   [ask] [last] [volume]    [time_msc] [flags] [volume_real]
        [0] 2020.10.02 23:54:54 1.29378 1.29385 0.0000        0 1601682894091       4       0.00000
        [1] 2020.10.02 23:54:54 1.29377 1.29383 0.0000        0 1601682894404     134       0.00000
        [2] 2020.10.02 23:54:54 1.29375 1.29379 0.0000        0 1601682894471     134       0.00000
        [3] 2020.10.02 23:54:55 1.29375 1.29381 0.0000        0 1601682895248       4       0.00000
        [4] 2020.10.05 00:06:14 0.00000 1.29313 0.0000        0 1601856374091       6       0.00000
        [5] 2020.10.05 00:07:00 1.29271 1.29332 0.0000        0 1601856420497     134       0.00000
        [6] 2020.10.05 00:07:00 1.29271 1.29331 0.0000        0 1601856420497       4       0.00000
        RannForex-Server
 
inwinterborn:

你能告诉我为什么在调试过程中断点会移动到下一个函数,无论是在历史上还是在线(Ctrl+F5,F5)?

检查了好几遍。所有的解释都在所附的屏幕截图中。

这是一个错误吗?


解释:

1.我手动设置了2个断点:1)Series.mqh第81行;2)TimeSeries.mqh第48行
2.我移到ExpertMACD.mq5文件
3。开始对历史或真实数据进行调试
4.我在文件Series.mqh的第94行得到调试器停止,该行没有断点。这一行是我的手动断点后下一个函数的开始,从第81行开始,这个断点已经消失或移动。
5.我检查了我在TimeSeries.mqh中的第二个手动断点,我看到它也从第48行移到了第63行,还是在我之前的断点之后的下一个函数。


你能告诉我问题可能是什么吗?

 
inwinterborn:


解释:

1.我手动设置了2个断点:1)Series.mqh第81行;2)TimeSeries.mqh第48行
2.我移到ExpertMACD.mq5文件
3。开始对历史或真实数据进行调试
4.我在文件Series.mqh的第94行得到调试器停止,该行没有断点。这一行是我的手动断点后下一个函数的开始,从第81行开始,这个断点已经消失或移动。
5.我检查了我在TimeSeries.mqh中的第二个手动断点,我看到它也从第48行移到了第63行,还是在我之前的断点之后的下一个函数。


你能告诉我问题可能是什么吗?

检查编辑器中的设置--关闭优化功能。

 
Vladimir Karputov:

检查编辑器中的设置 - 禁用优化。

谢谢你的回答,但这并没有什么帮助。

该选项确实被启用了。

停用它。重复了一遍。结果与上文所述相同。

关闭终端 和编辑器的新设置。

又重新打开了它。重复的。结果是一样的。

还有什么可能是问题?


 
inwinterborn:

谢谢你的回答,但这并没有什么帮助。

该选项确实被启用了。

停用了它。重复了一遍。结果与上文所述相同。

关闭终端 和编辑器的新设置。

又重新打开了它。重复的。结果是一样的。

还有什么可能是问题?


试试2833版本--也许有什么变化......。

 
Vladimir Karputov:

试试2833版本--也许有些东西已经改变了......

一个自动升级 到2834。

结果没有变化。断点正在转移。

 
fxsaber:

你的代码没有检查函数的返回值,所以无法判断Ticks结构的内容是否正确。

而如果在调用CopyTicksRange 时没有错误,那么我们应该把结构的零值视为正常,否则我们能相信谁?哪些价格可以被认为是正常的(我们的意思是甚至不是0.0的价格,而是!任何!价格)?在价格错误的情况下向谁投诉,Sportlotto?经纪人会指责MQ,MQ也会指责经纪人。这个问题比它看起来更严重。

 
Andrey Dik:

你的代码没有检查函数的返回值,所以无法判断Ticks结构的内容是否正确。

而如果在调用CopyTicksRange 时没有错误,那么我们应该把结构的零值视为正常,否则我们能相信谁?哪些价格可以被认为是正常的(我们的意思是甚至不是0.0的价格,而是!任何!价格)?在价格错误的情况下向谁投诉,Sportlotto?经纪人会责备MQ,MQ也会责备经纪人。这个问题比它看起来更严重。

该代码显示了价格可以是什么。看了看我自己的代码。不要做这些和其他愚蠢的检查。仅在MT5上就肯定在各个地方做了超过一百万次的交易。这个问题离实践很远。

 
fxsaber:

代码显示了价格可以是多少。看了看我自己的代码。不要做这些和其他愚蠢的检查。仅在MT5上就肯定在各个地方做了超过一百万次的交易。这个问题离实际情况很远。

所以呢,这就是问题所在,价格可以是任何东西,所以你认为哪些是正确的?你不做这些和其他愚蠢的检查,却同样愚蠢, 更昂贵的0.0价值的检查?

 
inwinterborn:

你能告诉我为什么在调试时断点会移动到下一个函数,无论是在历史上还是在线(Ctrl+F5,F5)?

检查了好几遍。所有的解释都在所附的屏幕截图中。

这是一个错误吗?

断点 被移位--如CSeries::BufferResize专家根本就没有进入。