Errores, fallos, preguntas - página 1631

 
fxsaber:
mt5, 1375, sucedió después de la actualización. vinhp32

¿Actualizaciones de qué y en qué? Por favor, si está señalando un posible fallo, no ahorre tinta y exponga las circunstancias con el mayor detalle posible.

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Errores, fallos, preguntas

Karputov Vladimir, 2016.08.07 14:11

  1. ¿Cuál es la construcción del MetaEditor?
  2. ¿Lo ejecuta desde MT4 o MT5?
  3. ¿Has abierto archivos en este MetaEditor antes?
  4. ¿Cuál es la situación de los derechos del archivo del MetaEditor?
  5. ¿Sucedió recientemente o inmediatamente después de la instalación del terminal?
  6. ¿En qué sistema operativo se inicia (Windows, bajo Wine)?

 

Error en la ejecución

Secuencia de operaciones:

1. Ejecute el experto Test.ex5, que muestra el mismo tipo de texto en el gráfico línea por línea hasta que se produzca un error

2. En el mismo gráfico, ejecute el script simplificado que demuestra el error

//Test.ex5 //Проверочный скрипт void OnStart() {         string text1 = NULL;                        ::ChartGetString( 0, CHART_COMMENT, text1 ); //(1)         string text2 = ::ChartGetString( 0, CHART_COMMENT ); //(2)         if ( text1 != text2 )                 Print( ::StringLen( text1 ), "-", ::StringLen( text2 ));         else                 Print( "OK" ); }

Obtenemos el resultado

2016.08.08 02:21:25.979 Prueba (EURUSD,M15) 120-136

... y debería ser "OK"

Archivos adjuntos:
Test.ex5  13 kb
 
A100:

Error en la ejecución

Secuencia de operaciones:

1. Ejecute el experto Test.ex5, que muestra el mismo tipo de texto en el gráfico línea por línea hasta que se produzca un error

2. En el mismo gráfico, ejecute el script simplificado que demuestra el error

Obtenemos el resultado

2016.08.08 02:21:25.979 Prueba (EURUSD,M15) 120-136

... y debería ser "OK"

No veo ningún error, entre las llamadas a ChartGetString se ha cambiado el comentario del gráfico, por eso hay una diferencia de 16 caracteres entre las líneas, sólo el tamaño de la línea añadida al comentario del gráfico.
 
Ilyas:
No veo ningún error, entre las llamadas a ChartGetString, se ha cambiado el comentario del gráfico, por eso hay una diferencia de 16 caracteres entre las líneas, sólo por el tamaño de la línea añadida al comentario del gráfico.

El experto está descargado (es decir, ya no puede afectar al gráfico). Cargue el script de prueba (10 líneas). Pregunta: ¿cuál de las líneas dadas cambia el comentario del gráfico?

No hay código entre las llamadas de ::ChartGetString()

Archivos adjuntos:
Test.ex5  6 kb
 

¿Qué pasa con la versión móvil del foro?

Cuando pulso "Responder", aparece una cita con cocodrilos de código htlm. Y no se puede sacar el cursor.

Android 2.3.4


 
A100:

El experto está descargado (es decir, ya no puede afectar al gráfico). Cargue el script de prueba (10 líneas). Pregunta: ¿cuál de las líneas dadas cambia el comentario del gráfico?

No hay código entre las llamadas de ::ChartGetString()

Por acción (ya que las operaciones del gráfico son sincrónicas/secuenciales, el EA y el script trabajan en sus propios hilos):

  1. el script llama al primer ChartGetString
  2. el Asesor Experto llama a ChartSetString
  3. el Asesor Experto termina
  4. el script llama al segundo ChartGetString
 
Ilyas:
Por acciones (para un gráfico, las operaciones son sincrónicas/secuenciales, el Asesor Experto y el script trabajan en sus hilos):

  1. script llama primero a ChartGetString
  2. experto llama a ChartSetString
  3. Acabados expertos
  4. el script llama al segundo ChartGetString

El experto de Test.ex5 no puede llamar a nada (punto 2), ya que cuando el script se ejecuta, ya se ha descargado de antemano,

es decir, el paso 3 es obviamente anterior al paso 1

A continuación se muestra el resultado del script Test.ex5

2016.08.08 02:21:25.979 Prueba (EURUSD,M15) 120-136

...y debería estar "bien".

 
A100:

El experto de Test.ex5 no puede llamar a nada (punto 2), porque cuando el script se ejecuta, ya está descargado de antemano,

es decir, el paso 3 es obviamente anterior al paso 1

A continuación se muestra el resultado del script Test.ex5

2016.08.08 02:21:25.979 Prueba (EURUSD,M15) 120-136

...y debería estar "bien".

ExpertRemove no elimina el Asesor Experto del gráfico instantáneamente, sino sólo al finalizar el OnTick. Y no es análogo a la función exit()

La cita en el registro sólo ilustra el hecho de llamar a la función ExpertRemove(). El hecho de eliminar el Asesor Experto se reflejará en el registro del terminal del cliente como "experto eliminado".

Mostrar el código fuente del Asesor Experto

 
Slawa:

La cita en el registro sólo ilustra el hecho de llamar a la función ExpertRemove(). El Asesor Experto será eliminado del registro del terminal del cliente como "experto eliminado".

Secuencia detallada de acciones:

  1. Abrir un nuevo gráfico
  2. Ejecute Test.ex5 en el gráfico del Asesor Experto (en unos segundos aparecerá el siguiente mensaje en la pestaña Expertos: '2016.08.08 15:40:47.267 Prueba (EURUSD,M15) Función ExpertRemove() llamada' y el EA se descarga del gráfico
  3. Asegúrese de que la pestaña de registro muestra un mensaje del siguiente tipo: '2016.08.08 15:40:47.286 Prueba de expertos (EURUSD,M15) eliminada'
  4. Ejecute el script Script1.ex5 en el mismo gráfico (el nombre del script aquí no se corresponde con el nombre del Asesor Experto)

Como resultado, aparecerá un mensaje del siguiente tipo en la pestaña de Expertos: '2016.08.08.08 15:52:43.173 Scripts1 (EURUSD,M15) 120-136'
Debería serlo:'2016.08.08 15:52:43.173 Scripts1 (EURUSD,M15) OK'

//Script1.mq5
void OnStart()
{
        string text1 = NULL;
                       ChartGetString( 0, CHART_COMMENT, text1 ); //(*)
        string text2 = ChartGetString( 0, CHART_COMMENT );
        if ( text1 != text2 )
                Print( StringLen( text1 ), "-", StringLen( text2 ));
        else
                Print( "OK" );
}
Archivos adjuntos:
Test.ex5  13 kb
Script1.ex5  7 kb
 
A100:

Debería serlo:'2016.08.08 15:52:43.173 Scripts1 (EURUSD,M15) OK'

Esto puede verse fácilmente sustituyendo la línea (*) en Script1.mq5 por

               text1 = ChartGetString( 0, CHART_COMMENT );