Mira cómo descargar robots gratis
¡Búscanos en Telegram!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
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
Scripts

Demo_FileWriteDouble - script para MetaTrader 5

Visualizaciones:
895
Ranking:
(33)
Publicado:
2014.01.14 14:32
Actualizado:
2016.11.22 07:33
MQL5 Freelance ¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

El script optiene los valores del indicador Moving Average y los escribe en un archivo binario en la subcarpeta "Data" de la carpeta local del terminal. Entre los parámetros de entrada del script se pueden especificar parámetros para los cálculos del indicador MA, el nombre de la divisa y el periodo, así como la fecha a partir de la cual se calcularán los valores del indicador.

Además de los valores del indicador MA, los valores correspondientes a las fecha considerador como tipo double son escritos también en el archivo.

Código:

//--- muestra la ventana de parámetros de entrada al lanzar el script
#property script_show_inputs
//--- parámetros para recibir los datos del terminal
input string             InpSymbolName="EURJPY";           // par de divisas
input ENUM_TIMEFRAMES    InpSymbolPeriod=PERIOD_M15;       // periodo
input int                InpMAPeriod=10;                  // peridodo de suavizado
input int                InpMAShift=0;                    // desplazamniento del indicador
input ENUM_MA_METHOD     InpMAMethod=MODE_SMA;             // tipo de suavizado
input ENUM_APPLIED_PRICE InpAppliedPrice=PRICE_CLOSE;      // tipo de precio
input datetime           InpDateStart=D'2013.01.01 00:00'; // fecha de inicio de la copia de datos
//--- parámetros para escribir los datos al archivo
input string             InpFileName="MA.csv";    // nombre del archivo
input string             InpDirectoryName="Data"; // nombre de la carpeta
//+------------------------------------------------------------------+
//| Función de inicio del script                                     |
//+------------------------------------------------------------------+
void OnStart()
  {
   datetime date_finish=TimeCurrent();
   double   ma_buff[];
   datetime time_buff[];
   int      size;
//--- obtiene el manejador del MA
   ResetLastError();
   int ma_handle=iMA(InpSymbolName,InpSymbolPeriod,InpMAPeriod,InpMAShift,InpMAMethod,InpAppliedPrice);
   if(ma_handle==INVALID_HANDLE)
     {
      //--- fallo al obtener el manejador del indicador 
      PrintFormat("Error al recibir el manejador del indicador. Código de error = %d",GetLastError());
      return;
     }
//--- nos mantenemos dentro del ciclo mientras el indicador calcula todos sus valores
   while(BarsCalculated(ma_handle)==-1)
      Sleep(20); // pausa para permitir al inidcador realizar sus cálculos
   PrintFormat("Los valores del indicador a partir de %s se escribirán en el archivo",TimeToString(InpDateStart));
//--- copia los valores del indicador
   ResetLastError();
   if(CopyBuffer(ma_handle,0,InpDateStart,date_finish,ma_buff)==-1)
     {
      PrintFormat("Error al copiar los valores del indicador. Código de error = %d",GetLastError());
      return;
     }
//--- copia las fechas de las barras correspondientes
   ResetLastError();
   if(CopyTime(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,time_buff)==-1)
     {
      PrintFormat("Error al copiar los valores de las fechas. Código de error = %d",GetLastError());
      return;
     }
//--- recibe el tamaño del buffer
   size=ArraySize(ma_buff);
//--- libera la memoria ocupada por el indicador
   IndicatorRelease(ma_handle);
//--- abre el archivo para escribir los valores del indicador (si no existe, será creado automáticamente)
   ResetLastError();
   int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_BIN);
   if(file_handle!=INVALID_HANDLE)
     {
      PrintFormat("El archivo %s está disponible para escritura",InpFileName);
      PrintFormat("Ruta del archivo: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
      //--- primero escribimos el tamaño de la muestra de datos
      FileWriteDouble(file_handle,(double)size);
      //--- escribimos la fecha del indicador y su valor en el archivo
      for(int i=0;i<size;i++)
        {
         FileWriteDouble(file_handle,(double)time_buff[i]);
         FileWriteDouble(file_handle,ma_buff[i]);
        }
      //--- cerramos el archivo
      FileClose(file_handle);
      PrintFormat(Los datos ha sido escritos, el archivo %s está cerrado",InpFileName);
     }
   else
      PrintFormat("Error al abrir el archivo %s, Código de error = %d",InpFileName,GetLastError());
  }

Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/1629

Indicador Estocástico Blau_TStoch Indicador Estocástico Blau_TStoch

Indicador Estocástico (smoothed q-period Stochastic) de William Blau.

Demo_FileReadDouble Demo_FileReadDouble

Este indicador muestra un ejemplo del uso de la función FileReadDouble()

Blau_Ergodic Blau_Ergodic

Oscilador Ergodic de William Blau.

Blau_TSI Blau_TSI

True Strength Index (TSI) indicador de William Blau.