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
Skripte

Demo_FileWriteInteger - Skript für den MetaTrader 5

Ansichten:
873
Rating:
(34)
Veröffentlicht:
2016.06.20 13:23
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

Das Skript holt Preise vom angegenen Symbol, analysiert diese und schreibt in bestimmten Perioden die Preisbewegungsdaten in die Binärdatei . Die FileWriteInteger() Funktion wird für das Schreiben aller Daten verwendet.

Der Date-Wert werden zuerst in einen String konvertiert, dann in das Uchar Type-Array aufgeteilt und dann mit Hilfe der Funktion in die Datei geschrieben.

Code:

//--- zeige das Fesnter mit den Eingabeparametern beim Aufruf des Skripts
#property script_show_inputs
//--- Parameter für das Beziehen von Daten vom Terminal
input string             InpSymbolName="EURUSD";           // Währungspaar
input ENUM_TIMEFRAMES    InpSymbolPeriod=PERIOD_M15;       // TimeFrame
input datetime           InpDateStart=D'2013.01.01 00:00'; // Daten kopieren Startdatum
//--- Parameter für das Schreien von Daten in die Datei
input string             InpFileName="Trend.bin"; // Dateiname
input string InpDirectoryName="Data";   // Verzeichnisname
//+------------------------------------------------------------------+
//| Skript Programmstart Funktion                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   datetime date_finish=TimeCurrent();
   double   close_buff[];
   datetime time_buff[];
   int      size;
//--- Fehlerwert zurücksetzen
   ResetLastError();
//--- Schlusspreis für jeden Balken kopieren
   if(CopyClose(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,close_buff)==-1)
     {
      PrintFormat("Fehler beim Kopieren der Werte für die Schlusskurse. Fehlercode = %d",GetLastError());
      return;
     }
//--- Schlusspreis für jeden Balken kopieren
   if(CopyTime(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,time_buff)==-1)
     {
      PrintFormat("Fehler beim Kopieren der Werte für die Schlusskurse. Fehlercode = %d",GetLastError());
      return;
     }
//--- Buffergröße beziehen
   size=ArraySize(close_buff);
//--- Datei zum Schreiben der Werte öffnen (wenn die Datei nicht existiert wird sie automatisch erstellt)
   ResetLastError();
   int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_BIN);
   if(file_handle!=INVALID_HANDLE)
     {
      PrintFormat("%s Datei ist bereit zum Schreiben",InpFileName);
      PrintFormat("Dateipfad: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
      //--- 
      int   up_down=0; // Trend Flag
      int   arr_size;  // größe des arr Array
      uchar arr[];     // uchar type Array
      //--- Zeitwerte in Datei schreiben
      for(int i=0;i<size-1;i++)
        {
         //--- Schlusskurse des aktuellen Balken mit den nächsten Balken vergleichen
         if(close_buff[i]<=close_buff[i+1])
           {
            if(up_down!=1)
              {
               //--- Datenwert mit Hilfe von FileWriteInteger in die Datei schreiben
               StringToCharArray(TimeToString(time_buff[i]),arr);
               arr_size=ArraySize(arr);
               //--- Zuerst die anzahl der Symbole im Array schreiben
               FileWriteInteger(file_handle,arr_size,INT_VALUE);
               //--- Symbole schreiben
               for(int j=0;j<arr_size;j++)
                  FileWriteInteger(file_handle,arr[j],CHAR_VALUE);
               //--- Trend Flag ändern
               up_down=1;
              }
           }
         else
           {
            if(up_down!=-1)
              {
               //--- Datenwert mit Hilfe von FileWriteInteger in die Datei schreiben
               StringToCharArray(TimeToString(time_buff[i]),arr);
               arr_size=ArraySize(arr);
               //--- Zuerst die anzahl der Symbole im Array schreiben
               FileWriteInteger(file_handle,arr_size,INT_VALUE);
               //--- Symbole schreiben
               for(int j=0;j<arr_size;j++)
                  FileWriteInteger(file_handle,arr[j],CHAR_VALUE);
               //--- Trend Flag ändern
               up_down=-1;
              }
           }
        }
      //--- Datei schließen
      FileClose(file_handle);
      PrintFormat("Daten geschrieben, %s Datei wurde geschlossen",InpFileName);
     }
   else
      PrintFormat("Fehler beim Öffnen der Datei %s , Fehlercode = %d",InpFileName,GetLastError());
  }

Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/1635

Demo_FileTell Demo_FileTell

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

Demo_FileSize Demo_FileSize

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

Demo_FileReadInteger Demo_FileReadInteger

Der Indikator demonstriert ein Beispiel für die Verwendung der FileReadInteger() Funktion

Profit Loss Calculator Profit Loss Calculator

Berechnungspanel zum Berechnung von Gewinn/Verlust. Die Daten werden berechnet, wenn entweder Linien verschoben werden oder die Parameter in den Eingabefeldern Einstiegspreis, Lot, Gewinn oder Verlust in PIPS oder in der Kontowährung geändert werden