为什么Metaquotes推MT5而不是MT4? - 页 3

 
Stanislav Korotky:

以及使用哪些MT4Orders函数--异步(OrderSendAsync, OrderCloseAsync)或不使用?这可能就是问题所在。

我没有研究它,只是连接了它,检查了速度,与mql5上的原始代码进行了比较,删除了原始代码,只留下了mql4代码的库。

 
Vitaly Muzichenko:

我不明白,只是把它插上,检查了速度,与mql5上的原始代码进行了比较,删除了原始代码,只留下有mql4代码的库

我不是问库的细节,而是问它是如何被使用的,以了解这个问题。一般来说,我给了一个小费。

 
Stanislav Korotky:

我不是在问图书馆的内部情况,我是在问它是如何被使用的,看看是什么导致了这个问题。总之,我给了你一个提示。


问题不在于如何使用这个图书馆。

问题是,我们在MT4中没有复杂的头寸,我们有订单。因此,我们必须关闭一打订单才能得到我们刚才展示的效果。

顺便说一下,在测试器中没有这种效果。而我们的演示中没有这个内容。但我们在真实的账户上有它。

在这种情况下,代码从mql4迁移到mql5再迁移到 "1对1 "是不可能的。

在mql4上的订单工作必须根据mql4的可能性充分组织。

这里没有办法判断。

维塔利-穆齐琴科

MT4的唯一大缺点是...

只是mql4有一些功能,mql5有其他功能。在这种特殊情况下,mql5具有优势。但这个问题可以用mql4正常解决。

 
Andrey F. Zelinsky:

问题不在于如何使用这个图书馆。

问题是,在MT4中,没有总头寸,有的是订单。而关闭一打的订单,就有显示的效果。

顺便说一下,在测试器中没有这种效果。而我们的演示中没有这个内容。但我们在真实的账户上有它。

在这种情况下,代码从mql4迁移到mql5再迁移到 "1对1 "是不可能的。

在mql4上的订单工作必须根据mql4的可能性充分组织。

这里没有办法判断。

只是mql4有一些功能,mql5有其他功能。在这种特殊情况下,mql5具有优势。但这个问题在mql4上可以正常解决。

在MT4中,什么可以被加速?

 if(OT==OP_BUY) {
   error=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),slippage,Blue);
   if(!error) Print("Error ",GetLastError());
 }
 if(OT==OP_SELL) {
   error=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),slippage,Red);
   if(!error) Print("Error ",GetLastError());
 }
 
Andrey F. Zelinsky:

问题不在于如何使用这个图书馆。

问题是,在MT4中,没有总头寸,有的是订单。而关闭一打的订单,就有显示的效果。

将MT4与MT5的对冲账户进行比较才是合理的(在这种情况下,它就是这样一个交易系统)。而这与总的立场有什么关系呢?在MT5中,将有完全相同的一堆头寸=等同于四级订单。总之,你又把话题从问题上引开了。

 
Vitaly Muzichenko:

在MT4中,什么可以被加速?

我在上面建议用XXXXAync函数代替。不知道是否会有帮助,但为什么不试一试呢?

 
Stanislav Korotky:

我在上面建议用XXXXAync函数代替。不知道是否会有帮助,但为什么不试一试呢?

这可能有点偏。我在MT5中使用这段代码没有问题,使用<MT4Orders>, 一切都能立即关闭。

在MT4中存在一个问题,但那里由于明显的原因而不需要<MT4Orders>, 有一个最简单的四重代码。我有一百多个,我有截图。有时,它对我有利地滑动,而且很多时候,如果收盘已经开始,而价格已经走高。我不知道这与什么有关,但可能是由于发送订单的顺序问题。

 

关于交易、自动交易系统和交易策略测试的论坛

为什么Metaquotes要滑移MT5而不是MT4?

Vitaly Muzichenko, 2017.09.23 20:50

在MT4中,什么可以被加速?

 if(OT==OP_BUY) {
   error=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),slippage,Blue);
   if(!error) Print("Error ",GetLastError());
 }
 if(OT==OP_SELL) {
   error=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),slippage,Red);
   if(!error) Print("Error ",GetLastError());
 }

至少是这样。

  • 摒弃标签会加快代码的速度。
  • 价格正常化并不总是需要的。即使得到的Ask或Bid价格印有更多的小数位,也不意味着规范化会带来任何积极的结果。

价格值的规范化只有在对该价格进行数学运算的情况下才有必要。当一个价值被添加到价格或从价格中减去时。

 
Vitaly Muzichenko:

可能有点偏。我在MT5中使用这段代码没有问题,使用<MT4Orders>, 一切都能立即关闭。

在MT4中存在一个问题,但那里由于明显的原因而不需要<MT4Orders>, 有一个最简单的四重代码。我有一百多个,我有截图。有时,它对我有利地滑动,而且很多时候,如果收盘已经开始,而价格已经走高。我不知道这有什么关系,但可能是由于发送订单的顺序问题。

是的,这是我的错--我是哑巴。

解决方案的变体如下:我不关闭几个订单,而是放置一个计数器的总量,然后多次调用OrderCloseBy,直到相互破坏。

 
Stanislav Korotky:

解决办法如下:不要关闭几个订单,而是放一个计数器的总量,然后多次调用OrderCloseBy,直到相互破坏。

不幸的是,这种变体只对一个符号有效。


奇怪的是,多年来没有人在MT4的kodobase中加入异步订单功能。

原因: