优化一个EA,获得优化后的最佳效果。 - 页 41 1...343536373839404142434445464748...54 新评论 Georgiy Merts 2018.05.04 06:04 #401 免费信号--经过重新优化。 目前有6个联盟TS在运行,在我看来是最理想的。 目前中大联赛最受欢迎的结果在前几页。 目前的TC为过度优化。 № 符号 系统 缘由 1 EURCHF 趋势DTS 新的 2 EURCHF 趋势SAR 新的 3 EURCHF 趋势 新的 4 EURCHF ChnFlatSP 新的 5 EURCHF ChnFlatSAR 新的 6 EURCHF ChnFlatRTS 新的 7 EURCHF 趋势RTS 新的 8 EURCHF ChnFlatDTS 新的 9 英镑兑美元 趋势SAR 不容许SL 10 加德满都(CADJPY ChnFlatSAR 不容许SL 11 CHFJPY 淘宝网 大DD 12 美元兑日元 EMAFlatDTS 长时间的最大等待 我把USDJPY EMAFlatDTS 优化期17年5月4日至18年5月15日,从17年10月4日开始向前推进 (由于我过度优化--我将纠正这个帖子,并重新优化TC,从最后一个开始,到第一个) Optimise an EA and 领导人总数 每周赢家 Aleksey Vyazmikin 2018.05.04 19:49 #402 Georgiy Merts:免费信号- 重新开放。 目前有6个联盟TC在运行,在我看来,这是最理想的。也许你仍然可以让它将优化结果写入文件?只是标准指标没有给我,我想其他人也没有给多少。 这是我的数据集,它给出了优化器,但我也计划扩大它。 Georgiy Merts 2018.05.05 06:16 #403 Aleksey Vyazmikin:也许你仍然可以使它能够将优化结果写入文件?只是我和我认为其他人都没有从标准指标中得到什么。 这里是我的一组由优化器提供的数据,但我也计划扩大它。 当然,我的专家顾问里面有所有这些数据。你是否建议我在每次通过后都生成这样一个文件并将其放在文件区? 但我相信,很多人都会看着它? 但是,说,在你的文件 - 我个人不认为这个数字 - 只是 "不能看到森林的树木"。我只看 "恢复系数 "和 "失败 "两栏。 所有其他数据对我来说都是多余的,它们没有告诉我任何新东西。我认为有必要在专家中设置尽可能少的参数,以及尽可能少的评价指标。我想把所有东西都放在一个参数 "质量 "中,但我看到需要另一个参数 "可持续性"。 你说 "这些是我所输出的参数,我打算扩大这组参数"--目标是什么? 给我看一个更具体的例子--你会在哪里使用至少三分之一的这些列,你的输出?你就像邻近话题的参与者一样,写了一个美妙的画布引擎,在图表上显示美妙的视觉效果......但他没有考虑到这些功能的实际用途。获得任何数据都应该有某种特定的用途,应该是选择或TC运作的特定方法的一部分。而 "只是为了拥有"...这些资源最好用在外部系统或新系统的额外再优化上。当然,在想法中,有可能会打扰到输出文件。好吧,如果至少会有几张票认为这三个参数--质量、缩减和SL队列是不够的--好吧,制作这样一个文件,并将在报告中显示其数据。 Georgiy Merts 2018.05.05 06:25 #404 目前的TC为过度优化。 № 符号 系统 缘由 1 EURCHF 趋势搜索(ChnTrendSAR 新的 2 EURCHF 趋势 新的 3 EURCHF ChnFlatSP 新的 4 EURCHF ChnFlatSAR 新的 5 EURCHF ChnFlatRTS 新的 6 EURCHF 趋势RTS 新的 7 EURCHF ChnFlatDTS 新的 8 英镑兑美元 趋势搜索(ChnTrendSAR 不容许SL 9 EURCHF EMATrendSP 许多SL 10 GBPAUD 淘宝网 大DD 11 加德满都(CADJPY ChnFlatSAR 不容许SL 12 CHFJPY 淘宝网 大DD 13 GBPNZD EMAFlatSAR 长时间的最大等待 我有一个GBPNZD EMAFlatSAR 17年5月5日至18年5月5日期间,从17年10月5日开始向前推进。 Optimise an EA and KSRobot_1_5 EAs 每周赢家 Georgiy Merts 2018.05.05 10:30 #405 受宠的现况 (所有的TC都是在没有MM的情况下,以最小的批量进行演示工作)按质量划分的最佳20名。 质量前十名的图表。 最好的20个通过平衡。 按平衡度计算的最佳10个图表。 提醒一下,交易系统联盟专家(MT4和MT5的版本)是在Yandex-disk 上。档案中还附有一份关于该联盟原则的简要说明和在该联盟工作的TS名单。默认情况下,该联盟与一个TS(EURUSD ChnTrendSAR, magik 220141)合作,没有任何限制。其他TS只在策略测试器中工作。对于他们在模拟或真实账户上的工作,需要注册码。注册码,有效期为3个月,并与账号相连接,用于优化个别联盟系统(在四核Core i5上使用2-5小时)。 EALeague yadi.sk View and download from Yandex.Disk Aleksey Vyazmikin 2018.05.05 11:49 #406 Georgiy Merts: 当然,我在专家顾问里面有所有这些数据。你是否建议在每次通过后生成这样一个文件,并把它扔到文件区? 但我相信,很多人都会看的? 你说,"这些是我显示的参数,而且我仍然打算扩大这套参数"--目的是什么? 给我看一个更具体的例子--你会在哪里使用你输出的至少三分之一的列?当然,在理论上,文件的输出是可能的。好吧,如果至少会有几张票认为这三个参数--质量、下沉和SL队列是不够的--好吧,制作这样一个文件,并将在报告中显示其数据。让我这样说吧:我突然很想知道我在优化什么样的专家顾问,但不知道他们的具体算法,我决定关注他们的表现,突然发现由于统计指标的贫乏,我无法评估结果。 你说项目参与者应该自己进行选择,但根据现有的数据,这是不现实的。 现在我正在研究一个机械评估系统--主要想法是平衡所有的指标,而不仅仅是它们的绝对值,当然绝对值 也同样重要。 例如,我经常使用 "收入"-"最大连续利润 "*3-"支出"-"最大连续亏损 "*3的公式来估计利润,如果我们仍然处于加法,我们就进一步看,但在这个阶段我们也可以筛选出很多。 而且,缩水我只在自然条件下感知,因为百分比取决于缩水时的累计利润,但这不能说明什么,因为不能保证下一次这种缩水也会发生,只是在累计利润之后。例如,在启动资金为1000的情况下,缩减10%是10个单位,如果10%,利润为2000,就已经是30个单位了,同意这个数字没有可比性。百分比的意义只在于如果每天提取资金,但如果你实施它,那么其他的指标就会蠕动,这些指标是自动计算的,那么你自己就有每个数字,这很麻烦。 如果你以前没有做过,我可以给你我的代码,用于将数据写入文件。 Georgiy Merts 2018.05.05 12:01 #407 Aleksey Vyazmikin:如果你以前没有做过,我可以给你我的代码,用于将数据写入文件。你不应该放弃Skype。你可以看一下代码,并找出最好的方法来做。 来吧,你需要什么指标? 我的理解是,在OnTester()函数 中,专家顾问应该在什么时候输出? 我将为您提供这样的功能。它将输出一个CSV文件,可以很容易地在Excel中打开。 我们谈论的是什么专家顾问,是联盟的主要专家顾问,还是针对不同TS的单独专家顾问? Aleksey Vyazmikin 2018.05.05 12:11 #408 Georgiy Merts:你不应该放弃Skype。你可以看一下代码,研究一下如何最好地做到这一点。 来吧,你需要什么指标? 在什么时候应该由专家顾问输出? 据我所知--在函数OnTester() 中? 我将为您提供这样一个功能。 哦,我们在这里谈论的是什么EA--联盟的主要专家顾问,还是针对不同TS的独立EA? 我是这样安排的 //--- Кол-во показателей для записи в файл #define STAT_VALUES_COUNT 21 double stat_values[STAT_VALUES_COUNT]; // Массив для показателей теста //+------------------------------------------------------------------+ //| Начало оптимизации | //+------------------------------------------------------------------+ void OnTesterInit() { //FileWrite(Statistic,"typeMAH","pMAH","pipsXH","pMAT_Sell","CalcPlan","FinRezultatTotalSell","avrMassSell","MaxOrdersSell","N_Sell","ProcTotalSell","Вершин Sell","FinRezultatTotalBuy","avrMassBuy","MaxOrdersBuy","N_Buy","ProcTotalBuy","Вершин Buy"); //Printer.Write("OnTesterInit"); string TimeF=TimeToString(TimeLocal(),TIME_DATE|TIME_MINUTES); StringSetCharacter(TimeF,13,'_'); Statistic=Printer.FileCreate(Symbol()+"_"+TimeF+"_S&G","S&G\\Test",false,false,EvryTick); //Создание файла для записи Printer.Write("N", "Депо", "Прибыль", "Доход", "Расход", "Прибыльность", "Фактор вост.", "Мат ож", "К.Ш.", "Макс ДД баланса", "Макс ДД средств", "N сделок", "N трейдов", "N + трейдов", "N - трейдов", "Sell трейдов", "Buy трейдов", "Sell + трейдов", "Buy + трейдов", "Avr + трейдов", "Avr - трейдов", "% Sell от прибыльных", "% Buy от прибыльных", "% Sell от всех", "% Buy от всех", "% + от всех", "Custom" ); } //+------------------------------------------------------------------+ //| Обработчик события окончания тестирования | //+------------------------------------------------------------------+ double OnTester() { //--- Заполним массив показателями теста GetTestStatistics(stat_values); //--- Создадим фрейм FrameAdd("Statistics",1,0,stat_values); double custom_Pokazatel_01=CustomPokazatelf(1); // return(0.0); return(custom_Pokazatel_01); } //+------------------------------------------------------------------+ //| Пользовательские функции | //+------------------------------------------------------------------+ double CustomPokazatelf(int VariantPokazatel) { double profit = TesterStatistics(STAT_PROFIT); double max_dd = TesterStatistics(STAT_BALANCE_DD); // double RecoveryF = TesterStatistics(STAT_RECOVERY_FACTOR); double Mat_Ojidanie = TesterStatistics(STAT_EXPECTED_PAYOFF); double custom_Pokazatel=0; //=ЕСЛИ(C3-40000>0;(C3-40000)*(3000-J3);-1) //if (profit-40000>0)custom_Pokazatel_01=(profit-40000)*(3000-max_dd); //=ЕСЛИ(И(C3-40000>0;3000-J3>0);(C3-40000)*СТЕПЕНЬ(3000-J3;1,5)*H3;0) if (VariantPokazatel==1) { if (profit-Find_Profit>0 && Find_MaxDD-max_dd>0)custom_Pokazatel=(profit-Find_Profit)*MathPow((Find_MaxDD-max_dd),1.5)*Mat_Ojidanie/(Find_Profit+max_dd); else custom_Pokazatel=-1; } return(custom_Pokazatel); } //+------------------------------------------------------------------+ //| Очередной проход оптимизации | //+------------------------------------------------------------------+ void OnTesterPass() { string name =""; // Публичное имя/метка фрейма ulong pass =0; // Номер прохода в оптимизации, на котором добавлен фрейм long id =0; // Публичный id фрейма double val =0.0; // Одиночное числовое значение фрейма //--- FrameNext(pass,name,id,val,stat_values); //--- // Print(__FUNCTION__,"(): pass: "+IntegerToString(pass)+"; STAT_PROFIT: ",DoubleToString(stat_values[0],2)); // double a=stat_values[0]; // Print ("a=",a); // Print(DotToComma(DoubleToString(stat_values[0],2))); double SellPribl_from_Pribl=0.0;//Процент прибыльных позиций Sell из всех прибыльных double BuyPribl_from_Pribl=0.0;//Процент прибыльных позиций Buy из всех прибыльных double SellPribl_from_All=0.0;//Процент прибыльных позиций Sell из всех проторгованных double BuyPribl_from_All=0.0;//Процент прибыльных позиций Buy из всех проторгованных double Pribl_from_All=0.0;//Процент прибыльных позиций из всех проторгованных if (stat_values[12]>0) SellPribl_from_Pribl=stat_values[16]/stat_values[12]*100.0; if (stat_values[12]>0) BuyPribl_from_Pribl=stat_values[17]/stat_values[12]*100.0; if (stat_values[11]>0) SellPribl_from_All=stat_values[16]/stat_values[11]*100.0; if (stat_values[11]>0) BuyPribl_from_All=stat_values[17]/stat_values[11]*100.0; if (stat_values[11]>0) Pribl_from_All=stat_values[12]/stat_values[11]*100.0; /*if (pass>0)*/ Printer.Write(IntegerToString(pass), stat_values[0], stat_values[1], stat_values[2], stat_values[3], DoubleToString(stat_values[4],2), DoubleToString(stat_values[5],2), DoubleToString(stat_values[6],2), DoubleToString(stat_values[7],2), stat_values[8], stat_values[9], stat_values[10], stat_values[11], stat_values[12], stat_values[13], stat_values[14], stat_values[15], stat_values[16], stat_values[17], stat_values[18], stat_values[19], DoubleToString(SellPribl_from_Pribl,2), DoubleToString(BuyPribl_from_Pribl,2), DoubleToString(SellPribl_from_All,2), DoubleToString(BuyPribl_from_All,2), DoubleToString(Pribl_from_All,2), DoubleToString(stat_values[20],2) ); //--- Если включена запись результатов оптимизации // CreateOptimizationReport(); /* Print("OnTesterPass"); Printer.Write("OnTesterPass"); */ } //+------------------------------------------------------------------+ //| Завершение оптимизации | //+------------------------------------------------------------------+ void OnTesterDeinit() { FileClose(Statistic); } //+------------------------------------------------------------------+ //| Заполняет массив результатами теста | //+------------------------------------------------------------------+ void GetTestStatistics(double &stat_array[]) { stat_array[0]= TesterStatistics(STAT_INITIAL_DEPOSIT); // Значение начального депозита stat_array[1]= TesterStatistics(STAT_PROFIT); // Чистая прибыль по окончании тестирования, сумма STAT_GROSS_PROFIT и STAT_GROSS_LOSS (STAT_GROSS_LOSS всегда меньше или равно нулю) stat_array[2]= TesterStatistics(STAT_GROSS_PROFIT); // Общая прибыль, сумма всех прибыльных (положительных) трейдов. Значение больше или равно нулю stat_array[3]= TesterStatistics(STAT_GROSS_LOSS); // Общий убыток, сумма всех убыточных (отрицательных) трейдов. Значение меньше или равно нулю stat_array[4]= TesterStatistics(STAT_PROFIT_FACTOR); // Прибыльность – отношение STAT_GROSS_PROFIT/STAT_GROSS_LOSS. Если STAT_GROSS_LOSS=0, то прибыльность принимает значение DBL_MAX stat_array[5]= TesterStatistics(STAT_RECOVERY_FACTOR); // Фактор восстановления – отношение STAT_PROFIT/STAT_BALANCE_DD stat_array[6]= TesterStatistics(STAT_EXPECTED_PAYOFF); // Математическое ожидание выигрыша stat_array[7]= TesterStatistics(STAT_SHARPE_RATIO); // Коэффициент Шарпа stat_array[8]= TesterStatistics(STAT_BALANCE_DD); // Максимальная просадка баланса в деньгах. В процессе торговли баланс может испытать множество просадок, берется наибольшее значение. stat_array[9]= TesterStatistics(STAT_EQUITY_DD); // Максимальная просадка средств в деньгах. В процессе торговли средства могут испытать множество просадок, берется наибольшее значение. stat_array[10]= TesterStatistics(STAT_DEALS); // Количество совершенных сделок stat_array[11]= TesterStatistics(STAT_TRADES); // Количество трейдов stat_array[12]= TesterStatistics(STAT_PROFIT_TRADES); // Прибыльные трейды stat_array[13]= TesterStatistics(STAT_LOSS_TRADES); // Убыточные трейды stat_array[14]= TesterStatistics(STAT_SHORT_TRADES); // Короткие трейды stat_array[15]= TesterStatistics(STAT_LONG_TRADES); // Длинные трейды stat_array[16]= TesterStatistics(STAT_PROFIT_SHORTTRADES); // Короткие прибыльные трейды stat_array[17]= TesterStatistics(STAT_PROFIT_LONGTRADES); // Длинные прибыльные трейды stat_array[18]= TesterStatistics(STAT_PROFITTRADES_AVGCON); // Средняя длина прибыльной серии трейдов stat_array[19]= TesterStatistics(STAT_LOSSTRADES_AVGCON); // Средняя длина убыточной серии трейдов //stat_array[20]= TesterStatistics(STAT_CUSTOM_ONTESTER); // Custom stat_array[20]= CustomPokazatelf(1); // Custom } 代码中有一个小故障,也可能不是代码中的故障--有时最后一帧没有全部出现,但并不总是这样,有时编号可以重合。总的来说,我认为这是一个程序故障,但如果你看到代码中的错误,请告诉我! 而在哪些EA中--是的,你可以,而且在所有这些都要进行优化。 Georgiy Merts 2018.05.05 12:24 #409 嗯... 你是否不仅在统计文件中保存每个测试运行,而且还在MQD文件的框架中保存?我说对了吗? 另外--我想知道,如果测试者的通过是在云端,这种输出到文件的方式在OnTesterPass()上如何运作?在一个框架中,它将被写入,但在一个文件中,我怀疑,不是。 阿列克谢,你将淹没在数据流中。 但是,如果这对你来说非常重要--我可以把你的代码放在TC联盟中。 你的代码很透明,也很聪明,所以几乎不需要改动就能适应,我只需要稍作修改,让所有的结构都在我的OOP-classes里面。 嗯...我会做的,今天或明天我会把你的代码放在联盟中...不过,我看不出这有什么用。有很多数字,而我们不能从树上看到森林。 Aleksey Vyazmikin 2018.05.05 12:34 #410 Georgiy Merts:嗯... 你是否不仅在统计文件中保存每个测试运行,而且还在MQD文件的框架中保存?我说对了吗? 阿列克谢,你将淹没在数据流中。 但是,如果这对你来说非常重要--我可以把你的代码放在TC联盟中。 你的代码相当透明和聪明,所以它几乎不需要改动就能适应,我只需要进行一些微调,使所有的结构都在我的OOP-classes里面。 嗯...我会做的,今天或明天我会把你的代码放在联盟中...不过我看不出它有什么用处。有很多数字,而我们不能从树上看到森林。需要帧来使它全部从网络中收集--优化器(代理),我不是用一台电脑。因此,这些代码不是我从头开始的--我从关于优化的文章中部分地挖出了它,并根据我的需要进行了调整。 在专家顾问中,你可以制作一个外部变量,根据这个变量来写出统计数据或不写。 而且,你的EA中的外部变量很少,不像我的怪物,所以你可以(需要)一次性写出变量的值--这将在最终文件中增加几行,但将允许在不同层面上工作。现在我只是用手将这些值添加到文件中,即我在片段中优化的内容。 1...343536373839404142434445464748...54 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
免费信号--经过重新优化。
目前有6个联盟TS在运行,在我看来是最理想的。
目前中大联赛最受欢迎的结果在前几页。
目前的TC为过度优化。
我把USDJPY EMAFlatDTS
优化期17年5月4日至18年5月15日,从17年10月4日开始向前推进
(由于我过度优化--我将纠正这个帖子,并重新优化TC,从最后一个开始,到第一个)
免费信号- 重新开放。
目前有6个联盟TC在运行,在我看来,这是最理想的。
也许你仍然可以让它将优化结果写入文件?只是标准指标没有给我,我想其他人也没有给多少。
这是我的数据集,它给出了优化器,但我也计划扩大它。
也许你仍然可以使它能够将优化结果写入文件?只是我和我认为其他人都没有从标准指标中得到什么。
这里是我的一组由优化器提供的数据,但我也计划扩大它。
当然,我的专家顾问里面有所有这些数据。你是否建议我在每次通过后都生成这样一个文件并将其放在文件区?
但我相信,很多人都会看着它?
但是,说,在你的文件 - 我个人不认为这个数字 - 只是 "不能看到森林的树木"。我只看 "恢复系数 "和 "失败 "两栏。
所有其他数据对我来说都是多余的,它们没有告诉我任何新东西。我认为有必要在专家中设置尽可能少的参数,以及尽可能少的评价指标。我想把所有东西都放在一个参数 "质量 "中,但我看到需要另一个参数 "可持续性"。
你说 "这些是我所输出的参数,我打算扩大这组参数"--目标是什么?
给我看一个更具体的例子--你会在哪里使用至少三分之一的这些列,你的输出?你就像邻近话题的参与者一样,写了一个美妙的画布引擎,在图表上显示美妙的视觉效果......但他没有考虑到这些功能的实际用途。获得任何数据都应该有某种特定的用途,应该是选择或TC运作的特定方法的一部分。而 "只是为了拥有"...这些资源最好用在外部系统或新系统的额外再优化上。
当然,在想法中,有可能会打扰到输出文件。好吧,如果至少会有几张票认为这三个参数--质量、缩减和SL队列是不够的--好吧,制作这样一个文件,并将在报告中显示其数据。
目前的TC为过度优化。
我有一个GBPNZD EMAFlatSAR
17年5月5日至18年5月5日期间,从17年10月5日开始向前推进。
受宠的现况
(所有的TC都是在没有MM的情况下,以最小的批量进行演示工作)
按质量划分的最佳20名。
质量前十名的图表。
最好的20个通过平衡。
按平衡度计算的最佳10个图表。
提醒一下,交易系统联盟专家(MT4和MT5的版本)是在Yandex-disk 上。档案中还附有一份关于该联盟原则的简要说明和在该联盟工作的TS名单。
默认情况下,该联盟与一个TS(EURUSD ChnTrendSAR, magik 220141)合作,没有任何限制。
其他TS只在策略测试器中工作。对于他们在模拟或真实账户上的工作,需要注册码。注册码,有效期为3个月,并与账号相连接,用于优化个别联盟系统(在四核Core i5上使用2-5小时)。
当然,我在专家顾问里面有所有这些数据。你是否建议在每次通过后生成这样一个文件,并把它扔到文件区?
但我相信,很多人都会看的?
你说,"这些是我显示的参数,而且我仍然打算扩大这套参数"--目的是什么?
给我看一个更具体的例子--你会在哪里使用你输出的至少三分之一的列?
当然,在理论上,文件的输出是可能的。好吧,如果至少会有几张票认为这三个参数--质量、下沉和SL队列是不够的--好吧,制作这样一个文件,并将在报告中显示其数据。
让我这样说吧:我突然很想知道我在优化什么样的专家顾问,但不知道他们的具体算法,我决定关注他们的表现,突然发现由于统计指标的贫乏,我无法评估结果。
你说项目参与者应该自己进行选择,但根据现有的数据,这是不现实的。
现在我正在研究一个机械评估系统--主要想法是平衡所有的指标,而不仅仅是它们的绝对值,当然绝对值 也同样重要。
例如,我经常使用 "收入"-"最大连续利润 "*3-"支出"-"最大连续亏损 "*3的公式来估计利润,如果我们仍然处于加法,我们就进一步看,但在这个阶段我们也可以筛选出很多。
而且,缩水我只在自然条件下感知,因为百分比取决于缩水时的累计利润,但这不能说明什么,因为不能保证下一次这种缩水也会发生,只是在累计利润之后。例如,在启动资金为1000的情况下,缩减10%是10个单位,如果10%,利润为2000,就已经是30个单位了,同意这个数字没有可比性。百分比的意义只在于如果每天提取资金,但如果你实施它,那么其他的指标就会蠕动,这些指标是自动计算的,那么你自己就有每个数字,这很麻烦。
如果你以前没有做过,我可以给你我的代码,用于将数据写入文件。
如果你以前没有做过,我可以给你我的代码,用于将数据写入文件。
你不应该放弃Skype。你可以看一下代码,并找出最好的方法来做。
来吧,你需要什么指标?
我的理解是,在OnTester()函数 中,专家顾问应该在什么时候输出? 我将为您提供这样的功能。它将输出一个CSV文件,可以很容易地在Excel中打开。
我们谈论的是什么专家顾问,是联盟的主要专家顾问,还是针对不同TS的单独专家顾问?
你不应该放弃Skype。你可以看一下代码,研究一下如何最好地做到这一点。
来吧,你需要什么指标?
在什么时候应该由专家顾问输出? 据我所知--在函数OnTester() 中? 我将为您提供这样一个功能。
哦,我们在这里谈论的是什么EA--联盟的主要专家顾问,还是针对不同TS的独立EA?
我是这样安排的
代码中有一个小故障,也可能不是代码中的故障--有时最后一帧没有全部出现,但并不总是这样,有时编号可以重合。总的来说,我认为这是一个程序故障,但如果你看到代码中的错误,请告诉我!
而在哪些EA中--是的,你可以,而且在所有这些都要进行优化。
嗯...
你是否不仅在统计文件中保存每个测试运行,而且还在MQD文件的框架中保存?我说对了吗?
另外--我想知道,如果测试者的通过是在云端,这种输出到文件的方式在OnTesterPass()上如何运作?在一个框架中,它将被写入,但在一个文件中,我怀疑,不是。
阿列克谢,你将淹没在数据流中。
但是,如果这对你来说非常重要--我可以把你的代码放在TC联盟中。
你的代码很透明,也很聪明,所以几乎不需要改动就能适应,我只需要稍作修改,让所有的结构都在我的OOP-classes里面。
嗯...我会做的,今天或明天我会把你的代码放在联盟中...不过,我看不出这有什么用。有很多数字,而我们不能从树上看到森林。
嗯...
你是否不仅在统计文件中保存每个测试运行,而且还在MQD文件的框架中保存?我说对了吗?
阿列克谢,你将淹没在数据流中。
但是,如果这对你来说非常重要--我可以把你的代码放在TC联盟中。
你的代码相当透明和聪明,所以它几乎不需要改动就能适应,我只需要进行一些微调,使所有的结构都在我的OOP-classes里面。
嗯...我会做的,今天或明天我会把你的代码放在联盟中...不过我看不出它有什么用处。有很多数字,而我们不能从树上看到森林。
需要帧来使它全部从网络中收集--优化器(代理),我不是用一台电脑。因此,这些代码不是我从头开始的--我从关于优化的文章中部分地挖出了它,并根据我的需要进行了调整。
在专家顾问中,你可以制作一个外部变量,根据这个变量来写出统计数据或不写。
而且,你的EA中的外部变量很少,不像我的怪物,所以你可以(需要)一次性写出变量的值--这将在最终文件中增加几行,但将允许在不同层面上工作。现在我只是用手将这些值添加到文件中,即我在片段中优化的内容。