Serviços , nova funcionalidade no arquiteto do MT5, o funeral do MT4 está prestes a ser inaugurado. - página 5

 
Petros Shatakhtsyan:


Curiosamente, ontem eu queria usar as características do MarketBookAdd e OnBookEvent para fazer um EA com várias moedas.

Mas por alguma razão, o MarketBookAdd no testador não funciona. Ele dá um erro 4901 - A pilha depreços não pode ser adicionada.

Mas só funciona em tempo real...
 
Alexey Kozitsyn:
Só funciona em tempo real.


E eu não preciso obter uma pilha de preços, mas sim ter características tão simples:

1. Limpar o conteúdo do Market Watch.

2. Adicione ali os caracteres desejados (isto está disponível)

3. Use a função ou evento para receber todos os ticks que são exibidos no Market Watch de cada símbolo, ou faça o OptiScope junto com a função Multi-tick.

 
Petros Shatakhtsyan:


E eu não preciso obter a pilha de preços, mas ter possibilidades tão simples:

1. Limpar o conteúdo do Market Watch.

2. Adicione ali os caracteres desejados (isto está disponível)

3. Use a função ou evento para receber todos os ticks que são exibidos no Market Watch de cada símbolo, ou faça Optiсk junto com a função MultiTick.

Não está bem claro por que você decidiu atravessar a Profundidade do Mercado se você quer trabalhar com o Market Watch e carrapatos?
 
Alexey Kozitsyn:
Não está bem claro por que você decidiu passar pela pilha de preços se você quer trabalhar com a visão geral do mercado e os carrapatos?

E onde você vai obter os dados de todas as cotações que são visíveis ou adicionadas à visão geral do mercado.
 
Petros Shatakhtsyan:

E onde você vai obter os dados de todas as cotações que são visíveis ou adicionadas à visão geral do mercado.
Um... OnTimer(), OnTick(), OnCalculate()...
 
Petros Shatakhtsyan:

E onde você vai obter os dados de todas as cotações que são visíveis ou adicionadas à visão geral do mercado.

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:

Como você pode ser tão pouco obtuso para tantos cargos?
Você pode reconhecer as pessoas que oferecem algo útil pelas flechas que saem de suas costas. Qualquer coisa nova é sempre recebida com uma resposta hostil. Especialmente aqueles que ganham dinheiro vendendo consultores de arbitragem copiados da hrenfx, já que seu uso direto no mercado é impossível por causa da oposição desta corretora.
 
Maxim Dmitrievsky:


Seria ineficiente se a EA manejasse cada tick, mesmo que milissegundos sejam usados no temporizador.

Precisa de uma maneira mais fácil de obter todos os carrapatos diretamente da visão geral do mercado.

A através de OpTisk não é possível, porque só funciona quando o próximo tick chega onde a EA está.

 
Petros Shatakhtsyan:

Você ainda terá que fazer isso através de um temporizador. O timer simplesmente precisa de um algoritmo para que não faça um pedido se o último tick for o mesmo que o tick anterior.

O BookEvent não o ajudará aqui.

 
Alexey Kozitsyn:

Você ainda terá que fazer isso através de um temporizador. O timer simplesmente precisa de um algoritmo para que não faça um pedido se o último tick for o mesmo que o tick anterior.

O BookEvent não o ajudará aqui.


Sim, mas você também deve levar em conta que há apenas um timer aqui, não é assim, então VC++, e se você tiver muitas verificações de timer, você pode simplesmente perder muitos carrapatos e tudo se transformará em minhoca.