错误、漏洞、问题 - 页 1862

 
Slawa:

是的,按时间排序。最初的条目是用二进制搜索来寻找的。

用同样的方法搜索最后一条记录不是很合乎逻辑吗?

历史是如何组织的,这非常有压力。测试器中的HFT几乎是不现实的。我已经在论坛上写了几个关于这个问题的帖子,并向SD提出了请求。


还有一点,如果终端已经有历史记录,为什么你要求 使用HistorySelect而不是MT4的SELECT_BY_POS?而且一点也不清楚,为什么HistoryDealGet*是通过适当的O(N) 票实现的,而再次使用SELECT_BY_POS是合理的?


非常有趣的记录

HistoryDealGetInteger(DealTicket, DEAL_TICKET);
HistoryOrderGetInteger(OrderTicket, ORDER_TICKET);
 
fxsaber:

以同样的方式寻找最后一个条目不是很合乎逻辑吗?


为什么?

不时地。你找到开始的时间,然后你逐个元素进行。一直到最后的时间。

如果所有的记录都在同一个内存块中,这就说得通了。我已经在servisdesk中告诉你,历史上的订单和交易都存储在块阵列中,所以没有内存的重新分配,只有重新分配。

 
Slawa:

为什么?

时常如此。找到开始时间,然后逐个元素复制。直到最后的时间。

如果所有的记录都在同一个内存块中,这就说得通了。我已经在服务台告诉过你,历史上的订单和交易都存储在块阵列中,所以没有内存的重新分配,只有重新分配。

为了大块复制而不是零散复制。即通过二进制搜索,我们找到两个索引,然后找到第一个区块的一个大块,所有区块完全到最后一个,剩下的大块到最后一个。
 
fxsaber:

历史工作的组织是非常紧张的。测试器中的HFT几乎是不现实的。


在算法上解决了。

对于HFT,你不需要每次都去看历史。在初始化过程中准备好必要的信息,并使其能够非常迅速地进入。

 
Slawa:

解决方案是算法的。

对于HFT,你不需要每次都去看历史。在初始化过程中准备好必要的信息,并使其能够非常迅速地进入。

并找出最后一个位置是如何关闭的?
 
fxsaber:

并向SR提出了申请。

我不明白为什么。如果你想讨论,就在这里讨论吧。他们在服务台不教编程
 
fxsaber:
并找出最后一个位置是如何关闭的?

在初始化过程中,去一次并记住。

在这个过程中,自己保存所有需要的信息。所有工具都在那里

 
Slawa:
现在这完全不知道是什么原因。你想讨论,就在这里讨论吧。他们在Servesk不教编程。

我遇到过几次,开发者由于环境的原因,错过了这个消息。在SD中并不是这样的。


这不是关于编程技能的水平。而且就MQL5而言,它在我这里可能还不错。我提出的论点是,与历史一起工作是非常缓慢和奇怪的,甚至在使用的逻辑方面。HistoryDealGet*- O(N).为什么大家都这样做?为什么没有正常访问HIS的历史?

 
Slawa:

在初始化过程中,去一次就记住了。

在这个过程中,自己保存所有需要的信息。所有的工具都在那里

不,我不是在胡闹。在不访问历史记录的情况下,我如何知道在测试器中的位置是关闭TP或SL?

你想记住TP/SL,并在平仓的tick上检查它是否满足TP/SL平仓?谁满意--在这个层面上,测试者以高概率关闭。对吗?

那么平仓的 利润呢?- 以同样的方式?那么它就类似于编写你自己的测试器。

 
fxsaber:

不,我不是在装傻。在不参考历史记录的情况下,你如何知道在测试器中一个头寸是否在TP或SL上平仓?

你是在建议记住TP/SL,然后在tick上检查,位置在哪里,是否满足TP/SL的关闭?谁满意--在这个层面上,测试者以高概率关闭。对吗?

那么平仓的 利润呢?- 以同样的方式?那么它就类似于编写你自己的测试器。

显然,我不了解关于HFT的一些情况。据我所知,当你进行 "非常快 "的交易时,你并不关心以前的交易。