Fragen von einem "Dummy" - Seite 85

 
AUser:

Ich versuche herauszufinden, wie ich Daten in einer Datei speichern kann. Ich habe den folgenden Code geschrieben:

Nur der letzte Preiswert wird in einer Datei gespeichert. Ich möchte den Wert der Preise in einer Spalte. Was habe ich falsch gemacht?

Siehe "Besonderheiten des Betriebs bei der Angabe von Lese- und Schreibflags" in MQL5-Referenz / Standardkonstanten, Aufzählungen und Strukturen / Eingabe-/Ausgabekonstanten / Datei-Öffnungsflags
 

Ich bin wirklich dumm)) Ich habe den Rat befolgt und den Code umgeschrieben, obwohl ich nicht verstehe, warum er so war... es hat sich sowieso nichts geändert. Im Grunde ist es das einfachste Programm, um etwas in eine Datei zu schreiben, und ich bin so dumm...))

void OnInit()
{
double BID = SymbolInfoDouble(_Symbol,SYMBOL_BID);
int FILE = FileOpen("FILE",FILE_WRITE|FILE_CSV,'\t',CP_ACP);
FileIsEnding(FILE);
FileWrite(FILE,BID);
}
void OnDeinit(const int reason)
{
int FILE = FileOpen("FILE",FILE_WRITE|FILE_CSV,'\t',CP_ACP);
FileClose(FILE);
}

Nur zur Erinnerung: Ich versuche, ein Programm zum Speichern von Ticks in einer Datei zu schreiben. Aus irgendeinem Grund wird nur das letzte Häkchen gespeichert.

 
AUser:

Ich bin wirklich dumm)) Ich habe den Rat befolgt und den Code umgeschrieben, obwohl ich nicht verstehe, warum er so war... jedenfalls hat sich nichts geändert. Im Grunde ist es das einfachste Programm, um etwas in eine Datei zu schreiben, und ich bin so dumm...))

Nur zur Erinnerung: Ich versuche, ein Programm zum Speichern von Ticks in einer Datei zu schreiben. Aus irgendeinem Grund wird nur das letzte Häkchen gespeichert.

Funktion
FileIsEnding(FILE);

Setzt den Dateicursor nicht an das Ende der Datei, wie Sie es wahrscheinlich beabsichtigt haben.

Finde es heraus und du wirst glücklich sein. :)

 
AUser:

Ich bin wirklich dumm)) Ich habe den Rat befolgt und den Code umgeschrieben, obwohl ich nicht verstehe, warum er so war... jedenfalls hat sich nichts geändert. Im Grunde ist es das einfachste Programm, um etwas in eine Datei zu schreiben, und ich bin so dumm...))

Nur zur Erinnerung: Ich versuche, ein Programm zum Speichern von Ticks in einer Datei zu schreiben. Aus irgendeinem Grund wird nur das letzte Häkchen gespeichert.

Dies ist der richtige Weg.

int FILE;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   FILE = FileOpen("FILE",FILE_WRITE|FILE_CSV,'\t',CP_ACP);
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   FileClose(FILE);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double BID = SymbolInfoDouble(_Symbol,SYMBOL_BID);
   FileWrite(FILE,BID);
  }
//+------------------------------------------------------------------+
 
sergey1294:

so sollte es sein

Genau, danke))
 
ZahvatkiN:

Ich habe bemerkt, dass in MT4 vor der Eröffnung eines Geschäfts können Sie Stop-Loss und Take-Profit-Ebene, aber MT5 hat es nicht oder ist es möglich, aber in einer anderen Weise?

 
sergeev:

ZahvatkiN:

Ich habe bemerkt, dass in MT4, bevor Sie ein Geschäft eröffnen, können Sie die Stoploss und Takeprofit Ebene, aber MT5 hat es nicht oder ist es möglich, aber in einer anderen Weise?


Hier wurde es diskutiert https://www.mql5.com/ru/forum/1111/page561
 

Hallo.Code.Working TF M15.Der Übergang zum Open-Close-Block findet bei einem neuen Takt statt.

Wenn die Position z.B. aufgrund eines Requotes nicht geöffnet wird, wird sie beim nächsten Takt wieder geöffnet.

Und wenn das Einstiegskriterium (Blick auf den OHLC des vorherigen Balkens) weg ist, wird die Position nicht eröffnet.

Verstehe ich das richtig?

ZS.Wahrscheinlich macht es Sinn, zumindest auf eine neue Minute einzugehen.

void OnTick()
  {CopyTime (_Symbol,PERIOD_M15,0,1,time);
   if (lastbar==time[0]) return;
   lastbar=time[0];
   
  SearchForExit();
  SearchForEnter();
 
   return;
  }
 

Kollegen, können Sie auf einen Blick, ohne Benchmarking, sagen, was schneller ist: CopyTime() der gesamten Historie einmal auszuführen oder es jedes Mal nur für einige Balken aufzurufen (die weniger sein können als Balken() der gesamten Historie) und die Zeit von nur einem - dem aktuellen Balken - in Arr zu kopieren?

Wie können Sie Ihre Antwort rechtfertigen, wenn Sie nicht auf die Benchmark zurückblicken, sondern logisch und wissensbasiert argumentieren? ...Obwohl ich verstehe, dass dies bereits in Richtung C/C++ geht...

 
Der richtige Ansatz besteht darin, für jede Aufgabe eine angemessene Tiefe zu verlangen. Und es besteht keine Notwendigkeit, Abfragen in voller Tiefe durchzuführen. Wichtig ist, dass der Verlauf jederzeit asynchron heruntergeladen werden kann.