算法优化锦标赛。 - 页 50 1...434445464748495051525354555657...132 新评论 Andrey Dik 2016.06.21 14:49 #491 Andrey Dik:我今天似乎有时间来展示例子。我们都从那些对问题有更多了解的人的角度来问一些愚蠢的问题(每个人都在自己的时间)。没问题)。测试试验的例子,请原谅我的同义词)。 Andrey Dik 2016.06.21 17:13 #492 一个非常简单的FF的例子,2个参数。你已经可以在这个简单的函数上测试你的算法。#property library #property strict int countRuns = 0; //+------------------------------------------------------------------+ int GetParamCountFF () export { return (2); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ double FF (double &array []) export { countRuns++; int sizeArray = ArraySize (array); if(sizeArray != 2) return (-DBL_MAX); return (-(pow (2.4 + array [0], 2.0) + pow (array [1] - 2.3, 2.0))+3.1415926); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ int GetCountRunsFF () export { return (countRuns); } //+------------------------------------------------------------------+你能得到的最高值:3.1415926将自己的目标定在1000次,不能超过这个数字。冠军将是有500个参数的FF,不超过1000次运行,FF将接受-10.0到10.0范围内的参数,增量为0.1,超过该范围的参数将被切断到这些限制(在上面的例子中没有切断)。亲爱的参与者,请牢记这一点。 Andrey Dik 2016.06.21 17:33 #493 关于第一版算法的 测试脚本。#property script_show_inputs #property strict //+------------------------------------------------------------------+ // алгоритм оптимизации участника #import "\\Projects\\OAC\\lib\\ao_v1.ex5" // инициализация АО void InitAO (int paramCount, int maxFFruns); // функции алгоритма перед началом оптимизации void ServiceFunc1 (); // функции алгоритма на каждой "эпохе" (итерации) вначале void ServiceFunc2 (); // функции алгоритма на каждой "эпохе" (итерации) вконце void ServiceFunc3 (); // запрос количества пакетной обрабобки (аналог колонии ГА) int GetReplaysCount (); // получение параметров void GetOptParam (double ¶m []); // отправить в алгоритм значение ФФ соответствующее параметрам void SendFFvolue (double volue); // этой функцией алгоритм по может остановить оптимизацию bool StopAlgo (); // получить максимальное значение ФФ double GetMaxFF (); #import //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ // тестовая фитнес функция чемпионата, не известна участникам #import "\\Projects\\OAC\\lib\\ff.ex5" // запросить количество параметров ФФ int GetParamCountFF (); // запуск ФФ, получеие значения соответствующее параметроам ФФ double FF (double &array []); // произведённое количество запусков ФФ int GetCountRunsFF (); #import //+------------------------------------------------------------------+ //--- input parameters input int MaxFFruns_P = 1000; //+------------------------------------------------------------------+ void OnStart () { // узнаем, сколько параметров нужно оптимизировать int paramCount = GetParamCountFF (); bool stopAlgo = false; int ffRuns = 0; double param []; ArrayResize (param, paramCount); ulong startTime = GetMicrosecondCount (); //------------------------------------------------------------------ InitAO (paramCount, MaxFFruns_P); ServiceFunc1 (); while(!stopAlgo) { if(StopAlgo ()) break; ServiceFunc2 (); for(int i = 0; i < GetReplaysCount (); i++) { GetOptParam (param); SendFFvolue (FF (param)); ffRuns++; if(ffRuns == MaxFFruns_P) { stopAlgo = true; break; } } ServiceFunc3 (); if(StopAlgo () || stopAlgo) break; } //------------------------------------------------------------------- startTime = GetMicrosecondCount () - startTime; Print ("Макс: " + DoubleToString (GetMaxFF (), 8)); Print ("Запусков ФФ: " + (string)GetCountRunsFF ()); Print ("Время: " + (string)startTime + " мкс; " + DoubleToString ((double)startTime/1000000.0, 8) + " c"); Print ("---------------------------------"); } //+------------------------------------------------------------------+ Andrey Dik 2016.06.21 17:38 #494 测试脚本现在给了我这些数字。2016.06.21 22:36:15.214 OAC variant 1 (GBPUSD,H1) ---------------------------------2016.06.21 22:36:15.214 OAC variant 1 (GBPUSD,H1) Time: 1119 µs; 0.00111900 c2016.06.21 22:36:15.214 OAC variant 1 (GBPUSD,H1) FF Runs: 10002016.06.21 22:36:15.213 OAC variant 1 (GBPUSD,H1) Max: 3.14159260我的结论是:到目前为止,没有什么可抱怨的,一切工作都正常。 Algorithm Optimisation Championship. BrainSystem: Trading System Development Weekly performance Avals 2016.06.21 17:47 #495 你必须假设优化是一个研究特定过滤器(它实现的想法)的工具,而不是寻找一个全局极值。否则,你就是在战场上作战,与普通投资公司的博士和资源相比,你也是中游水平。虽然没有人取消软件自慰)) Dmitry Fedoseev 2016.06.21 17:55 #496 ОПТИМИЗАЦИЯ(optimization) Выбор из всех возможных вариантов использования ресурсов тех, 它通常被描述为目标函数的最大化。 Andrey Dik 2016.06.21 18:00 #497 Avals:你必须假设优化是一个研究特定过滤器(它实现的想法)的工具,而不是寻找一个全局极值。否则,你就是在战场上作战,与普通投资公司的博士和资源相比,你也是中庸的。虽然没有人取消软件的自慰))。没错--一个工具。在主题的早些时候,在寻找方程根的例子上演示了如何使用优化算法。你可以把它用于过滤器、指标、神经网络 或其他任何东西。有些人手淫,有些人工作,有些人边工作边手淫。每个人都有自己的想法。我们有一个自由的国家))))。 Andrey Dik 2016.06.21 20:47 #498 第二版算法 的测试脚本。#property script_show_inputs #property strict //+------------------------------------------------------------------+ // алгоритм оптимизации участника #import "\\Projects\\OAC\\lib\\ao_v2.ex5" // инициализация АО void InitAO (int paramCount, int maxFFruns); void StartAlgo (); // получить максимальное значение ФФ double GetMaxFF (); #import //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ // тестовая фитнес функция чемпионата, не известна участникам #import "\\Projects\\OAC\\lib\\ff.ex5" // запросить количество параметров ФФ int GetParamCountFF (); // запуск ФФ, получеие значения соответствующее параметроам ФФ double FF (double &array []); // произведённое количество запусков ФФ int GetCountRunsFF (); #import //+------------------------------------------------------------------+ //--- input parameters input int MaxFFruns_P = 1000; //+------------------------------------------------------------------+ void OnStart () { // узнаем, сколько параметров нужно оптимизировать int paramCount = GetParamCountFF (); ulong startTime = GetMicrosecondCount (); //------------------------------------------------------------------ InitAO (paramCount, MaxFFruns_P); StartAlgo (); //------------------------------------------------------------------ startTime = GetMicrosecondCount () - startTime; Print ("Макс: " + DoubleToString (GetMaxFF (), 8)); Print ("Запусков ФФ: " + (string)GetCountRunsFF ()); Print ("Время: " + (string)startTime + " мкс; " + DoubleToString ((double)startTime / 1000000.0, 8) + " c"); Print ("---------------------------------"); } //+------------------------------------------------------------------+ Andrey Dik 2016.06.21 20:50 #499 也检查了我的第二种启动方式的算法--结果与第一种方式相似。也就是说,我个人并不关心如何调用FF,从算法内部或外部--它的工作方式是一样的。请注意:这两个测试脚本将在冠军赛中用于参赛者,就像现在这样。只增加了将优化后的参数保存到文件中的功能,用于控制,也许会有一些小的变化,这将在冠军赛前反映出来,这是肯定的。 Andrey Dik 2016.06.21 20:54 #500 现在,我将补充这两种类型的FF调用的算法本身的例子,在非常,原生和心爱的HFC上。请爱护他们,特别是对初学者来说。它们很容易理解,是一个如何建立一个基本的简单的同时又能工作的优化算法的例子。 1...434445464748495051525354555657...132 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我今天似乎有时间来展示例子。
我们都从那些对问题有更多了解的人的角度来问一些愚蠢的问题(每个人都在自己的时间)。没问题)。
测试试验的例子,请原谅我的同义词)。
一个非常简单的FF的例子,2个参数。
你已经可以在这个简单的函数上测试你的算法。
你能得到的最高值:3.1415926
将自己的目标定在1000次,不能超过这个数字。
冠军将是有500个参数的FF,不超过1000次运行,FF将接受-10.0到10.0范围内的参数,增量为0.1,超过该范围的参数将被切断到这些限制(在上面的例子中没有切断)。亲爱的参与者,请牢记这一点。
关于第一版算法的 测试脚本。
测试脚本现在给了我这些数字。
2016.06.21 22:36:15.214 OAC variant 1 (GBPUSD,H1) ---------------------------------
2016.06.21 22:36:15.214 OAC variant 1 (GBPUSD,H1) Time: 1119 µs; 0.00111900 c
2016.06.21 22:36:15.214 OAC variant 1 (GBPUSD,H1) FF Runs: 1000
2016.06.21 22:36:15.213 OAC variant 1 (GBPUSD,H1) Max: 3.14159260
我的结论是:到目前为止,没有什么可抱怨的,一切工作都正常。
你必须假设优化是一个研究特定过滤器(它实现的想法)的工具,而不是寻找一个全局极值。否则,你就是在战场上作战,与普通投资公司的博士和资源相比,你也是中游水平。虽然没有人取消软件自慰))
ОПТИМИЗАЦИЯ(optimization) Выбор из всех возможных вариантов использования ресурсов тех,
它通常被描述为目标函数的最大化。
你必须假设优化是一个研究特定过滤器(它实现的想法)的工具,而不是寻找一个全局极值。否则,你就是在战场上作战,与普通投资公司的博士和资源相比,你也是中庸的。虽然没有人取消软件的自慰))。
没错--一个工具。在主题的早些时候,在寻找方程根的例子上演示了如何使用优化算法。你可以把它用于过滤器、指标、神经网络 或其他任何东西。
有些人手淫,有些人工作,有些人边工作边手淫。每个人都有自己的想法。我们有一个自由的国家))))。
第二版算法 的测试脚本。
也检查了我的第二种启动方式的算法--结果与第一种方式相似。也就是说,我个人并不关心如何调用FF,从算法内部或外部--它的工作方式是一样的。
请注意:这两个测试脚本将在冠军赛中用于参赛者,就像现在这样。只增加了将优化后的参数保存到文件中的功能,用于控制,也许会有一些小的变化,这将在冠军赛前反映出来,这是肯定的。