Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Telegram!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Expert Advisors

Demo_FileWriteArray - Experte für den MetaTrader 5

Ansichten:
669
Rating:
(23)
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

i-Monday_Sig i-Monday_Sig

Einstiegsignale nach dem System "Montag"

Demo_FileGetInteger Demo_FileGetInteger

Das Skript demonstriert ein Beispiel für die Verwendung der FileGetInteger() Funktion

Demo_FileReadArray Demo_FileReadArray

Das Skript demonstriert ein Beispiel für die Verwendung der FileReadArray() Funktion

X Bar Clear Close Trend X Bar Clear Close Trend

Alternativer Trend Indikator basierend auf dem Muster Ausbruch über die Extrema des vorherigen Balkens