und werden Sie Mitglied unserer Fangruppe
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Bewerten Sie es im Terminal MetaTrader 5
Demo_FileWriteArray - Experte für den MetaTrader 5
- Ansichten:
- 715
- Rating:
- Veröffentlicht:
- 2016.06.20 13:18
- Aktualisiert:
- 2016.11.22 07:34
- Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
Der Expert Advisor holt Werte für Bid und Ask bei jedem Tick und merkt sich diese im "prices" Datenstruktur-Array. Bei jedem zwanzigsten Tick schreibt der Expert Advisor die Strukturobjekte mit Hilfe der FileWriteArray() Funktion in die Datei. Daten werden in der binären Datei im Unterverzeichnis des lokalen Terminalordners gespeichert. Der Ort des lokalen Terminal-Ordners kann durch Aufruf der TerminalInfoString() Funktion festgestellt werden.
PrintFormat("Der Pfad zum lokalen Terminal-Ordner lautet: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));Beim Entfernen des Expert Advisor vom Chart, erfolgt das Speichern der noch nicht geschriebenen Daten, danach beendet derExpert Advisor seine Arbeit.
Code:
Eingabeparameter: input string InpFileName="data.bin"; input string InpDirectoryName="GleicherOrdner"; //+------------------------------------------------------------------+ //| Struktur zum Speichern von Preisdaten | //+------------------------------------------------------------------+ struct prices { datetime date; // data double bid; // Bid price double ask; // Ask price }; //--- Globale Variables int count=0; int size=20; string path=InpDirectoryName+"//"+InpFileName; prices arr[]; //+------------------------------------------------------------------+ //| Experteninitialisierungfunktion | //+------------------------------------------------------------------+ int OnInit() { //--- Speicher für das Array reservieren ArrayResize(arr,size); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expertendeinitialisierungsfunktion | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- schreibe die verbleibenden count Strings wenn count<n WriteData(count); } //+------------------------------------------------------------------+ //| Expert tick Funktion | //+------------------------------------------------------------------+ void OnTick() { //--- Daten in Array speichern arr[count].date=TimeCurrent(); arr[count].bid=SymbolInfoDouble(Symbol(),SYMBOL_BID); arr[count].ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK); //--- zeige aktuelle Daten Print("Date = ",arr[count].date," Bid = ",arr[count].bid," Ask = ",arr[count].ask); //--- counter erhöhen count++; //--- wenn das Array gefüllt ist, Daten in Datei schreiben und dann leeren if(count==size) { WriteData(size); count=0; } } //+------------------------------------------------------------------+ //| Schreibe n elemente des Array in die Datei | //+------------------------------------------------------------------+ void WriteData(const int n) { //--- Datei öffnen ResetLastError(); int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN); if(handle!=INVALID_HANDLE) { //--- Schreibe Arraydaten ans Ende der Datei FileSeek(handle,0,SEEK_END); FileWriteArray(handle,arr,0,n); //--- Datei schließen FileClose(handle); } else Print("Fehler beim Öffnen der Datei ",GetLastError()); }
Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/1620
Einstiegsignale nach dem System "Montag"
Demo_FileGetIntegerDas Skript demonstriert ein Beispiel für die Verwendung der FileGetInteger() Funktion
Das Skript demonstriert ein Beispiel für die Verwendung der FileReadArray() Funktion
X Bar Clear Close TrendAlternativer Trend Indikator basierend auf dem Muster Ausbruch über die Extrema des vorherigen Balkens