Scrivere nel file su una nuova linea - pagina 4

 

Sembra che sia possibile scrivere sopra le righe, o almeno scrivere una nuova riga per sostituire la prima senza troppe difficoltà.


//Открываем файл 
   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);
// закрываем файл
 
Ora hai delle opzioni, sta a te decidere come vuoi procedere
 
EfremovSergey:

Sembra che sia possibile scrivere sopra le righe, o almeno scrivere una nuova riga al posto della prima senza particolari difficoltà.


E' geniale! In un pizzico, in un nichelino...

Se devi scrivere qualcosa, devi scriverla. Dove, quando, come, perché e a chi, non ce ne frega niente. Il nostro compito è di scriverlo, e chi ha bisogno di leggerlo, che lo faccia da solo...

 
Maxim Kuznetsov:

E' geniale! Ottimo, ottimo...

Se c'è qualcosa da scrivere, deve essere scritto. Dove, quando, come, perché e chi, non ce ne frega niente. Il nostro compito è quello di scriverlo, e chi ha bisogno di leggerlo - che lo facciano da soli...

Beh, sì, non è una grande opzione...

Puoi scrivere nuove informazioni o semplicemente cestinare una riga, ma per qualche motivo non puoi cancellarla del tutto... strana storia...

 

Ho capito come lavorare con il file, grazie mille e grazie mille.

Una domanda così, un po' fuori tema.

Come risultato della lettura della linea

string s=FileReadString(h)

otteniamo il valore di s che implica i dati per aprire l'ordine, ad esempio EURUSD,5,0.02,1.17808,70,0,0,302090516

È possibile sostituire in qualche modo questo valore nel suo insieme nell'operazione OrderSend senza estrarre separatamente ogni parte descrittiva costituente l'ordine da aprire?

OrderSend(s)

Naturalmente non funziona

OrderSend - Торговые функции - Справочник MQL4
OrderSend - Торговые функции - Справочник MQL4
  • docs.mql4.com
[in]  Цвет открывающей стрелки на графике. Если параметр отсутствует или его значение равно CLR_NONE, то открывающая стрелка не отображается на графике. При открытии рыночного ордера (OP_SELL или OP_BUY) в качестве цены открытия могут использоваться только самые последние цены Bid (для продажи) или Ask (для покупки). Если операция проводится по...
 
La funzione prende valori di diverse variabili di diversi tipi, e voi avete una stringa.
 
EfremovSergey:

A mio parere, se non ci si sbarazza delle informazioni che sono già state elaborate, allora si dovranno spendere risorse per ri-analizzarle.

Le informazioni se all'interno di un singolo EA non hanno bisogno di essere scritte in un file se non devono essere lette esse stesse. se dall'esterno, allora scrivete un file vuoto al file dopo averlo letto.

 
Aleksei Stepanenko:
La funzione prende valori di diverse variabili di diversi tipi, e voi avete una stringa.

Questa è la domanda... come rendere "indolore" un'enumerazione di variabili da una stringa. Usando la funzione StringSubstr si ottiene una soluzione molto poco versatile. StringSplit non capisce bene come funziona... Forse alcune conversioni possono essere fatte?

 
Valeriy Yastremskiy:

L'informazione, se all'interno di un EA, non ha bisogno di essere scritta nel file, se non ha bisogno di essere letta essa stessa. se dall'esterno, quindi dopo averla letta, scrivere un file vuoto nel file.

Se vogliamo fare un EA separato che aprirà gli ordini per qualsiasi coppia e l'EA di una particolare coppia intercetterà già l'ordine aperto nel controllo, allora questo probabilmente funzionerà, ma se ogni EA di una particolare coppia dovrà lavorare con il file individualmente, allora la sincronizzazione in questo modo sarà impossibile.

 

Lasciatemi provare di nuovo a trasmettere l'idea di un array facile da usare

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);
      }
   }

Ho già scritto come salvare questo array in un file.

O analizza la tua stringa.