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_FileWrite - Skript für den MetaTrader 5
- Ansichten:
- 676
- Rating:
- 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
Alternativer Trend Indikator basierend auf dem Muster Ausbruch über die Extrema des vorherigen Balkens
Demo_FileReadArrayDas Skript demonstriert ein Beispiel für die Verwendung der FileReadArray() Funktion
Der Indikator demonstriert ein Beispiel für die Verwendung der FileReadDatetime() Funktion
Demo_FileWriteDoubleDas Skript demonstriert ein Beispiel für die Verwendung der FileWriteDouble() Funktion