Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Facebook!
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
Ansichten:
676
Rating:
(28)
Veröffentlicht:
2016.06.20 13:20
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 definiert Signale gebildet durch den MACD Indikator und speichert diese in die Datei. In den Eingabeparameter des Skriptes können Parameter für die Berechnung des MACD Indikators angegeben werden, außerdem der Name des Währungspaares, der TimeFrame und das Datum für das wir die Daten analysieren wollen. Die Datei mit den Indikatorsignalen wird im "Data" Unterverzeichnis des lokalen Terminalordners abgelegt.

Code:

Zunäxhte holen wir das Array der Indikatorwerte und das Zeitarray für die festgelegt Periode:

//--- Endzeit ist die aktuelle Zeit
   date_finish=TimeCurrent();
//--- hole MACD Indikator Handle
   ResetLastError();
   int macd_handle=iMACD(InpSymbolName,InpSymbolPeriod,InpFastEMAPeriod,InpSlowEMAPeriod,InpSignalPeriod,InpAppliedPrice);
   if(macd_handle==INVALID_HANDLE)
     {
      //--- Indikator Handle holen fehlgeschlagen
      PrintFormat("Fehler beim Holen des Indikator-Handles. Fehlercode = %d",GetLastError());
      return;
     }
//--- in der Schleife bleiben, bis der Indikator alle Werte berechnet hat
   while(BarsCalculated(macd_handle)==-1)
      Sleep(10); // Pause um dem Indikator Zeit zu geben alle Werte zu berechnen
//--- Indikatorwerte für eine bestimmte Periode kopieren
   ResetLastError();
   if(CopyBuffer(macd_handle,0,InpDateStart,date_finish,macd_buff)==-1)
     {
      PrintFormat("Fehler beim Kopieren der Indikatorwerte. Fehlercode = %d",GetLastError());
      return;
     }
//--- die geeignete Zeit für die Indikatorwerte kopieren
   ResetLastError();
   if(CopyTime(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,date_buff)==-1)
     {
      PrintFormat("Fehler beim Kopieren der Zeitwerte. Fehlercode = %d",GetLastError());
      return;
     }

Dann Definition der Indikator-Signale und die Zeit ihrer Entstehung:

//--- Buffergröße beziehen
   macd_size=ArraySize(macd_buff);
//--- Daten analyisieren und Indikatorsignale in Array speichern
   ArrayResize(sign_buff,macd_size-1);
   ArrayResize(time_buff,macd_size-1);
   for(int i=1;i<macd_size;i++)
     {
      //--- Kaufsignal
      if(macd_buff[i-1]<0 && macd_buff[i]>=0)
        {
         sign_buff[sign_size]=true;
         time_buff[sign_size]=date_buff[i];
         sign_size++;
        }
      //--- Verkaufssignal
      if(macd_buff[i-1]>0 && macd_buff[i]<=0)
        {
         sign_buff[sign_size]=false;
         time_buff[sign_size]=date_buff[i];
         sign_size++;
        }
     }

Schlußendlich schreiben wir die erhalten Signale in die Datei mit Hilfe der FileWrite() Funktion:

//--- Datei zum Schreiben derIndikatorwerte öffnen (wenn die Datei nicht existiert, wird sie automatisch erstellt)
   ResetLastError();
   int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_CSV);
   if(file_handle!=INVALID_HANDLE)
     {
      PrintFormat("%s Datei ist bereit zum Schreiben",InpFileName);
      PrintFormat("Dateipfad: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
      //--- zuerst Anzahl der Signale schreiben
      FileWrite(file_handle,sign_size);
      //--- Zeit und Werte der Signale in die Datei schreiben
      for(int i=0;i<sign_size;i++)
         FileWrite(file_handle,time_buff[i],sign_buff[i]);
      //--- 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/1626

X Bar Clear Close Trend X Bar Clear Close Trend

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

Demo_FileReadArray Demo_FileReadArray

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

Demo_FileReadDatetime Demo_FileReadDatetime

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

Demo_FileWriteDouble Demo_FileWriteDouble

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