Errores, fallos, preguntas - página 2238

 
fxsaber:

Ocurre que el último tick recibido hace 16 segundos no se considera relevante para el OrderSend. Al fin y al cabo, debe tratarse de un error.

Este error

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

Bibliotecas: MT4Orders

fxsaber, 2018.07.24 09:46

Script actualizado en la aplicación. Encuentra rápidamente, por ejemplo, problemas como este
2018.07.24 10:24:19.177 Trades  '35247942': market buy 0.01 USDHKD
2018.07.24 10:24:19.246 Trades  '35247942': failed market buy 0.01 USDHKD [No prices]
2018.07.24 10:24:19.246 Trades  '35247942': buy limit 0.01 USDHKD at 7.83618
2018.07.24 10:24:19.315 Trades  '35247942': failed buy limit 0.01 USDHKD at 7.83618 [No prices]
2018.07.24 10:24:19.316 Trades  '35247942': buy stop 0.01 USDHKD at 7.85618
2018.07.24 10:24:19.384 Trades  '35247942': failed buy stop 0.01 USDHKD at 7.85618 [No prices]

En aproximadamente un minuto se puede reproducir con este script en ForexTimeFXTM-Demo01 si se habilitan todos los símbolos en Market Overview antes de ejecutar.

 
Ilyas:

Se trata de una limitación del sistema (WinAPI).

Aquí están las banderas correctas para que su código funcione:

vamos )

lo hemos comprobado - Windows puede abrir el archivo, pero el script no puede. el problema está en la bandera FILE_SHARE_READ

 
fxsaber:

Por favor, arregle FileLoad

Gracias por la publicación.

Se han añadido los indicadores FILE_FLAG_SHARE_READ | FILE_FLAG_SHARE_WRITE a la implementación de la función FileLoad/FileSave

Cuidado, cuando se escribe y se lee el mismo archivo al mismo tiempo, la sincronización tiene que ser organizada correctamente, porque el resultado de la lectura será indefinido.

 
Ilyas:

Gracias por el mensaje.

Se han añadido los indicadores FILE_FLAG_SHARE_READ | FILE_FLAG_SHARE_WRITE a la implementación de la función FileLoad/FileSave

Cuidado, cuando se escribe y se lee el mismo archivo al mismo tiempo, la sincronización tiene que ser organizada correctamente, porque el resultado de la lectura será indefinido.

Gracias por la corrección, el rastrillo de sincronización no debería verse afectado.

 
TheXpert:

vamos )

El problema está en la bandera FILE_SHARE_READ.

Recomiendo la lectura de https://docs.microsoft.com/en-us/windows/desktop/FileIO/creating-and-opening-files

Creating and Opening Files
Creating and Opening Files
  • 2018.05.31
  • Michael Satran
  • docs.microsoft.com
Considerations for creating or opening a file by using the CreateFile function.
 

¿Cómo afrontar este hecho?

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

Bichos, errores, preguntas

fxsaber, 2018.07.23 16:48

Claramente es un error ya que con esas banderas las aplicaciones de terceros leen el archivo sin ningún problema.


Esos archivos.

FILE_READ | FILE_WRITE | FILE_IS_TEXT | FILE_SHARE_READ

Veo en TotalCommander sin FileClose. Sin FILE_SHARE_READ no funciona.

 
Ilyas:

Recomiendo su lectura

Sí, estaba a punto de lanzarme.

Reconozco que me equivoqué. si el primer mango está abierto para escribir, el segundo debe añadir la bandera FILE_SHARE_WRITE

pero hay otro comentario de a100 que no tiene ningún registro
 
Ilyas:

El abridor no puede utilizar la bandera FILE_SHARE_WRITE (permitir la escritura) para la lectura, porque hay un escritor.

Se trata de una limitación del sistema (WinAPI).

Aquí están las banderas correctas en las que su código funcionará:

Yo también leo MSDN. Explícate, ¿es que Microsoft no sabe inglés o que ellos mismos no leen su documentación, o es la última opción - las banderas en MQL tienen un nombre similar al de WinApi pero funcionan de manera diferente?

Tomado de aquí - https://docs.microsoft.com/en-us/windows/desktop/api/FileAPI/nf-fileapi-createfilea

FILE_SHARE_READ -Permite que las siguientes operaciones de apertura de un archivo o dispositivo soliciten acceso de lectura.De lo contrario, otros procesos no podrán abrir el archivo o dispositivo si solicitan acceso de lectura.

FILE_SHARE_WRITE -Permite que las siguientes operaciones de apertura de un archivo o dispositivo soliciten acceso de escritura.De lo contrario, otros procesos no podrán abrir el archivo o dispositivo si solicitan acceso de escritura.

Por lo tanto, el primer programa sólo necesita establecer FILE_SHARE_READ para que el segundo lo lea. FILE_SHARE_WRITE debe establecerse sólo si se sabe que el segundo programa también escribirá en el archivo.

CreateFileA function
CreateFileA function
  • 2018.06.14
  • windows-sdk-content
  • docs.microsoft.com
Creates or opens a file or I/O device. The most commonly used I/O devices are as follows:\_file, file stream, directory, physical disk, volume, console buffer, tape drive, communications resource, mailslot, and pipe.
 

Pregunta para los desarrolladores.

Existe una función de sincronización:

//+------------------------------------------------------------------+
//| Проверка синхронизации символов                                                                                             |
//+------------------------------------------------------------------+
bool CheckSync()
        {
         //--- Проверка синхронизации символов
         if( !SymbolIsSynchronized( inpSymbol_1 ) )
                {
                 Print( __FUNCTION__,": ОШИБКА #",GetLastError(),": SymbolIsSync("+inpSymbol_1+") = false!" );
                 return( false );
                }
         if( !SymbolIsSynchronized( inpSymbol_2 ) )
                {
                 Print( __FUNCTION__,": ОШИБКА #",GetLastError(),": SymbolIsSync("+inpSymbol_2+") = false!" );
                 return( false );
                }
         //--- Если символы синхронизированы
         return( true );
        }

A veces me da este error:

2018.07.24 15:14:27.415 Indicator (USDJPY,M5)   CheckSync: ОШИБКА #4014:  SymbolIsSync(EURGBP) = false!

Es decir, el indicador se ejecuta en USDJPY, y me da un error con el símbolo EURGBP. Al mismo tiempo hay un gráfico abierto de EURGBP en el terminal.

El error 4014 dice que:

No se puede llamar a la función del sistema

¿Cómo puede ser?

 
TheXpert:

Sí, estaba a punto de lanzarme.

Reconozco que me equivoqué. si el primer mango está abierto para escribir, el segundo debe añadir la bandera FILE_SHARE_WRITE

pero también hay un comentario de a100 que no tiene ningún registro.
En mi caso, ServiceDesk escribe ahora que no puede reproducir... necesita ayuda de la sala ... más adelante describiré cómo hacerlo ...