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_FileWriteInteger - Skript für den MetaTrader 5
- Ansichten:
- 879
- 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
Demo_FileSizeDas Skript demonstriert ein Beispiel für die Verwendung der FileSize() Funktion
Der Indikator demonstriert ein Beispiel für die Verwendung der FileReadInteger() Funktion
Profit Loss CalculatorBerechnungspanel 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