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

 
novator:
Buenas noches, ¿es posible utilizar más de un Medgie en un EA?

Buenas noches.

Sí, lo es.

 
Integer:

Oh, te estás poniendo nervioso. Y me encendí después de declarar abiertamente que no necesito estos libros de consulta. No los necesito, no veo ningún valor en ellos. Para ti, Vadimi, son una fuente de gran orgullo y nada más. Te lo vuelvo a recordar: es curioso que te aferres a ellos... y llevarlos en alto sobre tu cabeza como un estandarte.


Dimitri, deja de discutir con Vadim. Será mejor que guíes a los buscadores :) Llevo un par de días luchando con las bibliotecas. Mi pregunta se aleja cada vez más bajo la presión de estos comentarios...

Este no es un foro para medir penes, es un foro para discutir temas. No debemos decidir cuál de los dos es más inteligente.

 
hoz:


Dimitri, deja de discutir con Vadim. Sería mejor si pudieras guiar a los buscadores :) Llevo un par de días luchando con las bibliotecas. Mi pregunta se aleja cada vez más bajo la presión de estos comentarios...

Esto no es un concurso de meadas, es un hilo de discusión. No soy yo quien debe decidir cuál de los dos es más inteligente.


Lo he visto. Una pregunta bien formulada es la mitad de la solución. El inlude no es una importación. Deberías intentar llamar a alguna función desde el archivo que no parece estar conectado. Lo que está escrito en los registros puede no tener que hacerlo, no vale la pena prestarle atención.
 
Integer:

Lo he visto. Una pregunta bien formulada es la mitad de la solución. El inlude no es una importación. Deberías intentar llamar a alguna función desde el archivo que no parece estar conectado. Lo que está escrito en los registros puede no tener que hacerlo, no vale la pena prestarle atención.

Así que intentaré llamarlo mañana. No tengo depurador, así que no sé cómo abordar esta tarea. Tampoco hay errores. Y el búho no funciona. No imprimirá nada. De todos modos, lo probaré mañana y te informaré.
 
novator 24.11.2013 19:37 #
Buenas noches, ¿es posible utilizar varios medgies en un EA?
Puedes hacerlo.
 

¿Por qué no funciona?

   int handle;
   handle=FileOpen("openorder.csv",FILE_CSV|FILE_READ|FILE_WRITE,"\n");
   if(handle>0)
     {
      FileWrite(handle,open_price_order,"\n");
      FileClose(handle);
     }
 
itum:

¿Por qué no funciona?


Me parece que el delimitador estándar en un archivo CSV no es un salto de línea, sino una coma o algún otro carácter como delimitador. Y si se leen los datos del CSV como cadenas, y en alguna parte de la cadena hay una coma no como delimitador, entonces toda la cadena debe ser marcada con comillas.

Aquí tienes un vistazo:

FechaHora,Nombre,País,Volatilidad,Actual,Anterior,Consenso
"20131125 09:00:00", "Nationwide house price index (y/y)", "UK ", "2","", "5.8%", "6.0%"

La primera línea del archivo contiene valores separados por comas. Se pueden leer normalmente. La segunda línea tiene todos los datos encerrados entre comillas, pero también tiene comas como delimitadores. Pero hay una línea 5.8% donde la coma no es un delimitador. Esta línea debe ir entre comillas. Pues bien, el código debe eliminar las comillas extra al principio y al final de la cadena. Al hacerlo, hacemos algo así:

   DatTim=FileReadString(handle);StrTrim(DatTim);if(DatTim !="DateTime") err=1;else{
    Name=FileReadString(handle);StrTrim(Name);if(Name !="Name") err=1;else{
     Country=FileReadString(handle);StrTrim(Country);if(Country !="Country") err=1;else{
      Volatility=FileReadString(handle);StrTrim(Volatility);if(Volatility !="Volatility") err=1;else{
       Actual=FileReadString(handle);StrTrim(Actual);if(Actual !="Actual") err=1;else{
        Previous=FileReadString(handle);StrTrim(Previous);if(Previous !="Previous") err=1;else{
         Consensus=FileReadString(handle);StrTrim(Consensus);if(Consensus !="Consensus") {err=1;}}}}}}}

Este es el análisis de la cabecera del archivo. La función StrTrim(DatTim) de mi código sólo elimina las comillas innecesarias si las hay al principio y al final de la línea. Después de eso, simplemente leemos el archivo y convertimos los datos de la cadena al formato necesario. Pero aunque todo depende de lo que tengas en el archivo CSV. Por regla general, funciona bien si hay cadenas en el CSV.

Véase FileReadString( int handle, int length=0) y FileOpen( string filename, int mode, int delimiter=',')

 

Todo lo que quiero hacer es escribir el precio de apertura de una orden a CSV. ¿Cómo lo hago?

 
itum:

Todo lo que quiero hacer es escribir el precio de apertura de la orden en CSV. ¿Cómo puedo hacerlo?



Eso parece ser correcto entonces.


handle=FileOpen("openorder.csv",FILE_CSV|FILE_READ|FILE_WRITE,",");

FileSeek(handle,0, SEEK_END);// Esto es en caso de que quieras añadir a un archivo existente.

FileWrite(handle,open_price_order);

Yo estaba leyendo CSV al contrario. No ponga "\n" como separador. Se añadirá después de cada FileWrite. Poner "," o ";". Y luego, cuando abra Excel, o quien sea, le pedirá que introduzca el delimitador. Debería funcionar, no hay tiempo en el probador para comprobarlo.... Porque FileWrite(handle,open_price_order); insertará una línea en el archivo, pero si FileWrite(handle,open_price1_order, open_price2_order ); seguirá siendo una línea, pero se insertará el separador entre oppenprice. Una llamada posterior a FileWrite dará lugar a una nueva línea en el archivo.

 
Hola,
Se trata de MT4.
Puede alguien decirme cómo establecer los días de una semana para que el EA opere de lunes a viernes, pero menos de 23 horas el viernes.

Si me equivoco es porque he notado algunas peculiaridades en las pruebas de algunos algoritmos que afectan a la fecha de inicio de la prueba.
Gracias de antemano.