mql5语言的特点、微妙之处以及技巧 - 页 191

 
template <typename T>
void func(const T &IntOrArray) {} 

void OnStart()
{
  int a=0;
  char b[3]={};
  func(a);
  func(b);	//'b' - parameter conversion not allowed
}

它抛出这个错误是一个错误还是一个芯片?

C++在这方面吃得很好。而MQL中的数组也有自己的数组。所以一些std::array也可以用这个结构来处理。

 
traveller00:

它抛出这个错误是一个错误还是一个漏洞?

不是一个错误。模板过载只会有帮助。

 

有没有什么方法可以快速发现一个乐器没有历史记录(无论是本地还是服务器上)?

任何CopyXXX请求都要等待30秒才能检索到数据,而且需要花费不合理的时间来翻阅大量的仪器。

对于一些工具,检查是否有Bid(它是空的)是有帮助的,但不是对所有的工具。

你可以在ICMarkets-MT5上查看,工具Wheat_U0

 
Andrey Khatimlianskii:

有没有什么方法可以快速发现一个乐器没有历史记录(无论是本地还是服务器上)?

任何CopyXXX请求都要等待30秒才能检索到数据,而且需要花费不合理的时间来翻阅大量的仪器。

对于一些工具,检查是否有Bid(它是空的)是有帮助的,但不是对所有的工具。

你可以在ICMarkets-MT5上查看,仪器Wheat_U0

它已经被写了很多次,这里是我发现的第一件事https://www.mql5.com/ru/forum/285631/page35#comment_9431199

或者,这些符号的Ask和Bid==0

Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5
Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5
  • 2018.11.20
  • www.mql5.com
26 октября 2018 года будет выпущена обновленная версия платформы MetaTrader 5...
 
Andrey Khatimlianskii:

有没有什么方法可以快速发现一个乐器没有历史记录(无论是本地还是服务器上)?

任何CopyXXX请求都要等待30秒才能检索到数据,而且需要花费不合理的时间来翻阅大量的仪器。

对于一些工具,检查是否有Bid(它是空的)是有帮助的,但不是对所有的工具。

你可以在ICMarkets-MT5上查看,仪器Wheat_U0

在指标中,将不等待CopyXXX的结果

在指标的定时器中作为一个选项来处理CopyXXX并从EA调用该指标

 
Vladimir Pastushak:

这一点已经不止一次写过了,这是我发现的第一个https://www.mql5.com/ru/forum/285631/page35#comment_9431199

作为这些符号的一个变体,Ask和Bid == 0

关于一次写0个Bid,有时并不是零。


Igor Makanu:

在指标中,将不等待CopyXXX的结果

在指标中的定时器的一个变体,用于处理CopyXXX并从EA调用该指标

这是个好主意!谢谢,我将尝试。

 
fxsaber:

发生这种情况的原因。在第一次OrderSend之后,出现了一个市场订单,如果在其执行之前出现了一个新的tick,则还没有头寸,于是进行了第二次OrderSend。

正因为如此,一个看似正常的MT5模式将无法正常工作,因此,代码库中的大多数MT5专家顾问 也无法正常工作。同时,几乎相同的MT4模板 将继续工作,没有任何问题。

在MT5中还需要分析市场订单的OrdersTotal,这让PositionsTotal这个看似不错的想法有些黯然失色。

要小心!

谢谢你指出这一点。我有这个想法。但现在已经到了写EA的地步,我想知道检查发送到服务器的请求是否有意义。假设你的描述是正确的,但事实上服务器对请求的响应速度很快,这样的情况在大多数情况下不会发生(我想是99%)。但算法的速度每次都会受到影响。你认为哪个更重要?
 
Vasiliy_Saharov:
谢谢你指出这一点。我心里有数了。但现在我开始写一个专家顾问,我想知道检查发送到服务器的请求是否有意义。假设你的描述是正确的,但事实上,服务器对请求的响应很快,这样的情况在大多数情况下(我想是99%)不会发生。但算法的速度每次都会受到影响。你认为哪个更重要?

用2手而不是0.1手入市一次,答案立刻就很明显了 )

 
Andrey Khatimlianskii:

用2手而不是0.1手入市一次,答案立刻就很明显了 )

如果你有一个赚取0.1手的算法,那么有一个赚取0.1两次的概率,由于我认为这个概率趋向于零,而三次,我认为是不可能的。更不用说20次了。毕竟,我们正在谈论应用的东西。作为一个经验法则,服务器的反应可能在10分钟的限度内(是这样吗? 我不确定)。在你看来,抢到第二笔交易的概率有多高?你自己做这个检查吗?是否会发生服务器可能需要很长的时间来响应?
 
Vasiliy_Saharov:
如果你有一个算法可以得出0.1手的结论,那么就有0.1两次的概率,由于我认为这个概率趋于零,而三次,我认为这是不可能的。更不用说20次了。毕竟,我们正在谈论应用的东西。作为一个经验法则,服务器的反应可能在10分钟的限度内(是这样吗? 我不确定)。在你看来,抢到第二笔交易的概率有多高?你自己做这个检查吗?是否会发生服务器可能需要很长的时间来响应?

从统计数据来看:每天大约有200-300笔交易。即使是正常的检查,但在没有任何真正棘手的检查的情况下,平均每周有2-3次我抓到了一个双批的开口。计算概率并评估你是否需要或准备接受这种概率。就我个人而言,我已经把我的支票做到了最大。