Mira cómo descargar robots gratis
¡Búscanos en Facebook!
Pon "Me gusta" y sigue las noticias
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Evalúe su trabajo en el terminal MetaTrader 5
Demo_FileReadDatetime - indicador para MetaTrader 5
- Visualizaciones:
- 973
- Ranking:
- Publicado:
- 2014.01.14 14:32
- Actualizado:
- 2016.11.22 07:33
- ¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa
El indicador lee las señales de compra y venta desde un archivo ubicado en una subcarpeta de la carpeta local del terminal y las visualiza en la forma de flechas dirigidas hacia arriba o hacia abajo. Para obtener el archivo con las señales se debe lanzar previamente el script Demo_FileWrite. La ubicación de la carpeta local del terminal puede ser obtenida mediante la función TerminalInfoString().
PrintFormat("Ruta hacia la carpeta local del terminal: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));Para leer los datos, además de la función FileReadDatetime(), el indicador también utiliza las funciones FileReadNumber() y FileReadBool().
Código:
#property indicator_chart_window #property indicator_buffers 2 #property indicator_plots 2 //---- dibujar Label1 #property indicator_label1 "UpSignal" #property indicator_type1 DRAW_ARROW #property indicator_color1 clrRed #property indicator_style1 STYLE_SOLID #property indicator_width1 4 //---- dibujar Label2 #property indicator_label2 "DownSignal" #property indicator_type2 DRAW_ARROW #property indicator_color2 clrRed #property indicator_style2 STYLE_SOLID #property indicator_width2 4 //--- parámetros para leer los datos input string InpFileName="MACD.csv"; // nombre del archivo input string InpDirectoryName="Data"; // nombre de la carpeta //--- variables globales int ind=0; // índice double upbuff[]; // buffer del indicador para flechas hacia arriba double downbuff[]; // buffer del indicador para flechas hacia abajo bool sign_buff[]; // matriz de señales (true - compra, false - venta) datetime time_buff[]; // matriz con la fecha de llegada de la señal int size=0; // tamaño de la matriz de señales //+------------------------------------------------------------------+ //| Función de inicialización del indicador personalizado | //+------------------------------------------------------------------+ int OnInit() { //--- abre el archivo ResetLastError(); int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_CSV); if(file_handle!=INVALID_HANDLE) { PrintFormat("Se ha abierto el archivo %s para lectura",InpFileName); //--- primero, lee el número de señales size=(int)FileReadNumber(file_handle); //--- reserva memoria para las matrices ArrayResize(sign_buff,size); ArrayResize(time_buff,size); //--- read data from the file for(int i=0;i<size;i++) { //--- fecha de la señal time_buff[i]=FileReadDatetime(file_handle); //--- valor de la señal sign_buff[i]=FileReadBool(file_handle); } //--- cierra el archivo FileClose(file_handle); } else { PrintFormat("Fallo al abrir el archivo %s, Código de error = %d",InpFileName,GetLastError()); return(INIT_FAILED); } //--- asociando las matrices SetIndexBuffer(0,upbuff,INDICATOR_DATA); SetIndexBuffer(1,downbuff,INDICATOR_DATA); //--- se establece los sbolos a utilizar en PLOT_ARROW PlotIndexSetInteger(0,PLOT_ARROW,241); PlotIndexSetInteger(1,PLOT_ARROW,242); //---- se establecen los valores del indicador que no seran visibles en el gráfico PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0); PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Función de iteración del indicador personalizado | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { ArraySetAsSeries(time,false); ArraySetAsSeries(high,false); ArraySetAsSeries(low,false); //--- ciclo para las barras que aún no hayan sido calculadas for(int i=prev_calculated;i<rates_total;i++) { //--- el valor por defecto es 0 upbuff[i]=0; downbuff[i]=0; //--- comprueba si aún hay datos if(ind<size) { for(int j=ind;j<size;j++) { //--- si la fecha coincide, usa el valor del archivo if(time[i]==time_buff[j]) { //--- dibuja la felcha acorde con la señal if(sign_buff[j]) upbuff[i]=high[i]; else downbuff[i]=low[i]; //--- incrementa el contador ind=j+1; break; } } } } //--- devuelve el valor de prev_calculated para la siguiente llamada return(rates_total); }
Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/1627
Blau_TSI
True Strength Index (TSI) indicador de William Blau.
Blau_ErgodicOscilador Ergodic de William Blau.
Blau_Mtm
Indicador de momento de William Blau.
Demo_FileWriteEste script muestra un ejemplo del uso de la función FileWrite()