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:
- 707
- Rating:
- Veröffentlicht:
- 2016.06.20 13:21
- 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 die Werte des Moving Average Indikators und schreibt diese in die Binärdatei im "Data" Unterverzeichnis des lokalen Terminalordners. In den Skript Eingabeparametern können Parameter für die MA Indikator Berechnung, den Namen des Währungspaares, TimeFrame und das Datum für das wir die Indikatordaten berechnen wollen, angeben werden.
Neben den MA-Indikator Werten, führten die entsprechenden Werte der Zeit vorläufig zu einem double -Typ der auch in die Datei geschrieben wird.
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="EURJPY"; // Währungspaar input ENUM_TIMEFRAMES InpSymbolPeriod=PERIOD_M15; // TimeFrame input int InpMAPeriod=10; // Glättungsperiode input int InpMAShift=0; // Indikator Verschiebung input ENUM_MA_METHOD InpMAMethod=MODE_SMA; // Glättungsart input ENUM_APPLIED_PRICE InpAppliedPrice=PRICE_CLOSE; // Preistyp 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="MA.csv"; // Dateiname input string InpDirectoryName="Data"; // Verzeichnisname //+------------------------------------------------------------------+ //| Skript Programmstart Funktion | //+------------------------------------------------------------------+ void OnStart() { datetime date_finish=TimeCurrent(); double ma_buff[]; datetime time_buff[]; int size; //--- Hole MA Indikator handle ResetLastError(); int ma_handle=iMA(InpSymbolName,InpSymbolPeriod,InpMAPeriod,InpMAShift,InpMAMethod,InpAppliedPrice); if(ma_handle==INVALID_HANDLE) { //--- Fehler beim Holen des Indikator Handle PrintFormat("Fehler beim Holen des Indikator-Handles. Fehlercode = %d",GetLastError()); return; } //--- in der Schleife bleiben, bis der Indikator alle Werte berechnet hat while(BarsCalculated(ma_handle)==-1) Sleep(20); // Pause um dem Indikator Zeit zu geben alle Werte zu berechnen PrintFormat("Indikatorwerte beginnend mit %s werden in die Datei geschrieben",TimeToString(InpDateStart)); //--- kopiere Indikatorwerte ResetLastError(); if(CopyBuffer(ma_handle,0,InpDateStart,date_finish,ma_buff)==-1) { PrintFormat("Fehler beim Kopieren der Indikatorwerte. Fehlercode = %d",GetLastError()); return; } //--- Kopieren der entsprechenden Balken Ankunftszeit ResetLastError(); if(CopyTime(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,time_buff)==-1) { PrintFormat("Fehler beim Kopieren der Zeitwerte. Fehlercode = %d",GetLastError()); return; } //--- Buffergröße beziehen size=ArraySize(ma_buff); //--- vom Indikator belegten Speicher freigeben IndicatorRelease(ma_handle); //--- 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_BIN); if(file_handle!=INVALID_HANDLE) { PrintFormat("%s Datei ist bereit zum Schreiben",InpFileName); PrintFormat("Dateipfad: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH)); //--- zuerst Größe des Datensamples schreiben FileWriteDouble(file_handle,(double)size); //--- Indikatorzeit und -wert in Datei schreiben for(int i=0;i<size;i++) { FileWriteDouble(file_handle,(double)time_buff[i]); FileWriteDouble(file_handle,ma_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/1629

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

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

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

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