[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 607

 
rustein:
Sí, ya veo, gracias.

Dicho así, no conozco otra manera.......)

Y así...

double BullSumm()
{
  double MySummBull=0;
  for(int Cnt=0;Cnt<OrdersTotal();Cnt++)
  { 
    if(!OrderSelect(Cnt,SELECT_BY_POS,MODE_TRADES))continue; // если нет продолжим цикл
    if(OrderType()==OP_BUY)
    {
      MySummBull+=OrderOpenPrice()*OrderLots();
    }
  }
  if(MySummBull==0)return(380/*v*/);
  return(MySummBull);
}
 
griha:
quiere registrar las acciones de EA en un archivo
Tomé un ejemplo del manual del editor de MQL, ligeramente rehecho para mis propias necesidades


El resultado es que el archivo OrdersReport.csv está vacío, aunque los pedidos están abiertos.


Me encontré con el mismo problema, al abrir un archivo para leer y tratar de escribir en él, el archivo no se crea, o no se escribe nada en él.

Aplicación de la cubierta de servicio :

Cuando se intenta añadir a un archivo de texto desregistrado con la clave FILE_READ|FILE_WRITE, sin establecer primero explícitamente el puntero del archivo con FileSeek(), la escritura no se produce en absoluto.

En versiones anteriores del terminal, cuando se preleía un archivo de texto mediante la función FileReadString(), el puntero del archivo se establecía automáticamente.

He aquí una respuesta de los desarrolladores:

El último cambio en la funcionalidad de los archivos se remonta a mediados de 2008.

Nunca antes había sido posible añadir a un archivo sin establecer primero un puntero de archivo al final.

De nuevo una pregunta sobre la información extra. ¿Tiene esto algo que ver con la adición al final de un archivo?

Cualquier operación de lectura-escritura de archivos mueve automáticamente el puntero del archivo. Esto siempre ha sido así y no ha cambiado. Sin embargo, si el archivo se abre como csv, es posible el almacenamiento intermedio de datos. Entonces el puntero del archivo puede no estar donde se espera que esté. De nuevo, esto siempre ha sido así, tanto en la versión anterior como en la previa, desde el inicio de la versión oficial.

Hemos reiterado muchas veces que el principio de incumplimiento es extremadamente perjudicial. Incluso para los punteros de los archivos. Maneje el puntero del archivo explícitamente a menos que utilice la lectura continua o la escritura continua (especialmente los casos exóticos de lectura-escritura mixta).

Conclusión: utilice FileSeek

 
khorosh:
Compruébalo.
Gracias.
 
Roll:

Su Asesor Experto opera con señales ADX de 30 minutos. Si su Asesor Experto opera con señales ADX de 1min, dichas señales serán más frecuentes que en la primera variante. La captura de pantalla en su variante se toma sólo en la apertura de la posición BUY.
Le interesa la falta de indicadores del gráfico en la captura de pantalla (en modo de prueba). Se le pidió que verificara la presencia de los indicadores en la captura de pantalla en modo demo. Se ha añadido el script con la función adecuada, para que pueda comprobar y entender su pregunta rápidamente, en lugar de esperar durante horas. Ha pasado más de un día. Quiero saber... ¿cuáles son sus resultados?

Os mantendré informados, estoy ocupado pero intentaré comprobarlo mañana.
 

¿Puedes decirme cuál es la diferencia entre definir un nombre en una función o asignar un nombre de variable y luego pasar la variable a una función?

//-------------- первый вариант (рабочий)

string up_line = "upline_", down_line = "downline_";
 
     flatlineup(up_line+TimeToStr(Time[i]), y2,x2,y22,x2,Red,1);     Имя присваиваю в теле функции
     flatlinedown(down_line+TimeToStr(Time[i]), y1,x1,y11,x1,Blue,1);
     dellline(up_line, down_line);

TimeToStr(Time[i]) указывал в имени тренд лайн в теле функции
//--------------- второй вариант (нерабочий)

string up_line = "upline_"+TimeToStr(Time[i]); //--или пробовал StringConcatenate()        ИМЯ ПРИСВАИВАЮ В ПЕРЕМЕННОЙ
string down_line = "downline_"+TimeToStr(Time[i]); //--или пробовал StringConcatenate()
 
     flatlineup(up_line, y2,x2,y22,x2,Red,1);                 ПЕРЕДАЮ ПЕРЕМЕННУЮ В ФУНКЦИЮ
     flatlinedown(down_line, y1,x1,y11,x1,Blue,1);
     dellline(up_line, down_line);
 
rustein:
Ayúdame a eliminar el error de división en cero en el EA.

Gracias de antemano.

Puedes hacerlo así, a mí me funciona

double BullPrice()

{

double BullAveragePrice=0;

doubleSummBullLots=0;

for (int i = OrdersTotal() - 1; i >= 0; i--)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

si (OrderSymbol() != Symbol()) continuar;

if (OrderSymbol() == Symbol() && OrderType() == OP_BUY)

{

BullAveragePrice+=OrderOpenPrice()*OrderLots();

MiSumaLosLotes+=LosLotesDelOrden();

}

}

if (MiSumaDeLotes>0) BullAveragePrice = NormalizeDouble(BullAveragePrice / MiSumaDeLotes, Dígitos);

return(PrecioPromedioBull);

}

 
Zhunko:

En la carpeta de MT4, hay un ejemplo de código C++ para todos los casos en MQL4. Compila ese código y pega tu propio código en él. Encontrará inmediatamente la diferencia entre el suyo y el del ejemplo.

Mi MT no tiene ninguno. Sólo hay una biblioteca escrita en MQL (stdlib.mq4). ¿Puedes poner un ejemplo?
 
Fox_RM:

¿Puedes decirme cuál es la diferencia entre definir un nombre en una función o asignar un nombre de variable y luego pasar la variable a una función?

En tu ejemplo, la única diferencia está en pasar los parámetros a la función
dellline(...)
 
costy_:

Por lo demás...

Gracias.
 

Por favor, aconsejar la situación es esta, leo un archivo csv como este

void ReadDate(){
   while(!IsStopped()){
      string dTime = FileReadString(ExtCsvHandle); // читаем строчку 1
      string sValue = FileReadString(ExtCsvHandle); // читаем строчку 2
      Print("Date=",StrToTime(dTime), "Value=",sValue);   
      
   }
}

pero el archivo csv tiene una cabecera, la primera línea extra

Time,Value
15.02.2012 00:00:00;Значение1
15.02.2012 00:01:07;Значение2
15.02.2012 00:02:26;Значение3
15.02.2012 00:00:00;Значение1
15.02.2012 00:01:07;Значение2
15.02.2012 00:02:26;Значение3

Como omitir la primera línea programáticamente, o borrarla programáticamente en general al guardar el valor se estropea todo.

Gracias de antemano.

Razón de la queja: