需要帮助!无法解决这个问题,我遇到了硬件限制 - 页 17

 
有可能在一次数据读取中计算出所有的东西--主要的是欲望。
komposter:

是的,在这种形式下,任务是并行的--每次SeekDate改变时,你可以在序列集的不同部分同时运行最佳标准的搜索。例如,我们把它们分成20个部分,把任务交给20个专家顾问。而他们应该读取文件,找到交易,并只发回最佳序列(№№,标准和文件位置)。

非常感谢你们!

如果我们在多个EA上运行这种算法,我们会受到从磁盘上+分次+从不同位置读取速度的限制,速度很可能不够。

 
ALXIMIKS:
你可以在一次数据读取中计算所有的东西--如果你想的话,主要的是

从磁盘上读取是一个相当昂贵的操作--在几个Expert Advisors上运行这个算法将受到从磁盘上读取的速度的限制+分批读取+从不同位置读取,速度不太可能达到。

谁说分布式计算 必须在一个工作站上进行? 没有这样的限制))如上所述,RAM-磁盘会有帮助。
 
elugovoy:
谁说分布式计算 应该在一个工作站上完成? 没有这样的限制))如上所述,RAM-磁盘也是一个很大的帮助。

想一想,改变一下算法如何?

1.如何一次性下载几个序列,以及如何知道它们在哪里开始,哪里结束

2.如何计算一个序列中所有交易的系数,以及在什么数据结构中存储答案

3.如何将上一项目中的两个答案合并成一个新的稍完整的答案

4.如何将第3点的最终答案划分为所需的区间(我们谈论的是SeekingDate=交易关闭时间+1)

我们可以得到一个稍有不同的算法,即选择将SeekingDate 区间分成多少个额外的部分

与最初作者的算法相比,我们可以得到不同的错误。

 
papaklass:

数字的位数容量由输入代码的唯一性决定,而不是系统的位数容量。很明显,它应该是1个字节的倍数。

在我看来,64位似乎太多了。:)

如果有1,000,000条记录,16位将不足以获得一个独特的记录代码(最多65536条记录)。那是一个。

看看英特尔(Itanium)、AMD(我没说操作系统)的32位和64位处理器架构。32/64是地址总线的分辨率,但同时在一个机器周期内从内存中读取32/64位(4/8字节),即使是访问一个字节的内存。

因此,无论是从内存中读取2个字节还是8个字节,在性能上绝对没有区别。

原则上,你可以为这种文件处理编写一个Windows服务。

但我还是倾向于使用DBMS。

 
ALXIMIKS:

想一想,改变一下算法如何?

1.如何一次性下载几个序列,以及如何知道它们在哪里开始,哪里结束

2.如何计算一个序列中所有交易的系数,以及在什么数据结构中存储答案

3.如何将上一项目中的两个答案合并成一个新的稍完整的答案

4.如何将第3点的最终答案划分为所需的区间(我们谈论的是SeekingDate=交易关闭时间+1)

我们可以得到一个稍有不同的算法,即选择将SeekingDate 区间分成多少个额外的部分

与最初作者的算法相比,我们可能得到不同的错误。

对于所有4点,DBMS方面的数据处理。

关于 "稍有不同 "的算法,我不太清楚你的意思。但是。为了以某种方式计算这种 "稍有不同 "的算法与 "作者 "的算法相比的误差,你需要两种算法都能实现。而这个主题的产生正是因为实现 "作者 "的算法的技术问题。

鉴于这一事实,你打算用什么方法来计算你所说的误差?

 
ALXIMIKS:
你可以在一次阅读中计算出所有的东西--主要的是欲望。

从磁盘读取是一个相当昂贵的操作--在几个Expert Advisors上运行这个算法将受到从磁盘+分次+从不同位置读取速度的限制,这个想法不太可能带来任何速度。

我们说HDD是最慢的设备,这是一个事实。然而,我们不是在谈论使用所有这些计算方法运行多个EA。在我看来,最可能的应用是信号生成。比如亚马逊上的云服务器,具有必要的性能+MT4+这种开发=信号提供者。

 
elugovoy:

对于这4点,数据处理都是在DBMS方面。

关于 "略有不同 "的算法,我不清楚你的意思。但是。为了以某种方式计算这种 "稍有不同 "的算法与 "作者 "的算法相比的误差,必须实现两种算法。而这个主题的产生正是因为实现 "作者 "的算法的技术问题。

鉴于这一事实,你打算用什么方法来计算你所说的误差?

我从作者那里了解到,范围将被从给定范围中选择的最大系数所截断。 我建议的变体是将每个范围分为N个子范围,在收敛时只有一个系数值可能适合。因此,在N=5时,该范围可分为0.2 0.4 0.6 0.8 1的比例。而从0到1的任何数值都会在作者的一中被切断。因此,在N=5时,0.2的范围误差是最大的。

而且都是围绕着如何正确地解释作者的帖子,因为现在还没有完全清楚。

 
ALXIMIKS:

根据我对作者版本的理解(万一又出错了,因为没有清楚完整地解释到底需要什么),这个范围将被从这个范围中选择的最大系数切断;在我建议的版本中,每个这样的范围应该被划分为N个子范围,其中只有一个系数值能适合合并。因此,在N=5时,该范围可分为0.2 0.4 0.6 0.8 1的比例。而从0到1的任何数值都在作者的范围内被切断。因此,在N=5时,0.2的范围误差是最大的。

而且都是围绕着如何正确地解释作者的帖子,因为现在还没有完全清楚。

是的,显然该项目 是由财政部下令的,没有足够的具体信息。然而,每个人都能从讨论中找到自己感兴趣的东西。我认为这是讨论的一个积极方面。

关于范围的离散化,你的想法很清楚。而如果N=100,1000...(纯粹从数学上看是可能的),那么这种拆分就会在性能和系统资源的使用方面引起反作用。有物理学,也有数学 )

 
Candid:

我们在记忆中拥有一个文件的片段,通过它并形成一个必要长度的样本来计算标准,只选择属于同一序列的交易。然后我们在这个样本上计算出标准。顺便说一下,有可能在选择中使用递归法。

因此,你需要通过其他序列的几百万笔交易!这正是我的意思。

ALXIMIKS

插入新数据的问题--以某种方式解决它。

到目前为止没有问题,数据是一个固定的数量。

TheXpert
顺便说一下,如果你知道每个序列的起点,你可以用二进制搜索来搜索正确的日期,因为交易是按时间排序的。

+1,谢谢你的主意。

elugovoy:

1.根据上述"让标准成为该序列最后20次交易的平均利润。",这应该被理解为一个标准,即利润的移动预期。还有哪些人?

在数据库中,生成一个带有序列标识符和相应移动平均线的表格。不符合条件的序列应立即删除。这应该由DBMS级别的并发模式程序完成,根据机器人的要求,在机器人中显示进程状态。

让我们说,FilterAvgProfit(pProfitValue,pTrades,pDeviation)。

其中pProfitValue是目标利润,pTrades是移动平均利润的交易数,pDeviation是pProfitValue的允许偏差。

结果是一个带有序列ID和平均利润值的填充表。

1а.其他标准是什么--这并不重要。重要的是,计算是由一系列指定长度的交易进行的。

1б.你怎么能仅仅因为一个序列在关闭交易N时有一个不好的标准值而放弃它?如果以后成为更好的呢?
你只能删除那些已经完全失败的序列,其标准没有显示任何利润。而且不应该有很多这样的人。

elugovoy:

4.在我看来,如果我们看的是策略选择,这个操作不应该太频繁(比如说,在每个柱子上或在订单打开前立即执行)。这种方法是合理的,如果目前的策略显示连续N次亏损的交易--那么我们可以选择另一个策略,它需要时间来 "做决定",没有什么可避免的。或者,每周进行一次这样的选择(在周末,当市场关闭时),并且,要么确认当前选择的策略,要么切换到另一个策略。在给定的条件下,有可能为交易者制定一份最佳推荐策略清单。然后随着市场开盘,在头脑清醒的情况下(周一),交易员将确认选择(或更早,在市场开盘前......电子邮件提醒,等等)。

嗯,这是一个意识形态的问题。现在不谈他了;)

ALXIMIKS

你把内存分配给一个结构数组,并获得。

为什么你需要一个标准值数组和一个文件指针位置数组?(一个标准和最后一笔交易,你没有想到要储存吗?)

标准值阵列--能够对一些最佳序列进行分类和选择(用于未来)。

文件索引位置--在每个序列中从正确的地方继续搜索(否则如何?)

ALXIMIKS

我说对了吗。

第一遍--在从0到SeekDate的区间内搜索

然后找到最佳标准,FindDate=交易收盘时间+1

现在搜索从"交易收盘时间 "到SeekingDate的时间间隔?

而你需要在这个区间内适合X个交易来计算每个序列的标准?

1.是的,从0到SeekingDate先。

2.SeekedDate被移位,我们在 "PreviousTreatedTrade - SeekDate "的区间内处理序列(将交易加入数组)。

雷纳特

这些都是奇怪的结果。

下面是我们的工作服务器系统在负载下的情况。

  • SSD:每秒200Mb,NTFS
  • 含RAM:2000-2500Mb/秒,FAT32,Softperfect RAM Disk 3.4.5

没有磁盘框架,组装项目的时间要长很多倍。

我开始变得复杂了。

可能需要做一个测试脚本,并附上一个文件,供你在类似的任务中检查。

我有一个普通的硬盘 - wdc wd1002FAEX-00Y9A0,从规格上看,最大速度是126MB/s。

评论 来看,这大约是你能挤出来的东西。也许我做错了什么?

让我们来看看这个脚本...

ALXIMIKS
这就是我所说的--你必须大块地读取大文件,否则小文件可能需要10倍的时间。

你如何阅读大块的东西?

纸杯

在我看来,问题的解决方案在于对原始数据进行编码。

我们如何在不丢失信息的情况下对全部交易信息进行编码?

 
Renat:

奇怪的结果。

下面是我们的生产服务器系统在负载下的情况。

  • 带SSD:每秒200Mb,NTFS
  • 含RAM:2000-2500Mb/秒,FAT32,Softperfect RAM Disk 3.4.5

如果没有RAM磁盘,建立项目的时间要长很多倍。

我忘了写记忆。

DDR3,1333 MHz。

Softperfect RAM Disk 3.4.5,虽然我做了NTFS(有什么区别吗?)

还有一个细节--RAM磁盘是12000MB,只有1-2GB的可用内存(用于工作)。