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
- Ansichten:
- 973
- Rating:
- 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

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

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

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

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