文章 "遗传算法 - 很简单!" - 页 7 1234567891011121314...20 新评论 Andrey Dik 2011.03.01 19:06 #61 Graff: 先生们如果不太困难的话,请给我一些使用 UGA 库的例子。 您对什么样的示例(关于什么主题)感兴趣? Serge 2011.03.01 23:55 #62 joo: 您对哪种示例(关于什么主题)感兴趣? 任何使用 UGA 的示例,因为从文章中的示例来看,还不太清楚它是如何工作的。文章中有一个使用 "之 "字形指标的示例,能否提供使用其他指标(RSI、CCI....)的示例? Andrey Dik 2011.03.02 07:04 #63 Graff: 文章中有一个使用 "之 "字形指标的示例,能否提供使用其他指标(RSI、CCI....)的示例?编写一个脚本,其中1) 将计算指标所 需的工具载入数据数组2) 用一组参数计算指标(应优化这些指标参数)。3) 根据指标信号确定进入/退出点4) 计算感兴趣的统计指标(考虑到点差、缩水等因素后获得的点数)。2)、3)、4) 项是 GA 一次迭代的步骤 - 计算个人的 FF。写一个这样的脚本,反过来,我将尝试帮助您 "拧 "UGA 到它。PS.我怀疑是否有人会用 UGA 发布一个现成的交易示例 - 如果有人认真地使用这个库(或任何其他类似库)进行研究,那么这些进展很可能是私人的(时间花在研究与交易没有直接关系的东西上)。 Документация по MQL5: Основы языка / Функции / Функции обработки событий www.mql5.com Основы языка / Функции / Функции обработки событий - Документация по MQL5 Andrey Dik 2011.03.02 16:31 #64 zsazsa: 很棒的文章!谢谢。1) 我看到您想使用 UGA 来优化 NN 的训练。成功了吗?2) 在这种情况下,染色体的基因是什么?3) 您是否也开发了自己的 NN 库,或者是否找到了支持与 MT5 和 GA 集成的现有 NN 实现? 1) 是的。 2) 我将网络神经元的权重和偏差表示为染色体基因。 3) 我编写了自己的神经网络 实现。 kogriv 2011.03.20 15:51 #65 安德烈,您好。我正在试着用 "科学方法 "学习如何使用您的库(以您提出的 UGA_script.mq5 和 skin.mqh 为例)。如果您不介意,请向我额外介绍如何正确设置输入参数,以解决 Kohonen网络训练 问题。也就是说,我们有 N 个坐标为 (x,y) 的点、M 个内核(训练后将被 "移动")、FF 函数--"临近度量"。根据我的理解,UGA_script.mq5 中的参数应设置如下: ChromosomeCount_P= ????(我不明白如何设置),GeneCount_P=2*M(每个核有 2 个坐标),Epoch_P= ????(我不知道如何设置)。在此先表示感谢。 Andrey Dik 2011.03.20 18:54 #66 kogriv:安德烈,您好。我正在试着用 "科学方法 "学习如何使用您的库(以您提出的 UGA_script.mq5 和 skin.mqh 为例)。如果您不介意,请向我额外介绍如何正确设置输入参数,以解决 Kohonen 网络训练问题。也就是说,我们有 N 个坐标为 (x,y) 的点、M 个内核(训练后将被 "移动")、FF 函数--"临近度量"。根据我的理解,UGA_script.mq5 中的参数应设置如下:1) ChromosomeCount_P= ????(我不知道如何设置)、2) GeneCount_P=2*M (每个细胞核 2 个坐标)、3) Epoch_P= ????(不明白如何设置)。在此先表示感谢。1) 先设置 50,如果不够,再增加数值(不要过多,最多 200-300,否则有可能等不到结果)。2) 可以。3) 从 50-100 开始,如果不够,再增加数值(不要太多,最多 200-1000,否则有可能等不到结果)。这些数字都是经验值,您可以根据自己的喜好进行更改,重点关注收敛速度或结果的准确性(一般来说,这些要求是相互排斥的,中间值介于两者之间--恕我直言)。 Vladimir Gomonov 2011.05.14 02:57 #67 我在图书馆里找找看。安德鲁,我不明白你为什么要先计算适应度函数,然后再从种群中删除重复。这很昂贵。void CycleOfOperators ( ........... ....... ) { ................................ ............... /确定后代群体中每个个体的适应性 GetFitness(historyHromosomes); ................................ .......................... //为下一次繁殖做准备 RemovalDuplicates(); }// 函数结束 我会在后代生成阶段控制克隆的存在。(事实上,我会这么做的)。 Andrey Dik 2011.05.14 11:29 #68 MetaDriver: 1) 安德鲁,我不明白为什么要先计算适应度函数,然后再从种群中去除重复。这样做成本很高。2) 我会在后代生成阶段控制克隆的存在。(事实上,我会这么做的)。1) 不进行重复的 FF 计算,因为检查是在历史染色体数据库中进行的--如果之前对该个体至少进行过一次 FF 计算,那么计算值就会从数据库中提取。2) 新殖民地定居到种群中还有一个细微差别。但我会对此保持沉默。:)请按照您认为更正确的方式进行,并告诉我结果--之后我会告诉您细微差别。PS 一般来说,与本评论无关,您可以采用多种不同的随机 GA 搜索策略,每种策略在某种程度上都值得关注。结果(收敛速度、搜索精度、陷入局部极值)几乎直接取决于所使用的搜索策略。 Vladimir Gomonov 2011.05.14 20:57 #69 joo:1) FFs 不会重复计算,因为我们会检查历史染色体数据库--如果某个个体之前至少进行过一次 FF 计算,那么计算值就会从数据库中提取。2) 在新殖民地定居到人口中时有一个细微差别。但我会对此保持沉默。:)做你认为更正确的事情,并告诉我结果--之后我会告诉你细微差别。1) 好,好,好。讲故事的人。:) 你至少有一个错误。只有......嗯......数学家才会这样比较实数。 if (Colony[Ge][chromos]!=historyHromosomes[Ge][Ch1]) break; 在这样的比较中,浮点数后的 15 位数之差就会被认为是不同的基因。 而且永远会有差异,因为这就是命运。;)至少应该是这样的: if (fabs(Colony[Ge][chromos]-historyHromosomes[Ge][Ch1]) > delta) // 例如 0.00001 < delta < 0.00000000001 break; 我毫不怀疑你已经在基因算法中单独测试了去除双倍值的方法,所以你一定有一种错觉,认为这个片段是有效的。2) 一切是多么神秘啊......薄者薄之,撕者撕之。)好吧,我来告诉你我是怎么做的。 Andrey Dik 2011.05.14 21:42 #70 MetaDriver:1) 好,好,好。讲故事的人:)2) 你至少犯了一个错误。只有......嗯......数学家才会这样比较实数。在这样的比较中,浮点数后的 15 位数之差就会被认为是不同的基因。 而且永远会有差异,因为这就是命运。;)至少必须如此:3) 而在去除重复基因时也是如此,我毫不怀疑你已经将去除重复基因的算法与基因算法分开测试了,所以你一定有一种错觉,认为这个片段是有效的。4) 一切是多么的神秘......薄者薄之,撕者撕之。)好吧,我来告诉你我是怎么做的。1) 讲故事的人?嗯,不幸的是,我不懂其中的幽默。数据库检查发生在函数 CheckHistoryChromosomes(chromos,historyHromosomes ) 中,该函数由GetFitness(historyHromosomes) 调用。这就是为什么我说的是正确的--没有重复运行 FF。2) 与数据库的核对是通过基因进行的。当出现新染色体时,每个基因都会被SelectInDiscreteSpace(temp,RangeMinimum,RangeMaximum,Precision,3) 归一化。因此,这里也不存在 "童话"。3) 参见 2)4) 不神秘。代码是公开透明的。确实存在细微差别(这与实现问题无关,而是与收敛质量有关)。 遗传算法 - 很简单! 1234567891011121314...20 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
先生们如果不太困难的话,请给我一些使用 UGA 库的例子。
您对哪种示例(关于什么主题)感兴趣?
文章中有一个使用 "之 "字形指标的示例,能否提供使用其他指标(RSI、CCI....)的示例?
编写一个脚本,其中
1) 将计算指标所 需的工具载入数据数组
2) 用一组参数计算指标(应优化这些指标参数)。
3) 根据指标信号确定进入/退出点
4) 计算感兴趣的统计指标(考虑到点差、缩水等因素后获得的点数)。
2)、3)、4) 项是 GA 一次迭代的步骤 - 计算个人的 FF。写一个这样的脚本,反过来,我将尝试帮助您 "拧 "UGA 到它。
PS.我怀疑是否有人会用 UGA 发布一个现成的交易示例 - 如果有人认真地使用这个库(或任何其他类似库)进行研究,那么这些进展很可能是私人的(时间花在研究与交易没有直接关系的东西上)。
很棒的文章!谢谢。
1) 我看到您想使用 UGA 来优化 NN 的训练。成功了吗?
2) 在这种情况下,染色体的基因是什么?
3) 您是否也开发了自己的 NN 库,或者是否找到了支持与 MT5 和 GA 集成的现有 NN 实现?
2) 我将网络神经元的权重和偏差表示为染色体基因。
3) 我编写了自己的神经网络 实现。
安德烈,您好。我正在试着用 "科学方法 "学习如何使用您的库(以您提出的 UGA_script.mq5 和 skin.mqh 为例)。如果您不介意,请向我额外介绍如何正确设置输入参数,以解决 Kohonen网络训练 问题。也就是说,我们有 N 个坐标为 (x,y) 的点、M 个内核(训练后将被 "移动")、FF 函数--"临近度量"。根据我的理解,UGA_script.mq5 中的参数应设置如下: ChromosomeCount_P= ????(我不明白如何设置),GeneCount_P=2*M(每个核有 2 个坐标),Epoch_P= ????(我不知道如何设置)。在此先表示感谢。
安德烈,您好。我正在试着用 "科学方法 "学习如何使用您的库(以您提出的 UGA_script.mq5 和 skin.mqh 为例)。如果您不介意,请向我额外介绍如何正确设置输入参数,以解决 Kohonen 网络训练问题。也就是说,我们有 N 个坐标为 (x,y) 的点、M 个内核(训练后将被 "移动")、FF 函数--"临近度量"。根据我的理解,UGA_script.mq5 中的参数应设置如下:
1) ChromosomeCount_P= ????(我不知道如何设置)、
2) GeneCount_P=2*M (每个细胞核 2 个坐标)、
3) Epoch_P= ????(不明白如何设置)。
在此先表示感谢。
1) 先设置 50,如果不够,再增加数值(不要过多,最多 200-300,否则有可能等不到结果)。
2) 可以。
3) 从 50-100 开始,如果不够,再增加数值(不要太多,最多 200-1000,否则有可能等不到结果)。
这些数字都是经验值,您可以根据自己的喜好进行更改,重点关注收敛速度或结果的准确性(一般来说,这些要求是相互排斥的,中间值介于两者之间--恕我直言)。
我在图书馆里找找看。
安德鲁,我不明白你为什么要先计算适应度函数,然后再从种群中删除重复。这很昂贵。
我会在后代生成阶段控制克隆的存在。(事实上,我会这么做的)。
1) 安德鲁,我不明白为什么要先计算适应度函数,然后再从种群中去除重复。这样做成本很高。
2) 我会在后代生成阶段控制克隆的存在。(事实上,我会这么做的)。
1) 不进行重复的 FF 计算,因为检查是在历史染色体数据库中进行的--如果之前对该个体至少进行过一次 FF 计算,那么计算值就会从数据库中提取。
2) 新殖民地定居到种群中还有一个细微差别。但我会对此保持沉默。:)请按照您认为更正确的方式进行,并告诉我结果--之后我会告诉您细微差别。
PS 一般来说,与本评论无关,您可以采用多种不同的随机 GA 搜索策略,每种策略在某种程度上都值得关注。结果(收敛速度、搜索精度、陷入局部极值)几乎直接取决于所使用的搜索策略。
1) FFs 不会重复计算,因为我们会检查历史染色体数据库--如果某个个体之前至少进行过一次 FF 计算,那么计算值就会从数据库中提取。
2) 在新殖民地定居到人口中时有一个细微差别。但我会对此保持沉默。:)做你认为更正确的事情,并告诉我结果--之后我会告诉你细微差别。
1) 好,好,好。讲故事的人。:) 你至少有一个错误。
只有......嗯......数学家才会这样比较实数。
在这样的比较中,浮点数后的 15 位数之差就会被认为是不同的基因。 而且永远会有差异,因为这就是命运。;)
至少应该是这样的:
我毫不怀疑你已经在基因算法中单独测试了去除双倍值的方法,所以你一定有一种错觉,认为这个片段是有效的。
2) 一切是多么神秘啊......薄者薄之,撕者撕之。)
好吧,我来告诉你我是怎么做的。
1) 好,好,好。讲故事的人:)
2) 你至少犯了一个错误。只有......嗯......数学家才会这样比较实数。在这样的比较中,浮点数后的 15 位数之差就会被认为是不同的基因。 而且永远会有差异,因为这就是命运。;)
至少必须如此:
3) 而在去除重复基因时也是如此,我毫不怀疑你已经将去除重复基因的算法与基因算法分开测试了,所以你一定有一种错觉,认为这个片段是有效的。
4) 一切是多么的神秘......薄者薄之,撕者撕之。)好吧,我来告诉你我是怎么做的。
1) 讲故事的人?嗯,不幸的是,我不懂其中的幽默。数据库检查发生在函数 CheckHistoryChromosomes(chromos,historyHromosomes ) 中,该函数由GetFitness(historyHromosomes) 调用。这就是为什么我说的是正确的--没有重复运行 FF。
2) 与数据库的核对是通过基因进行的。当出现新染色体时,每个基因都会被SelectInDiscreteSpace(temp,RangeMinimum,RangeMaximum,Precision,3) 归一化。因此,这里也不存在 "童话"。
3) 参见 2)
4) 不神秘。代码是公开透明的。确实存在细微差别(这与实现问题无关,而是与收敛质量有关)。