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
- Visualizaciones:
- 1036
- 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

True Strength Index (TSI) indicador de William Blau.

Oscilador Ergodic de William Blau.

Indicador de momento de William Blau.

Este script muestra un ejemplo del uso de la función FileWrite()