Errores, fallos, preguntas - página 446

 
voix_kas:

Código de error: 4756. Puedes verlo en la captura de pantalla.

1. Una vez más repito mi pregunta - Lista de los símbolos que se supone que el comercio seleccionado selectivamente (es decir, para todos los símbolos que se van a negociar mult se ejecutó comando SymbolSelect con el segundo parámetro verdadero)?

Aconsejo que en el bloque de inicialización se seleccionen todos los símbolos que requiere SymbolSelect y se compruebe este error después de esta modificación.

2. A los desarrolladores:

a) ¿Por qué la lista de símbolos de los terminales debe incluir explícitamente los símbolos que no se seleccionaron con SymbolSelect (suponiendo que no se realizó ninguna acción sobre ellos, salvo la recogida de alguna información)?

b) ¿no crees que cosas aparentemente inofensivas como SymbolsTotal(false) y SymbolName(index,false) conducen a la visualización explícita de los símbolos en la ventana de visualización?

Por lo que entiendo, debería ser así - No SymbolNo seleccione ningún símbolo entre los que se muestran en MarketWatch.

c) Por lo que entiendo, el probador debería descargar todos los símbolos que se consulten, y mostrar sólo aquellos que se seleccionen en SymbolSelect o para los que el usuario intente obtener precios o cualquier otra información relevante.

Por ejemplo, si estoy tratando de determinar si un símbolo está sincronizado o la profundidad de su historial en el servidor, ¿por qué debería colocarse inmediatamente en MarketWatch con el signo de selección?

 
voix_kas:

¿Y cómo capto el código de error en el punto que indicas? Registro el error en la última línea del código anterior.

Este error no aparece si se añade el siguiente término justo antes de este código:

Por ejemplo, así:

double price=SymbolInfoDouble(Instrumet, SYMBOL_ASK);
if(price==0.0)
  {
   Print("Ай-яй-яй. Ошибка ",GetLastError());
   return(false);
  }
TradeRequest.price = price;
 
Interesting:

2. La pregunta a los desarrolladores - ¿Por qué los símbolos que no se seleccionaron con SymbolSelect (suponiendo que no se realizó ninguna acción sobre ellos aparte de recoger cierta información) entran en la lista de símbolos terminales de forma explícita (se puede ver en la captura de pantalla anterior)?

El probador de MT5 utiliza una simulación muy precisa de las condiciones de negociación, incluyendo la conversión más precisa de los beneficios en la moneda de equilibrio.

Esto significa que al trabajar con cruces, tenemos que simular el par de divisas base para recalcular el beneficio. Es decir, cuando se trabaja en algunos instrumentos (cruces) hay un doble volumen de modelado, para que en cualquier segundo el cálculo sea absolutamente preciso y repetible.

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 

Interesante
Por supuesto. Este código es anterior a todas las acciones posteriores:

if (SymbolInfoInteger(Instrumet, SYMBOL_SELECT) || SymbolSelect(Instrumet, true))
{
  ...
}

Si la condición no se cumple, no se realiza ninguna otra acción en esta herramienta.

Sobre"SymbolSelect " durante la inicialización... ¿Entoncescrees que la primera llamada ( SymbolSelect(Instrumet, true) ) no carga la herramienta?

Es que primero paso por los símbolos de presencia (inicializar). Y luego en OnTick|OnTimer selecciono explícitamente si el instrumento no estaba seleccionado antes.

tíoVic

Gracias. Así es como estoy manejando este error.
Si puede, explique qué es lo que hace que aparezca el precio nulo. ¿Y puede ocurrir en la vida real (es decir, en tiempo real, no sólo durante las pruebas)?

 
voix_kas:

Interesante
Por supuesto. Este código es anterior a todas las acciones posteriores:

Si la condición no se cumple, no se realiza ninguna otra acción en esta herramienta.

Sobre"SymbolSelect" durante la inicialización... ¿Entoncescrees que la primera llamada ( SymbolSelect(Instrumet, true) ) no carga la herramienta?

Es que primero paso por los símbolos de presencia (inicializar). Y luego en OnTick|OnTimer hago una selección explícita si la herramienta no ha sido seleccionada previamente.


Es extraño, o no entiendo algo o hay algún código en alguna parte que no funciona como espero.

Por lo que sé SymbolSelect es suficiente para ser utilizado una vez, en el bloque de inicialización (es mejor comprobar el resultado).

En mi probador, simplemente formé MarketWatch a partir de una matriz preparada preliminarmente de la siguiente manera

  //Forming list of symbols
  for(int f=0;f<ArraySize(ArrSymbolsEA);f++)
  {
  SymbolSelect(ArrSymbolsEA[f],true);
  }

Por lo general, basta con que todos los símbolos estén disponibles para operar en el Probador de Estrategias.

Sin embargo, en este caso, si no se encuentra un símbolo en el diario, obtendrá un error como el siguiente

2011.07.06 18:47:57     symbol NZDUSD does not exist

Si todo funciona correctamente, la ventana del comprobador debería tener el siguiente aspecto


 
voix_kas:

Gracias. Así es exactamente como estoy sorteando este error ahora.
¿Podría explicar qué es lo que provoca el precio cero? ¿Y puede ocurrir esto en la vida real (léase, en modo "tiempo real", no sólo durante las pruebas)?


¿Cuál es el código de error?
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений - Документация по MQL5
 

A los desarrolladores

Iba a escribir esto en SD, pero cambié de opinión. Por favor, añada la función bool SymbolExists(nombre) / bool SymbolIsExists(nombre)

Propósito - determina si un símbolo especificado se encuentra en el servidor. En caso de éxito devuelve true.

Sólo así, ese símbolo no se mostrará en MarketWatch (el principio es el mismo que para SymbolIsSynchronized).

Todo esto permitirá deshacerse de tales problemas

2011.07.06 18:47:57     symbol NZDUSD does not exist
 
uncleVic:
¿Cuál es el código de error?

Por lo que muestra el probador de estrategias, se generan dos errores al mismo tiempo. Sólo el último puede ser interceptado.
¿Cómo lo sé? He dado el código de arriba. ¿Dónde debo poner la información del código de error?

 
Interesting:

Es extraño, o no entiendo algo o hay un código en alguna parte que no funciona como yo creo.

...

Si todo ha funcionado como se esperaba, la ventana del probador debería tener el siguiente aspecto

Por favor, ejecute el probador con su multidivisa desde el 2011.01.03 00:00:00.

Hasta 2011.01.03 00 :59:59 sólo están disponibles 3 pares de divisas (que se muestran en marketwatch, se puede ver en la captura de pantalla). A partir de 2011.01.0301:00:00 - todo es normal.

P.D.

Estamos hablando de cuentas demo MQ (para preparar el Campeonato).

 
voix_kas:

Por favor, ejecute el probador con su multidivisa desde el 2011.01.03 00:00:00.

Tengo hasta 2011.01.03 00 :59:59 sólo 3 pares de divisas están disponibles (que se muestran en marketwatch, se puede ver en la captura de pantalla). A partir de 2011.01.0301:00:00 - todo es normal.

P.D.

Estamos hablando de cuentas demo MQ (para preparar el Campeonato).

¿Está sincronizado el historial por símbolos?
Razón de la queja: