MetaTrader 5策略测试器:缺陷,缺陷,改进建议 - 页 48 1...414243444546474849505152535455...84 新评论 fxsaber 2020.01.11 20:41 #471 为了在点数模式中获得圣杯,用一个标记来关闭整个头寸量 的亏损头寸,用0.01手来关闭盈利的头寸。 例子。 #include <MT4Orders.mqh> #define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK) const bool Init = EventSetTimer(100); void OnTimer() { while (OrdersTotal()) if (OrderSelect(0, SELECT_BY_POS)) OrderClose(OrderTicket(), (OrderProfit() > 0) ? 0.01 : OrderLots(), OrderClosePrice(), 0); OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0); } 结果 fxsaber 2020.01.12 22:28 #472 关于交易、自动交易系统和策略测试的论坛 图书馆:SingleTesterCache fxsaber, 2020.01.12 23:20 当前版本的tst-format不包含以下数据 时间,以毫秒计。 PositionID。 魔法号码。 这就对使用场景进行了限制。 fxsaber 2020.01.12 23:02 #473 关于交易、自动交易系统和策略测试的论坛 图书馆:SingleTesterCache fxsaber, 2020.01.13 00:01 重复播放多个错误。我们在一个对冲账户上启动策略测试器中的专家顾问。 #include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006 #define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK) #define PAUSE 100000 void OnTick() { static bool FirstRun = true; if (FirstRun) { OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0); Sleep(PAUSE); OrderSend(_Symbol, OP_BUY, 2, Ask, 0, 0, 0); Sleep(PAUSE); if (OrderSelect(0, SELECT_BY_POS)) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0); Sleep(PAUSE * 2); if (OrderSelect(0, SELECT_BY_POS)) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0); Sleep(PAUSE * 2); TesterWithdrawal(100); FirstRun = false; } } void OnDeinit( const int ) { const int Total = OrdersHistoryTotal(); for (int i = 0; i < Total; i++) if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { OrderPrint(); Print(OrderTicketID()); // MT5-PositionID } } 我们得到以下结果 2020.01.08 23:59:58 #1 2020.01.01 00:00:00 balance 0.00 0.00000 0.00000 0.00000 2020.01.01 00:00:00 0.00000 0.00 0.00 100000.00 0 2020.01.08 23:59:58 0 2020.01.08 23:59:58 #4 2020.01.02 06:00:00 buy 1.00 EURUSD 1.12137 0.00000 0.00000 2020.01.02 06:03:20 1.12132 -3.56 0.00 -4.46 0 2020.01.08 23:59:58 2 2020.01.08 23:59:58 #5 2020.01.02 06:01:40 buy 2.00 EURUSD 1.12137 0.00000 0.00000 2020.01.02 06:06:40 1.12129 -7.14 0.00 -14.27 0 2020.01.08 23:59:58 3 2020.01.08 23:59:58 #6 2020.01.02 06:10:00 balance 0.00 0.00000 0.00000 0.00000 2020.01.02 06:10:00 0.00000 0.00 0.00 -100.00 withdrawal 0 2020.01.08 23:59:58 0 然后我们用脚本读取相应的tst文件。 #include <fxsaber\SingleTesterCache\SingleTesterCache.mqh> // https://www.mql5.com/ru/code/27611 #include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/ru/code/26132 void OnStart() { uchar Bytes2[]; if (MTTESTER::GetLastTstCache(Bytes2) != -1) // Если получилось прочитать последнюю кеш-запись одиночного прогона { const SINGLETESTERCACHE SingleTesterCache(Bytes2); // Загоняем ее в соответствующий объект. for (int i = 0; i < ArraySize(SingleTesterCache.Positions); i++) Print(SingleTesterCache.Positions[i].ToString()); } } 它将打印位置上的数据 id = 0 mfe = 0.0 mae = -8.029999999999999 profit = -4.46 lifetime = 00:03:20 id = 0 mfe = 0.0 mae = -21.4 profit = -14.27 lifetime = 00:05:00 id = 0 mfe = 0.0 mae = 0.0 profit = 0.0 lifetime = 00:00:00 如果我们比较这个帖子中的所有内容,我们会看到以下错误。 零ID,而不是正确的ID。 计算利润时不考虑佣金和互换。 退出交易被错误地包括在关闭交易头寸的数量中。 traveller00 2020.01.13 14:59 #474 调试器的功能不全。与标准调试器相比,缺少什么,按缺点降序排列。 1.记忆修改。你可以查看变量,但编辑似乎是不可能的。 2.条件性断点。比如如果变量test=10就停止。 3.有可能移动执行。换句话说,你可以直接点击某一行,告诉它从那里执行。换句话说,点击一条线,然后说:"现在从这里跑"。 4. 已经运行的脚本/顾问/指标的附件。或者至少能够在崩溃时附上,这样就容易分析了。 Andrey Pogoreltsev 2020.01.13 16:26 #475 traveller00: 调试器的功能不全。与标准调试器相比,缺少什么,按缺点降序排列。 2.条件性断点。比如如果变量test=10就停止。 if (smth) { int a; } traveller00 2020.01.13 17:00 #476 是的,我同意,通过重新组装,你几乎可以达到任何目的。第4点除外。4.但我还是希望在调试器中看到它,因为它是调试器的一套标准函数。 fxsaber 2020.01.14 09:52 #477 关于交易、自动交易系统和策略测试的论坛 图书馆:SingleTesterCache fxsaber, 2020.01.14 10:49 我现在使用tst-files而不是set-files。你可以在它们之间快速切换,不仅有输入参数,还有完整的回测。 遗憾的是,由于tst中缺乏毫秒级的数据,我们现在无法将不同的TS组合成一个完整的组合。 我希望开发者将开始最大限度地使用现有的领域。 INT64 TradeDeal::time_create; // время создания записи INT64 TradeOrder::time_setup; // время приёма ордера от клиента в систему INT64 TradeOrder::time_done; // время снятия завки 通过将时间值以毫秒而不是秒的形式写在那里。 一般来说,在实践中我们无法展示使用tst的所有酷,因为tst有一些轻微的缺点。这一点可以 得到纠正。 fxsaber 2020.01.15 10:15 #478 报告中出现了TesterWithdrawal,但TesterDeposit却不见了。 Grozir 2020.01.15 12:53 #479 如何理解这幅画。优化图 显示了5000左右的高峰值。但在优化表中,最大值为4670。最佳通行证的参数在哪里? 附加的文件: 8c97so2_7-1.jpg 184 kb fxsaber 2020.01.15 13:30 #480 Grozir: 如何理解这幅画。优化图 显示了5000左右的高峰值。而在优化表中,最大值为4670。最佳通行证的参数在哪里? 对 "结果 "栏进行排序。 1...414243444546474849505152535455...84 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
为了在点数模式中获得圣杯,用一个标记来关闭整个头寸量 的亏损头寸,用0.01手来关闭盈利的头寸。
例子。
结果
关于交易、自动交易系统和策略测试的论坛
图书馆:SingleTesterCache
fxsaber, 2020.01.12 23:20
当前版本的tst-format不包含以下数据
关于交易、自动交易系统和策略测试的论坛
图书馆:SingleTesterCache
fxsaber, 2020.01.13 00:01
重复播放多个错误。我们在一个对冲账户上启动策略测试器中的专家顾问。
我们得到以下结果
然后我们用脚本读取相应的tst文件。
它将打印位置上的数据
如果我们比较这个帖子中的所有内容,我们会看到以下错误。
调试器的功能不全。与标准调试器相比,缺少什么,按缺点降序排列。
1.记忆修改。你可以查看变量,但编辑似乎是不可能的。
2.条件性断点。比如如果变量test=10就停止。
3.有可能移动执行。换句话说,你可以直接点击某一行,告诉它从那里执行。换句话说,点击一条线,然后说:"现在从这里跑"。
4. 已经运行的脚本/顾问/指标的附件。或者至少能够在崩溃时附上,这样就容易分析了。
调试器的功能不全。与标准调试器相比,缺少什么,按缺点降序排列。
2.条件性断点。比如如果变量test=10就停止。
关于交易、自动交易系统和策略测试的论坛
图书馆:SingleTesterCache
fxsaber, 2020.01.14 10:49
我现在使用tst-files而不是set-files。你可以在它们之间快速切换,不仅有输入参数,还有完整的回测。
遗憾的是,由于tst中缺乏毫秒级的数据,我们现在无法将不同的TS组合成一个完整的组合。
我希望开发者将开始最大限度地使用现有的领域。
通过将时间值以毫秒而不是秒的形式写在那里。
一般来说,在实践中我们无法展示使用tst的所有酷,因为tst有一些轻微的缺点。这一点可以 得到纠正。
报告中出现了TesterWithdrawal,但TesterDeposit却不见了。
如何理解这幅画。优化图 显示了5000左右的高峰值。而在优化表中,最大值为4670。最佳通行证的参数在哪里?
对 "结果 "栏进行排序。