服务,MT5的新功能,MT4的葬礼就在眼前。 - 页 5

 
Petros Shatakhtsyan:


有趣的是,昨天我想利用MarketBookAdd和OnBookEvent的功能来制作一个多货币的EA。

但由于某些原因,测试器上的MarketBookAdd不起作用。它给出了一个错误4901-价格不能被添加

但它只在实时情况下工作...
 
Alexey Kozitsyn:
它只在实时情况下工作。


而且我不需要得到一个价格的堆叠,而是要有这样简单的功能。

1.清除市场观察的内容。

2.在那里添加所需的字符(这是可用的)。

3.使用函数或事件来接收每个符号在市场观察中显示的所有刻度,或者将OptiScope与多刻度功能结合起来。

 
Petros Shatakhtsyan:


而且我不需要得到那一叠价格,而是要有这样简单的可能性。

1.清除市场观察的内容。

2.在那里添加所需的字符(这是可用的)。

3.使用函数或事件来接收每个符号在Market Watch中显示的所有刻度,或将Optik与MultiTick函数一起使用。

不太清楚为什么你决定通过市场深度,如果你想与市场观察和蜱虫一起工作?
 
Alexey Kozitsyn:
不太清楚的是,如果你想用市场概况和刻度线工作,为什么你决定通过价格堆栈?

而你要从哪里获得所有可见或添加到市场概览中的报价数据。
 
Petros Shatakhtsyan:

而你要从哪里获得所有可见或添加到市场概览中的报价数据。
嗯...OnTimer(), OnTick(),OnCalculate()...
 
Petros Shatakhtsyan:

而你要从哪里获得所有可见或添加到市场概览中的报价数据。

MqlTick tickEUR;
MqlTick tickGBP;
MqlTick tickEURGBP;

GetSymbolByName(string symbol)   {    string symbol_name="";   // Имя символа на сервере //--- Если передали пустую строку, вернем пустую строку    if(symbol=="")       return(""); //--- Пройтись по списку всех символов на сервере    for(int s=0; s<SymbolsTotal(false); s++)      {       //--- Получим имя символа       symbol_name=SymbolName(s,false);       //--- Если искомый символ есть на сервере       if(symbol==symbol_name)         {          //--- Выберем его в окне "Обзор рынка"          SymbolSelect(symbol,true);          //--- Вернем имя символа          return(symbol);         }      } //--- Если искомого символа нет, вернем пустую строку    Print("Символ "+symbol+" не найден на сервере!");    return("");   } int OnInit()   { //---    GetSymbolByName("EURUSD"+SymbolSuffix);    GetSymbolByName("GBPUSD"+SymbolSuffix);    GetSymbolByName("EURGBP"+SymbolSuffix); }

void OnTimer() // или OnTick   {       if(!SymbolInfoTick("EURUSD"+SymbolSuffix,tickEUR)) {Print("EURUSD price has not been received"); return;}    if(!SymbolInfoTick("GBPUSD"+SymbolSuffix,tickGBP)) {Print("GBPUSD price has not been received"); return;}    if(!SymbolInfoTick("EURGBP"+SymbolSuffix,tickEURGBP)) {Print("EURGBP price has not been received"); return;} if(tickEUR.ask!=0 && tickEUR.bid!=0) {} // ну и все в этом духе }

 
Maxim Dmitrievsky:

你怎么能在这么多的帖子中如此不敬业的愚昧呢?
你可以通过他们背上伸出的箭来识别那些提供有用东西的人。任何新事物都会遭到敌意的回应。特别是那些销售从hrenfx复制的套利顾问赚钱的人,因为他们在市场上直接使用是不可能的,因为这家经纪公司的反对。
 
Maxim Dmitrievsky:


如果EA处理每一个刻度,即使在计时器中使用了毫秒,也是低效的。

需要一个更简单的方法来直接从市场概览中获得所有的点位。

通过OpTisk是不可能的,因为它只在下一个tick出现在EA所处的位置时起作用。

 
Petros Shatakhtsyan:

你仍然要通过计时器来做这件事。计时器只需要一个算法,以便在最后一个刻度与前一个刻度相同的情况下不提出请求。

BookEvent在这里不会帮助你。

 
Alexey Kozitsyn:

你仍然要通过计时器来做这件事。计时器只需要一个算法,以便在最后一个刻度与前一个刻度相同的情况下不提出请求。

BookEvent在这里不会帮助你。


是的,但你也应该考虑到这里只有一个定时器,而不是那么,那么VC++,如果你有很多的定时器检查,你就可能失去很多的时间,一切都会变成一团糟。