MT4-测试仪 VS MT5-测试仪 - 页 3 1234567891011 新评论 Renat Fatkhullin 2017.05.08 09:37 #21 fxsaber: 证明这不是证据。你错了。 我的论断是正确的--上述专家只是在测试对交易历史 的访问。 fxsaber 2017.05.08 09:47 #22 Renat Fatkhullin:这不是证据。你错了。 你的错误是什么?我甚至检查了自己,在有历史记录功能的地方设置断点,运行CTRL+F5进行调试。所有的工作都做得很干净。Renat Fatkhullin: 我的论断成立--上述专家只测试访问交易历史。你已经妄下结论了。 Georgiy Merts 2017.05.08 10:01 #23 我不确定这种比较是否有意义--云计算 否定了MT4测试器的所有速度优势。 而且,此外,在这种情况下,确实,EA是在测试纯粹的数据访问速度。但我不认为这对大多数EA来说是一个瓶颈。在MT5引入对冲头寸的账户后,我个人认为MT4对我来说根本没有任何优势。我使用跨平台库只是因为我的真实账户上有MT4。 我个人唯一怀念的是--指针或数组引用。由于某些原因,我不需要在指标中复制数据。MQL5拥有其他一切。 Распределенные вычисления в сети MQL5 Cloud Network cloud.mql5.com Заработать деньги, продавая мощности своего компьютера для сети распределенных вычислений MQL5 Cloud Network Georgiy Merts 2017.05.08 10:02 #24 fxsaber: 你妄下结论。 还有什么呢?查询数据,并将其转储到一个文件中。没有其他动作--你认为这个EA在测试什么? fxsaber 2017.05.08 10:04 #25 fxsaber:ZS 不是所有的运行都完全匹配。所以三者中肯定有一个在说谎(MT4+TDS、MT5、MT4Orders)。我们将不得不去寻找它。感谢子,罪魁祸首已经找到了,它总是在有机会比较的时候发生。专家顾问显示错误// MQL4&5-code #property strict #ifdef __MQL5__ #define Bid (SymbolInfoDouble(_Symbol, SYMBOL_BID)) #define Ask (SymbolInfoDouble(_Symbol, SYMBOL_ASK)) #endif // __MQL5__ #define PRINT(A) Print(#A + " = " + (string)(A)); void OnTick() { static bool FirstRun = true; static const double PrevBid = Bid; static const double PrevAsk = Ask; if (FirstRun) { PRINT((PrevBid != Bid) || (PrevAsk != Ask)) FirstRun = false; } }MT42017.05.08 10:57:33.056 2017.04.10 00:00:08 TDS_Test EURUSD,M1: (PrevBid!=Bid)||(PrevAsk!=Ask) = falseMT52017.05.08 11:01:31.266 2017.04.10 00:00:08 (PrevBid!=Bid)||(PrevAsk!=Ask) = true fxsaber 2017.05.08 10:09 #26 George Merts: 还有什么呢?的数据请求,并将其保存到一个文件中。没有进行其他操作--你认为这个EA在测试什么? 我建议你阅读整个讨论,那么这种问题甚至不会出现。乔治-默茨。在MT5中引入带对冲头寸的账户后,我个人认为MT4没有任何优势。这条线因其集中了建设性的内容而显得有些突出。所以个人喜好最好在这里 讨论,比如说。 Renat Fatkhullin 2017.05.08 10:41 #27 fxsaber: 错误在哪里?我甚至检查了自己,在有历史功能的地方都设置了断点,并通过CTRL+F5进行调试。这一切都进行得很干净。你妄下结论。总而言之。历史工作正如火如荼地进行着,交易在历史扫描后结束。使用MT4Orders.mqh--这是对实验的纯洁性的终结。畸形的库有开销,写得很恶心,无法阅读。有人严重地证明了他们的懒惰。写作for(i=200 000; i>=0; i--)OrderSelect在每一个刻度 上都是疯狂的,并且试图重复关于日本锯子和俄罗斯男人的笑话。 for(int i=OrdersTotal()-1; i>=0; i--) if(OrderSelect(i,SELECT_BY_POS) && ((!TradeTime) || (OrderProfit()>0) || ((OrderType() == OP_BUY) && (PriceToInteger(OrderOpenPrice()) - IntBid >= Limit)) || ((OrderType() == OP_SELL) && (IntAsk - PriceToInteger(OrderOpenPrice()) >= Limit)))) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0); 整个测试完全是为了第3点的循环而写的。 粗略地说,我们在测试中采取了1 800 000个点,其中200 000个交易在5天内被打开。让我们把它简化为900 000 ticks,其中100 000个订单在历史上被扫描,我们得到900 000 000 * 100 000 = 900 000 000 OrderSelect调用(有库的溢出)。被测试的正是9000亿次OrderSelect调用。 而其中99.99%的电话是绝对不必要的,只是为了证明 "滞后"。 如果你想做一个干净的测试,写两个相同的干净的例子,不需要库。这将保证干净,没有为了兼容性而内置的开销。我们已经优化了对历史的访问,并完全取消了这个演示。它是故意这样写的。 fxsaber 2017.05.08 11:16 #28 Renat Fatkhullin:总而言之。历史工作正在如火如荼地进行,历史扫描后的交易已经结束 在哪里?使用MT4Orders.mqh--是为了结束实验的纯洁性。 这是一个可怕的库,其开销以令人厌恶和无法阅读的方式编写。 这就是我。写作for(i=200 000; i>=0; i--)OrderSelect在每一个刻度 上都是疯狂的,试图重复关于日本锯子和俄罗斯男人的笑话。 你已经完全忘记了MQL4。这里没有提到历史。整个测试完全是为了第3点的循环而写的。 99.99%的挑战是完全不必要的,纯粹是为了演示 "刹车"。 这个例子不是编造的,来源中有一个与原文 的链接。这是一个最著名和最古老的黄牛党。如果你想做一个干净的测试,写两个相同的干净的例子,不需要库。这样就能保证清洁度,而且不会因为兼容性的原因而内置开销。我希望能够对两个测试者进行比较。请看各自的优点和缺点。同时,比较也是识别虫子的最有效方法之一。这条线从展示两个测试者的原始数据的身份开始。这是基础,没有这个基础我们什么都做不了。然后大家可以选择一个专家顾问进行测试。我们已经优化了对历史的访问,完全否定了这种示范。它是故意这样写的。 多亏了别人的申请,SD才得以如此。建设性的批评是一件好事。 Renat Fatkhullin 2017.05.08 11:23 #29 在历史上工作是OrderSelect和类似的OrderXXXX命令。不要假装你不明白这一点。特别是如果你已经写了库。我没有忘记MQL4,它在那里也能用历史记录。为20万个交易写一个历史扫描器,深入到每个tick,并忘记了合理退出循环的条件?这就是所谓的--故意玩弄俄罗斯男人。也不要参考一些黄牛党。这个循环是故意写得如此愚蠢的。甚至在测试的5天内,除了数以千亿计的OrderXXX函数被测试,其中99.99%都不需要被调用。 问题是,你开始用绝对准确的说法来争论:"整个专家顾问的例子是这样写的,它只做一件事--在每一个tick上扫描整个交易历史",尽管你很清楚为什么你故意写了这个测试。毕竟,你可以用你的手一动就把99.99%的愚蠢扫描去除,但那样的话,测试就会失败。 fxsaber 2017.05.08 11:28 #30 Renat Fatkhullin:处理历史的工作是OrderSelect和类似的OrderXXXX命令。不要假装你不了解它。特别是如果你已经写了库。我没有忘记MQL4,它在那里也能用历史记录。为20万个交易写一个历史扫描器,深入到每个tick,并忘记了合理退出循环的条件?这就是所谓的--故意玩弄俄罗斯男人。也不要提及一些黄牛党。这个循环是故意写的。而即使在5天内,它所测试的只是数以千亿计的OrderXXXXX函数,其中99.99%不需要被调用。 我不会争论。我请熟悉MQL4的论坛用户审查这个简短的源代码,并解释Renat的意思。 关于交易、自动交易系统和策略测试的论坛 MT4-测试仪 VS MT5-测试仪 fxsaber, 2017.05.08 01:11 EA// Idea - https://www.mql5.com/ru/code/7464 #property strict input int Shift = 3; input int Limit = 18; input double Lots = 0.1; int PriceToInteger( const double Price ) { return((int)(Price / _Point + 0.1)); } void OnTick() { static int PrevBid = PriceToInteger(Bid); static int PrevAsk = PriceToInteger(Ask); const int IntBid = PriceToInteger(Bid); const int IntAsk = PriceToInteger(Ask); const bool TradeTime = (TimeCurrent() % (24 * 60 * 60) < D'1970.01.01 23:50'); // exclude swaps if (TradeTime && (IntAsk - IntBid < Limit)) { if ((IntBid - PrevBid >= Shift)) OrderSend(_Symbol, OP_SELL, Lots, Bid, 0, 0, 0); if (PrevAsk - IntAsk >= Shift) OrderSend(_Symbol, OP_BUY, Lots, Ask, 0, 0, 0); } PrevBid = IntBid; PrevAsk = IntAsk; for (int i = OrdersTotal() - 1; i >= 0; i--) if (OrderSelect(i, SELECT_BY_POS) && ((!TradeTime) || (OrderProfit() > 0) || ((OrderType() == OP_BUY) && (PriceToInteger(OrderOpenPrice()) - IntBid >= Limit)) || ((OrderType() == OP_SELL) && (IntAsk - PriceToInteger(OrderOpenPrice()) >= Limit)))) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0); }我一定是搞错了,但我看不出MT4的历史工作是怎么回事。请帮助。 1234567891011 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
证明
这不是证据。
你错了。
我的论断是正确的--上述专家只是在测试对交易历史 的访问。这不是证据。
你错了。
我的论断成立--上述专家只测试访问交易历史。
你已经妄下结论了。
我不确定这种比较是否有意义--云计算 否定了MT4测试器的所有速度优势。
而且,此外,在这种情况下,确实,EA是在测试纯粹的数据访问速度。但我不认为这对大多数EA来说是一个瓶颈。
在MT5引入对冲头寸的账户后,我个人认为MT4对我来说根本没有任何优势。我使用跨平台库只是因为我的真实账户上有MT4。
我个人唯一怀念的是--指针或数组引用。由于某些原因,我不需要在指标中复制数据。MQL5拥有其他一切。
你妄下结论。
ZS 不是所有的运行都完全匹配。所以三者中肯定有一个在说谎(MT4+TDS、MT5、MT4Orders)。我们将不得不去寻找它。
感谢子,罪魁祸首已经找到了,它总是在有机会比较的时候发生。
专家顾问显示错误
MT4
MT5
还有什么呢?的数据请求,并将其保存到一个文件中。没有进行其他操作--你认为这个EA在测试什么?
在MT5中引入带对冲头寸的账户后,我个人认为MT4没有任何优势。
这条线因其集中了建设性的内容而显得有些突出。所以个人喜好最好在这里 讨论,比如说。
错误在哪里?我甚至检查了自己,在有历史功能的地方都设置了断点,并通过CTRL+F5进行调试。这一切都进行得很干净。
你妄下结论。
总而言之。
粗略地说,我们在测试中采取了1 800 000个点,其中200 000个交易在5天内被打开。让我们把它简化为900 000 ticks,其中100 000个订单在历史上被扫描,我们得到900 000 000 * 100 000 = 900 000 000 OrderSelect调用(有库的溢出)。被测试的正是9000亿次OrderSelect调用。
而其中99.99%的电话是绝对不必要的,只是为了证明 "滞后"。
如果你想做一个干净的测试,写两个相同的干净的例子,不需要库。这将保证干净,没有为了兼容性而内置的开销。
我们已经优化了对历史的访问,并完全取消了这个演示。它是故意这样写的。
总而言之。
99.99%的挑战是完全不必要的,纯粹是为了演示 "刹车"。
如果你想做一个干净的测试,写两个相同的干净的例子,不需要库。这样就能保证清洁度,而且不会因为兼容性的原因而内置开销。
我希望能够对两个测试者进行比较。请看各自的优点和缺点。同时,比较也是识别虫子的最有效方法之一。
这条线从展示两个测试者的原始数据的身份开始。这是基础,没有这个基础我们什么都做不了。然后大家可以选择一个专家顾问进行测试。
我们已经优化了对历史的访问,完全否定了这种示范。它是故意这样写的。
在历史上工作是OrderSelect和类似的OrderXXXX命令。不要假装你不明白这一点。特别是如果你已经写了库。
我没有忘记MQL4,它在那里也能用历史记录。
为20万个交易写一个历史扫描器,深入到每个tick,并忘记了合理退出循环的条件?这就是所谓的--故意玩弄俄罗斯男人。
也不要参考一些黄牛党。这个循环是故意写得如此愚蠢的。甚至在测试的5天内,除了数以千亿计的OrderXXX函数被测试,其中99.99%都不需要被调用。
问题是,你开始用绝对准确的说法来争论:"整个专家顾问的例子是这样写的,它只做一件事--在每一个tick上扫描整个交易历史",尽管你很清楚为什么你故意写了这个测试。毕竟,你可以用你的手一动就把99.99%的愚蠢扫描去除,但那样的话,测试就会失败。
处理历史的工作是OrderSelect和类似的OrderXXXX命令。不要假装你不了解它。特别是如果你已经写了库。
我没有忘记MQL4,它在那里也能用历史记录。
为20万个交易写一个历史扫描器,深入到每个tick,并忘记了合理退出循环的条件?这就是所谓的--故意玩弄俄罗斯男人。
也不要提及一些黄牛党。这个循环是故意写的。而即使在5天内,它所测试的只是数以千亿计的OrderXXXXX函数,其中99.99%不需要被调用。
我不会争论。我请熟悉MQL4的论坛用户审查这个简短的源代码,并解释Renat的意思。
关于交易、自动交易系统和策略测试的论坛
MT4-测试仪 VS MT5-测试仪
fxsaber, 2017.05.08 01:11
EA
我一定是搞错了,但我看不出MT4的历史工作是怎么回事。请帮助。