Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 410

 
Trader7777:
Otra pregunta, el probador muestra el error 138 (ERR_REQUOTE), ¿qué significa?
Significa que no hay requotes en el probador. Significa que hay un error en la orden de comercio. Lo más probable es que intente abrir el mercado uno como pendiente.
 
artmedia70:
Esto significa que no hay requotes en el probador. Significa que hay un error en la orden de comercio. Lo más probable es que esté intentando abrir una orden de mercado como pendiente.

No, no hay pedidos pendientes. ¿Qué es una recotización?
 
Trader7777:
No, no hay pedidos pendientes. ¿Qué es una recotización?
Es cuando el precio se mueve más allá del deslizamiento permitido durante un intento de abrir una posición de mercado. El probador no lo muestra, lo que significa que estamos tratando de abrir una posición no en Bid o Ask, sino en algún precio desconocido.
 

Buenas tardes, tengo una pregunta sobre la escritura de datos en archivos.

¿Puede decirme por qué en el modo FILE_READ|FILE_WRITE, cuando intento escribir en un archivo, se escribe sobre el archivo antiguo, pero no se añade a él?

Tenga en cuenta que no está abriendo un nuevo archivo vacío y llenándolo (como en el modo FILE_WRITE), sino sobrescribiéndolo - es decir, si durante la última ejecución soviética se produjeron menos eventos a escribir que durante la penúltima, los restos de la penúltima ejecución se colgarían al final del archivo.

file_log = "expert_" + magic_number + "_log.csv";
handle_log = FileOpen(file_log, FILE_CSV|FILE_READ|FILE_WRITE, ',');
if(handle_log < 0)  {
  Alert("Ошибка при открытии файла ", file_log, "Возможно, файл занят другим приложением.");
  PlaySound("alarm.wav");
}
else  {
  if(FileWrite(handle_log, "time", "ticket", "type", "openprice", "stoploss", "takeprofit", "lot", "closeprice", "effect_points", "деньги советника") < 0  ||    // это заголовки
      FileWrite(handle_log, TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS), "Советник открыт с параметром delta=", delta) < 0)  {   // для отраж-я возмож. изм-я параметра при рестарте
    Alert( "Ошибка записи в файл ", file_log, " ошибка-", GetLastError() );
    PlaySound("alarm.wav");
  }
}

El archivo se abre y el primer registro (mostrado arriba) se hace en el init. Al inicio, los registros de trabajo se añaden al archivo según los eventos en turno. El archivo se cierra en deinit.

 
yan720:

Buenas tardes, tengo una pregunta sobre la escritura de datos en archivos.

Por favor, dígame por qué en el modo FILE_READ|FILE_WRITE cuando se intenta escribir en un archivo, se escribe sobre el archivo antiguo, pero no se añade a él.

Tenga en cuenta que no está abriendo un nuevo archivo vacío y llenándolo (como en el modo FILE_WRITE), sino sobrescribiéndolo - es decir, si durante la última ejecución soviética se produjeron menos eventos a escribir que durante la penúltima, los restos de la penúltima ejecución se colgarían al final del archivo.

El archivo se abre y el primer registro (mostrado arriba) se hace en el init. Al principio, los registros de trabajo se añaden al archivo en función de los eventos que se produzcan. El archivo se cierra en deinit.

Si no me equivoco, sólo debería haber dos opciones en la función de apertura de archivos, pero tiene tres: "FILE_CSV|FILE_READ|FILE_WRITE".

No tiene ninguna función que cierre el archivo, por lo que los datos no se guardan.

Y al final, puedes añadir un cursor de registro para ir hasta el final cuando añadas uno nuevo

 
yan720:

Buenas tardes, tengo una pregunta sobre la escritura de datos en archivos.

¿Puede decirme por qué en el modo FILE_READ|FILE_WRITE, cuando intento escribir en un archivo, se escribe sobre el archivo antiguo, pero no se añade a él?

Tenga en cuenta que no está abriendo un nuevo archivo vacío y llenándolo (como en el modo FILE_WRITE), sino sobrescribiéndolo - es decir, si durante la última ejecución soviética se produjeron menos eventos a escribir que durante la penúltima, los restos de la penúltima ejecución se colgarían al final del archivo.

El archivo se abre y el primer registro (mostrado arriba) se hace en el init. Al principio, los registros de trabajo se añaden al archivo en función de los eventos que se produzcan. El archivo se cierra en deinit.


¿Has probado a ir al final del archivo para escribir?
 
Vinin:

¿Has probado a ir al final del archivo para escribirlo?

Hmmm... Tiene sentido... :) Gracias.

¿Pero cómo...? No he visto eso en la descripción de las funciones de archivo del lenguaje. Leer todo lo que tiene en él a través de while(!FileIsEnding(handle_log)) o hay una forma más "directa"?

 
yan720:

Hmmm... Tiene sentido... :) Gracias.

¿Cómo...? No he visto nada de eso en la descripción de las funciones de archivo del lenguaje. Leer todo lo que hay en él a través de while(!FileIsEnding(handle_log)) o hay una forma más "directa"?


FileSeek()
 
Vinin:

FileSeek()

Gracias.
 
yan720:

Hmmm... Tiene sentido... :) Gracias.

¿Pero cómo...? No he visto eso en la descripción de las funciones de archivo del lenguaje. ¿Existe una forma más "directa" de leer todo lo que contiene a través de while(!FileIsEnding(handle_log))?


Oh, genial... Ciertamente, me alegro de que el problema se resuelve, pero por alguna razón no se dio cuenta de mi mensaje, donde dije lo mismo, con palabras ligeramente diferentes, y de inmediato dijo acerca de los defectos, excepto para cerrar el archivo, no vi inmediatamente donde sucede:)
Razón de la queja: