Servicios , nueva funcionalidad en la arquitectura de MT5, el funeral de MT4 está a la vuelta de la esquina. - página 5

 
Petros Shatakhtsyan:


Curiosamente, ayer quise utilizar las características de MarketBookAdd y OnBookEvent para hacer un EA multidivisa.

Pero por alguna razón MarketBookAdd en el probador no funciona. Da un error 4901-La pila deprecios no puede ser añadida.

Pero sólo funciona en tiempo real...
 
Alexey Kozitsyn:
Sólo funciona en tiempo real.


Y no necesito tener una pila de precios, sino tener características tan simples:

1. borrar el contenido de Market Watch.

2. Añade allí los caracteres deseados (está disponible)

3. Utilice la función o el evento para recibir todos los ticks que se muestran en Market Watch de cada símbolo, o haga OptiScope junto con la función Multi-tick.

 
Petros Shatakhtsyan:


Y no necesito conseguir la pila de precios, sino tener posibilidades tan sencillas:

1. borrar el contenido de Market Watch.

2. Añade allí los caracteres deseados (está disponible)

3. Utilice la función o el evento para recibir todos los ticks que se muestran en Market Watch de cada símbolo, o haga Optiсk junto con la función MultiTick.

No está muy claro por qué ha decidido pasar por la profundidad de mercado si quiere trabajar con Market Watch y ticks.
 
Alexey Kozitsyn:
No está muy claro por qué ha decidido pasar por la pila de precios si quiere trabajar con la visión general del mercado y los ticks.

Y de dónde vas a sacar los datos de todas las cotizaciones que son visibles o se añaden a la visión general del mercado.
 
Petros Shatakhtsyan:

Y de dónde vas a sacar los datos de todas las cotizaciones que son visibles o se añaden a la visión general del mercado.
Um... OnTimer(), OnTick(), OnCalculate()...
 
Petros Shatakhtsyan:

Y de dónde vas a sacar los datos de todas las cotizaciones que son visibles o se añaden a la visión general del 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:

¿Cómo puedes ser tan impiadosamente obtuso durante tantos posts?
Puedes reconocer a las personas que ofrecen algo útil por las flechas que salen de sus espaldas. Todo lo nuevo siempre es recibido con una respuesta hostil. Especialmente los que ganan dinero vendiendo asesores de arbitraje copiados de hrenfx ya que su uso directo en el mercado es imposible por la oposición de esta empresa de corretaje.
 
Maxim Dmitrievsky:


Sería ineficiente si EA maneja cada tick, incluso si se utilizan milisegundos en el temporizador.

Necesito una forma más fácil de obtener todos los ticks directamente desde la visión general del mercado.

Un OpTisk a través no es posible, porque sólo funciona cuando el siguiente tick viene donde el EA está parado.

 
Petros Shatakhtsyan:

Todavía tendrá que hacerlo a través de un temporizador. El temporizador simplemente necesita un algoritmo para que no haga una petición si el último tick es el mismo que el anterior.

BookEvent no le ayudará en este caso.

 
Alexey Kozitsyn:

Todavía tendrá que hacerlo a través de un temporizador. El temporizador simplemente necesita un algoritmo para que no haga una petición si el último tick es el mismo que el anterior.

BookEvent no le ayudará en este caso.


Sí, pero también hay que tener en cuenta que aquí sólo hay un temporizador, no tan, tan VC++, y si tienes muchas comprobaciones de temporizador, puedes perder muchos ticks y todo se convertirá en papilla.