Schreiben in die Datei in eine neue Zeile - Seite 4

 

Es scheint möglich zu sein, über die Zeilen zu schreiben oder zumindest ohne besondere Schwierigkeiten eine neue Zeile anstelle der ersten Zeile zu schreiben.


//Открываем файл 
   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);
// закрываем файл
 
Jetzt haben Sie die Wahl, Sie müssen entscheiden, wie Sie vorgehen wollen
 
EfremovSergey:

Es scheint ohne besondere Schwierigkeiten möglich zu sein, über die Zeilen zu schreiben oder zumindest eine neue Zeile anstelle der ersten Zeile zu schreiben.


Das ist brillant! In der Not, in einem Nickel...

Wenn man etwas aufschreiben muss, muss man es aufschreiben. Wo, wann, wie, warum und wer - das ist uns scheißegal. Unsere Aufgabe ist es, sie aufzuschreiben, und wer sie lesen muss, soll es selbst tun...

 
Maxim Kuznetsov:

Das ist brillant! Genau richtig, genau richtig...

Wenn es etwas aufzuschreiben gibt, dann muss es auch aufgeschrieben werden. Wo, wann, wie, warum und wer, das ist uns scheißegal. Unsere Aufgabe ist es, es aufzuschreiben, und wer es lesen muss - soll es selbst tun...

Nun, ja, das ist keine gute Option...

Man kann neue Informationen schreiben oder einfach eine Zeile löschen, aber aus irgendeinem Grund kann man sie nicht löschen... seltsame Geschichte...

 

Ich habe herausgefunden, wie ich mit der Datei arbeiten kann, vielen Dank und vielen Dank.

Eine solche Frage, die ein wenig vom Thema abweicht.

Als Ergebnis der Lektüre der Zeile

string s=FileReadString(h)

erhalten wir den Wert von s, der die Daten für die Eröffnung des Auftrags enthält, z. B. EURUSD,5,0.02,1.17808,70,0,0,302090516

Ist es möglich, diesen Wert als Ganzes in den Vorgang OrderSend einzufügen, ohne jeden beschreibenden Teil der zu öffnenden Bestellung einzeln zu extrahieren?

OrderSend(s)

Natürlich funktioniert es nicht

OrderSend - Торговые функции - Справочник MQL4
OrderSend - Торговые функции - Справочник MQL4
  • docs.mql4.com
[in]  Цвет открывающей стрелки на графике. Если параметр отсутствует или его значение равно CLR_NONE, то открывающая стрелка не отображается на графике. При открытии рыночного ордера (OP_SELL или OP_BUY) в качестве цены открытия могут использоваться только самые последние цены Bid (для продажи) или Ask (для покупки). Если операция проводится по...
 
Die Funktion nimmt Werte mehrerer Variablen unterschiedlichen Typs an, und Sie haben eine Zeichenkette.
 
EfremovSergey:

Wenn man die bereits verarbeiteten Informationen nicht loswird, muss man meiner Meinung nach Ressourcen für ihre erneute Analyse aufwenden.

Informationen innerhalb eines einzelnen EA müssen nicht in eine Datei geschrieben werden, wenn sie nicht selbst gelesen werden müssen. wenn von außen, dann schreiben Sie eine leere Datei in die Datei nach dem Lesen.

 
Aleksei Stepanenko:
Die Funktion nimmt Werte mehrerer Variablen unterschiedlichen Typs an, und Sie haben eine Zeichenkette.

Das ist die Frage... wie man "schmerzlos" eine variable Aufzählung aus einer Zeichenkette macht. Die Verwendung der Funktion StringSubstr führt zu einer nicht sehr vielseitigen Lösung. StringSplit versteht nicht ganz, wie es funktioniert... Vielleicht können einige Umstellungen vorgenommen werden?

 
Valeriy Yastremskiy:

Die Informationen, wenn sie innerhalb eines EA liegen, müssen nicht in die Datei geschrieben werden, wenn Sie sie nicht selbst lesen müssen.

Wenn wir einen separaten EA erstellen wollen, der Aufträge für ein beliebiges Paar öffnet, und der EA eines bestimmten Paares den offenen Auftrag bereits in der Steuerung abfängt, dann wird dies wahrscheinlich funktionieren, aber wenn jeder EA eines bestimmten Paares einzeln mit der Datei arbeiten muss, dann ist eine Synchronisierung auf diese Weise unmöglich.

 

Lassen Sie mich noch einmal versuchen, die Idee eines einfach zu verwendenden Arrays zu vermitteln

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

Ich habe bereits geschrieben, wie man dieses Array in einer Datei speichert.

Oder parsen Sie Ihre Zeichenkette.