Escribir en el archivo en una nueva línea - página 4

 

Encima de las líneas parece ser posible escribir, al menos escribir una nueva línea en lugar de la primera es posible sin ninguna dificultad especial.


//Открываем файл 
   int h1=FileOpen("Copy.txt",FILE_WRITE | FILE_READ,";");
   FileSeek(h1, 0, SEEK_SET);
   FileWrite(h1,Symbol(),OP_BUYSTOP,OrderLots()*Koof,OrderStopLoss(),Slippage,0,0,IntegerToString(OrderTicket()));
   FileClose(h1);
// закрываем файл
 
Ahora tienes opciones, depende de ti decidir cómo quieres proceder
 
EfremovSergey:

Parece que es posible escribir encima de las líneas, o al menos escribir una nueva línea en lugar de la primera sin ninguna dificultad especial.


¡Eso es brillante! En un apuro, en un níquel...

Si hay que escribir algo, hay que escribirlo. Dónde, cuándo, cómo, por qué y a quién, nos importa una mierda. Nuestro trabajo es escribirlo, y quien tenga que leerlo, que lo haga él mismo...

 
Maxim Kuznetsov:

¡Eso es brillante! En el punto, en el punto...

si hay que escribir algo, hay que escribirlo. Dónde, cuándo, cómo, por qué y quién, nos importa una mierda. Nuestro trabajo es escribirlo, y quien tenga que leerlo, que lo haga él mismo...

Bueno, sí, esa no es una gran opción...

Se puede escribir nueva información o simplemente basura en una línea, pero por alguna razón no se puede borrar del todo... extraña historia...

 

He averiguado cómo trabajar con el archivo, muchas gracias y muy agradecido.

Una pregunta así, un poco fuera de tema.

Como resultado de la lectura de la línea

string s=FileReadString(h)

obtenemos el valor de s que implica los datos para abrir la orden, por ejemplo: EURUSD,5,0.02,1.17808,70,0,0,302090516

¿Es posible sustituir de alguna manera este valor en su conjunto en la operación OrderSend sin extraer cada parte descriptiva constitutiva del pedido que se va a abrir por separado?

OrderSend(s)

Por supuesto que no funciona

OrderSend - Торговые функции - Справочник MQL4
OrderSend - Торговые функции - Справочник MQL4
  • docs.mql4.com
[in]  Цвет открывающей стрелки на графике. Если параметр отсутствует или его значение равно CLR_NONE, то открывающая стрелка не отображается на графике. При открытии рыночного ордера (OP_SELL или OP_BUY) в качестве цены открытия могут использоваться только самые последние цены Bid (для продажи) или Ask (для покупки). Если операция проводится по...
 
La función toma valores de varias variables de diferentes tipos, y tiene una cadena.
 
EfremovSergey:

En mi opinión, si no te deshaces de la información que ya ha sido procesada, tendrás que gastar recursos en volver a analizarla.

La información si dentro de un solo EA no necesita ser escrita en un archivo si no necesita ser leída por sí misma. si desde el exterior, entonces escribe un archivo vacío en el archivo después de leerlo.

 
Aleksei Stepanenko:
La función toma valores de varias variables de diferentes tipos, y tiene una cadena.

Esa es la cuestión... cómo hacer "sin dolor" una enumeración de variables a partir de una cadena. El uso de la función StringSubstr da como resultado una solución muy poco versátil. StringSplit no entiende muy bien cómo funciona... ¿Tal vez se puedan hacer algunas conversiones?

 
Valeriy Yastremskiy:

Si la información está dentro de un EA, no es necesario escribirla en el archivo, si no necesita leerla usted mismo. si desde el exterior, entonces escriba un archivo vacío en el archivo después de leerlo.

Si queremos hacer un EA separado que abra órdenes para cualquier par y el EA de un par particular ya intercepta la orden abierta en el control, entonces esto probablemente funcionará, pero si cada EA de un par particular necesitará trabajar con el archivo individualmente, entonces la sincronización de esta manera será imposible.

 

Permítanme que intente de nuevo transmitir la idea de la conveniencia de utilizar un array

struct MyData
   {
   string   symbol;              // символ
   int      operation;           // торговая операция
   double   lot;                 // количество лотов
   double   stoploss;            // stop loss
   double   takeprofit;          // take profit
   int      magic;               // идентификатор
   } my[];

for(int i=0; i<ArraySize(my); i++)
   {
   if(my[i].magic==MagicNumber)
      {
      eTicket=OrderSend(my[i].symbol,my[i].operation,my[i].lot,ePrice,(int)SymbolInfoInteger(my[i].symbol,SYMBOL_SPREAD),
			my[i].stoploss,my[i].takeprofit,NULL,my[i].magic,0,eColor);
      }
   }

Ya he escrito cómo guardar esta matriz en un archivo.

O analice su cadena.