需要帮助!无法解决这个问题,我遇到了硬件限制 - 页 14 1...789101112131415161718192021 新评论 Dmitry Fedoseev 2014.08.19 19:42 #131 komposter:...有许多类似的交易序列,每个序列都是按时间排序的。一个序列能不能装入内存?你可以写一个专家顾问。开始时,专家顾问加载序列#(属性窗口中的参数)并在此序列上进行交易。优化№。任务并不十分明确,而很多不同的事情都可以实施。 Eugeniy Lugovoy 2014.08.19 20:27 #132 Integer:一个序列能不能装入内存?你可以写一个专家顾问。专家顾问在启动时加载序列号(属性窗口中的参数)并在此序列上进行交易。优化№。任务并不十分明确,而很多不同的东西都可以被幻化。如果我们有20Gb(21 474 836 480字节),有100万个序列,我们得到每个序列平均约21 475字节(~21Kb)。我认为它应该适合在内存中,甚至在手机中))。О.顺便说一下,分布式计算怎么样? 我们也应该朝这个方向考虑... Alexandr Bryzgalov 2014.08.20 18:06 #133 我想他已经拿到了信号灯的历史文件)。 Andrey Khatimlianskii 2014.08.20 21:49 #134 再次抱歉暂停,我一直在用RAM驱动器做实验(到目前为止不是很成功)。依次回复大家。Candid:但这些序列是相互独立的,对吗?那么,为什么我不能在一个单一加载的序列上一次性地循环查看日期呢?在这里,顺便说一下,只是可能有机会去找一些高效的递归算法,但这是运气好的时候。一百万上的大小将保持,文件将被读取一次。当然,一个在下一次迭代中步骤数保持不变的问题(即搜索区域不会随着计算的进行而变窄)看起来并不十分稳健。但当然,这是很主观的。独立的。那么如何在不把它们加载到内存中的情况下,一次进入所有序列的循环?如果你想出如何从正确的地方(从当前分析的日期开始的最后X个交易)读取序列,那么步骤的数量可以减少。Urain。 整个基地是否适合10年线? 所有的文件都是累积的每百万个序列有一个文件(为了方便,我把每个文件写成9行)。嗯,或者一百万个文件,这并不重要。ALXIMIKS。我对以下内容的理解是否正确。1) 一个20gb的文件由大约一百万个按时间排序的序列组成2) 每个序列的大小可能不同,取决于该序列包含的交易数量3) 一个序列的平均大小为20/10^6=20Mb,那么我们能保证完全下载一个序列吗?4) K系数只取决于给定序列中的交易。5) 对于每一个序列,我们必须找到K(总共10^6块),并选择前10块是是20K,我们可以保证是的,一次运行使用一个固定设置的标准器。但在未来,我希望接下来的运行(改变了标准或其他设置)也能快速计算出来。 在我有这样的体量之前,我只是把所有东西都下载到内存中,然后循环运行,计算我所需要的一切。标准值是为序列中的每一笔交易计算的,从交易#X开始(这是计算需要的金额)。 在历史的每一点上都应该选择最佳的序列(最佳的--在当前时刻具有最佳标准的序列,标准是用最后完成的交易计算的。ALXIMIKS。如果我们创建另一个带有序列间距离值的文件,则A。我不明白这个和下一个。烛光。 顺便说一下,是的,你可以一次加载成批的序列。它不会保存,你需要所有的人。沉默不语。我不明白它的地方。这里是标准--所有--从Date1到Date2的区间中。即,其内容如下。为什么不把文件分成从 Date1到Date2的许多区间?会有工作的序列可以被关闭,对吗?区间 "Date1 - Date2 "目前涵盖所有序列的所有交易。而把它分成几个小的想法是相当明智的。是的,那么你就必须在每次改变参数时从磁盘上读取信息......。但这是一件好事。烛光。 显然,单一日期通行证的结果之一是一个新的日期。是的,但我认为你可以找到一个点,在这个点上,没有任何交易会有任何的序列,并做出一个突破。然后会过渡到下一个区间。我会试一试的。 Andrey Khatimlianskii 2014.08.20 22:06 #135 ALXIMIKS:如果问题是这样。给定一个行 1 2 3 4 5 6 7 8 9 宽度是给定的,例如4,你需要用这个宽度沿着整个行移动,找到宽度内的某个值(例如最小值)。首先你必须找到1 2 3 4,然后2 3 4 5,然后3 4 5 6,然后4 5 6 7,然后....。等。如果X(交易数量)是固定的(在你的例子中是4),并且没有其他参数--是的。因此--没有。维宁。 我将思考这项任务条件已在上面 说明,欢迎加入我们的行列;)营销人员。 既然这个问题相当具有学术性(听起来像是一个雇用程序员的问题),而且很多人对它表现出兴趣,为什么不在输入数据描述格式方面更严格地制定它,每个人都能生成20G的测试数据并提交他们的实际解决方案?没问题。生成随机交易的序列(按时间顺序,甚至是1年),其所有属性:开盘日期和时间,开盘价,SL,TP,收盘日期和时间,收盘价。从1到100万的序列编号。任务是在所有序列的所有交易中创建一个新的连续交易系列(时间上不重叠),并按一定的标准进行选择。让标准是序列中最后20次交易的平均利润。示例结果。序列#250,交易#53,标准=51:2013.01.31 00:00 - 2013.02.12 12:30(标准是为交易#32-52计算的,即第53次没有被使用)。序号1222,交易号28,标准=75:2013.02.13 10:00 - 2013.02.13 02:21就这样一直到年底。joo: 所以我认为我们在谈论的是一个自制的测试器/优化器?是的,类似这样的事情。sergeev:不,那里有不同的东西。我猜一些经纪人/供应商已经得到了交易数据库。:)如果只是这样的话=)sergeev:我将用更简单的语言重复这项任务。不,不是的。我举了一个具体的例子,它可以说是尽可能地接近真实的问题。 Andrey Khatimlianskii 2014.08.20 22:09 #136 elugovoy: 数据库的典型。但如果不进行数据汇总,就没有办法做到这一点。你可以在一个单独的表格中写出一个序列的独特属性(c-date),利润K和方差D的平均值,然后寻找接近你所需要的标准的前10个序列。有了这些字段的索引,搜索不会花那么长时间(即使是一百万条记录)。然后,当你得到正确的10个序列时,你可以在原始数据中打探,但不会再有一百万次搜索,因为我们有一个日期限制。如果 "标准 "是静态的...如果它的参数发生变化怎么办?elugovoy: 这仍然是一个谜--我们应该寻找什么? 所有操作的结果应该是什么?如果我们谈论的是在打开/关闭一个订单方面做出决定,任何处理这样的数量都需要相当大的时间。是的,那么就会有一个交易。但重新计算只需要最新鲜的数据,我们不需要重新计算整个历史。elugovoy: 还有一点。既然我们谈论的是交易,也许把每个符号的交易分开是有意义的?并编写为欧元兑美元、美元兑日元等设计的类似交易机器人。它是一种乐器...elugovoy: 在我看来,这样一来,你只能确定用于交易的某一序列的策略(或机器人的一组参数),并在某种市场情况下切换到它。正是如此。 Andrey Khatimlianskii 2014.08.20 22:15 #137 Integer:一个序列能不能装入内存?你可以写一个专家顾问。开始时,专家顾问加载序列号(属性窗口中的参数)并在此序列上交易。优化数量。它将。但我们不需要一个单一的(最终)结果,而是在每个时间点上。基本上,我们可以通过给出序列号和日期作为参数来使用云计算,直到读取为止。但这几乎不比重新计算一个文件快)elugovoy:О.顺便说一下,分布式计算怎么样? 我们也应该朝这个方向考虑...我们应该平行计算什么?标准对不同序列的价值?但我们需要为此将它们加载到内存中。而且,如果它是从一个进程(专家顾问,终端)或从几个进程加载的,这并不重要。也许,我们可能会得到8(或12、16、20)而不是4Gb。但人们必须在事后将结果 "粘 "起来。 TheXpert 2014.08.20 22:49 #138 komposter:我们应该把什么算作平行?不同序列的标准是什么意思?这个想法是把所有的故事分成,比如说,100组,并为每组单独计算出最优集。 然后,对于每一组,我们将只留下那些在该组的最佳集合中的故事,并以较少的故事数量进入下一步。然后,从理论上讲,它平行于100次。 而且根据记忆,一切都很好,小组的大小可以调整。 Andrey Khatimlianskii 2014.08.21 00:53 #139 TheXpert:这个想法是把所有的故事分成,比如说,100组,并为每组单独计算出最优集。然后,对于每一组,只留下最佳组别中的故事,并进入下一步,用更少的故事。然后,从理论上讲,它平行于100次。而且根据记忆,一切都很好,小组的大小可以调整。如果你平行加载100个零件,就没有足够的内存了=)如果你按顺序加载(每次记忆一个最佳变体),那么并联在哪里呢?而且每次你到机器上时,该文件仍会被读取。我认为有可能发明一个巧妙的部分装载机制,但必须要有发明。例如,在第一次读取时,为每一个通道找到在开始日期之前关闭的最后一笔交易,回过头来读取之前的X笔交易,记住文件中该交易结束的点。之后,在结果中找到第一笔交易,然后只用新鲜的数据工作:从所需的点到新的实际日期读取文件,每次在数组中转移交易(得到固定大小的数组--X元素)。这将解决多读问题(根本不需要)和内存问题(只有当我们可以放置X百万个交易时)。我将朝着这个方向前进。 Andrey Khatimlianskii 2014.08.21 01:07 #140 顺便说一下,改成二进制文件后,在大小上几乎没有增加。我优化的文本格式非常紧凑:日期被记忆了一次(第一笔交易的开盘),所有其他的(包括开盘和收盘)都被记忆为与前一个日期的偏移;SL、TP和PriceClose也被保存为与开盘价的偏移。当我切换到二进制格式时,这种优化就没有意义了--以秒为单位的转移(uint)需要同样多的空间,就像完整的日期一样(我拒绝long-a,2030年对我来说足够了),但ushort是不够的(最大的转移只有18小时)。价格也是如此--我可以把偏移量移到ushort,但这样我就必须增加对溢出的检查(例如,如果SL=0),而且所有3个价格的收益只有6字节。决定不做了。但我已经删除了一点不必要的信息,所以我已经得到了20%的信息。预计原始文件的大小(是20Gb)--7-8Gb,几个小时就能转换。好吧,我也赢得了CPU时间,这是用在转换线路 上的。 1...789101112131415161718192021 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
...
有许多类似的交易序列,每个序列都是按时间排序的。
一个序列能不能装入内存?
你可以写一个专家顾问。开始时,专家顾问加载序列#(属性窗口中的参数)并在此序列上进行交易。优化№。
任务并不十分明确,而很多不同的事情都可以实施。
一个序列能不能装入内存?
你可以写一个专家顾问。专家顾问在启动时加载序列号(属性窗口中的参数)并在此序列上进行交易。优化№。
任务并不十分明确,而很多不同的东西都可以被幻化。
如果我们有20Gb(21 474 836 480字节),有100万个序列,我们得到每个序列平均约21 475字节(~21Kb)。我认为它应该适合在内存中,甚至在手机中))。
О.顺便说一下,分布式计算怎么样? 我们也应该朝这个方向考虑...
再次抱歉暂停,我一直在用RAM驱动器做实验(到目前为止不是很成功)。依次回复大家。
但这些序列是相互独立的,对吗?那么,为什么我不能在一个单一加载的序列上一次性地循环查看日期呢?在这里,顺便说一下,只是可能有机会去找一些高效的递归算法,但这是运气好的时候。一百万上的大小将保持,文件将被读取一次。
当然,一个在下一次迭代中步骤数保持不变的问题(即搜索区域不会随着计算的进行而变窄)看起来并不十分稳健。但当然,这是很主观的。
独立的。那么如何在不把它们加载到内存中的情况下,一次进入所有序列的循环?
如果你想出如何从正确的地方(从当前分析的日期开始的最后X个交易)读取序列,那么步骤的数量可以减少。
整个基地是否适合10年线? 所有的文件都是累积的
每百万个序列有一个文件(为了方便,我把每个文件写成9行)。
嗯,或者一百万个文件,这并不重要。
我对以下内容的理解是否正确。
1) 一个20gb的文件由大约一百万个按时间排序的序列组成
2) 每个序列的大小可能不同,取决于该序列包含的交易数量
3) 一个序列的平均大小为20/10^6=20Mb,那么我们能保证完全下载一个序列吗?
4) K系数只取决于给定序列中的交易。
5) 对于每一个序列,我们必须找到K(总共10^6块),并选择前10块
在我有这样的体量之前,我只是把所有东西都下载到内存中,然后循环运行,计算我所需要的一切。
在历史的每一点上都应该选择最佳的序列(最佳的--在当前时刻具有最佳标准的序列,标准是用最后完成的交易计算的。
如果我们创建另一个带有序列间距离值的文件,则A。
我不明白这个和下一个。
顺便说一下,是的,你可以一次加载成批的序列。
它不会保存,你需要所有的人。
我不明白它的地方。
这里是标准--所有--从Date1到Date2的区间中。
即,其内容如下。
为什么不把文件分成从 Date1到Date2的许多区间?会有工作的序列可以被关闭,对吗?
区间 "Date1 - Date2 "目前涵盖所有序列的所有交易。
而把它分成几个小的想法是相当明智的。是的,那么你就必须在每次改变参数时从磁盘上读取信息......。但这是一件好事。
显然,单一日期通行证的结果之一是一个新的日期。
是的,但我认为你可以找到一个点,在这个点上,没有任何交易会有任何的序列,并做出一个突破。
然后会过渡到下一个区间。我会试一试的。
如果问题是这样。
给定一个行 1 2 3 4 5 6 7 8 9
宽度是给定的,例如4,你需要用这个宽度沿着整个行移动,找到宽度内的某个值(例如最小值)。
首先你必须找到1 2 3 4,然后2 3 4 5,然后3 4 5 6,然后4 5 6 7,然后....。等。
如果X(交易数量)是固定的(在你的例子中是4),并且没有其他参数--是的。因此--没有。
我将思考这项任务
条件已在上面 说明,欢迎加入我们的行列;)
既然这个问题相当具有学术性(听起来像是一个雇用程序员的问题),而且很多人对它表现出兴趣,为什么不在输入数据描述格式方面更严格地制定它,每个人都能生成20G的测试数据并提交他们的实际解决方案?
没问题。
生成随机交易的序列(按时间顺序,甚至是1年),其所有属性:开盘日期和时间,开盘价,SL,TP,收盘日期和时间,收盘价。从1到100万的序列编号。
任务是在所有序列的所有交易中创建一个新的连续交易系列(时间上不重叠),并按一定的标准进行选择。
让标准是序列中最后20次交易的平均利润。
示例结果。
所以我认为我们在谈论的是一个自制的测试器/优化器?
是的,类似这样的事情。
不,那里有不同的东西。
我猜一些经纪人/供应商已经得到了交易数据库。:)
如果只是这样的话=)
我将用更简单的语言重复这项任务。
不,不是的。我举了一个具体的例子,它可以说是尽可能地接近真实的问题。
数据库的典型。但如果不进行数据汇总,就没有办法做到这一点。你可以在一个单独的表格中写出一个序列的独特属性(c-date),利润K和方差D的平均值,然后寻找接近你所需要的标准的前10个序列。有了这些字段的索引,搜索不会花那么长时间(即使是一百万条记录)。然后,当你得到正确的10个序列时,你可以在原始数据中打探,但不会再有一百万次搜索,因为我们有一个日期限制。
如果 "标准 "是静态的...
如果它的参数发生变化怎么办?
这仍然是一个谜--我们应该寻找什么? 所有操作的结果应该是什么?如果我们谈论的是在打开/关闭一个订单方面做出决定,任何处理这样的数量都需要相当大的时间。
是的,那么就会有一个交易。但重新计算只需要最新鲜的数据,我们不需要重新计算整个历史。
还有一点。既然我们谈论的是交易,也许把每个符号的交易分开是有意义的?并编写为欧元兑美元、美元兑日元等设计的类似交易机器人。
它是一种乐器...
在我看来,这样一来,你只能确定用于交易的某一序列的策略(或机器人的一组参数),并在某种市场情况下切换到它。
正是如此。
一个序列能不能装入内存?
你可以写一个专家顾问。开始时,专家顾问加载序列号(属性窗口中的参数)并在此序列上交易。优化数量。
它将。
但我们不需要一个单一的(最终)结果,而是在每个时间点上。
基本上,我们可以通过给出序列号和日期作为参数来使用云计算,直到读取为止。但这几乎不比重新计算一个文件快)
О.顺便说一下,分布式计算怎么样? 我们也应该朝这个方向考虑...
我们应该平行计算什么?标准对不同序列的价值?
但我们需要为此将它们加载到内存中。而且,如果它是从一个进程(专家顾问,终端)或从几个进程加载的,这并不重要。也许,我们可能会得到8(或12、16、20)而不是4Gb。但人们必须在事后将结果 "粘 "起来。
我们应该把什么算作平行?不同序列的标准是什么意思?
这个想法是把所有的故事分成,比如说,100组,并为每组单独计算出最优集。
然后,对于每一组,我们将只留下那些在该组的最佳集合中的故事,并以较少的故事数量进入下一步。然后,从理论上讲,它平行于100次。
而且根据记忆,一切都很好,小组的大小可以调整。
这个想法是把所有的故事分成,比如说,100组,并为每组单独计算出最优集。
然后,对于每一组,只留下最佳组别中的故事,并进入下一步,用更少的故事。然后,从理论上讲,它平行于100次。
而且根据记忆,一切都很好,小组的大小可以调整。
如果你平行加载100个零件,就没有足够的内存了=)
如果你按顺序加载(每次记忆一个最佳变体),那么并联在哪里呢?而且每次你到机器上时,该文件仍会被读取。
我认为有可能发明一个巧妙的部分装载机制,但必须要有发明。
例如,在第一次读取时,为每一个通道找到在开始日期之前关闭的最后一笔交易,回过头来读取之前的X笔交易,记住文件中该交易结束的点。
之后,在结果中找到第一笔交易,然后只用新鲜的数据工作:从所需的点到新的实际日期读取文件,每次在数组中转移交易(得到固定大小的数组--X元素)。
这将解决多读问题(根本不需要)和内存问题(只有当我们可以放置X百万个交易时)。
我将朝着这个方向前进。
顺便说一下,改成二进制文件后,在大小上几乎没有增加。
我优化的文本格式非常紧凑:日期被记忆了一次(第一笔交易的开盘),所有其他的(包括开盘和收盘)都被记忆为与前一个日期的偏移;SL、TP和PriceClose也被保存为与开盘价的偏移。
当我切换到二进制格式时,这种优化就没有意义了--以秒为单位的转移(uint)需要同样多的空间,就像完整的日期一样(我拒绝long-a,2030年对我来说足够了),但ushort是不够的(最大的转移只有18小时)。价格也是如此--我可以把偏移量移到ushort,但这样我就必须增加对溢出的检查(例如,如果SL=0),而且所有3个价格的收益只有6字节。决定不做了。
但我已经删除了一点不必要的信息,所以我已经得到了20%的信息。预计原始文件的大小(是20Gb)--7-8Gb,几个小时就能转换。
好吧,我也赢得了CPU时间,这是用在转换线路 上的。