Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 686

 

Buenas tardes. Cómo mostrar la hora de la barra en la ventana de datos del terminal en el formato "aaaa.mm.dd" y "hh:mi" utilizando un indicador.

La memoria intermedia del indicador puede mostrar la hora en segundos desde las 00:00 del 1 de enero de 1970, o después de la conversión(TimeToStr)

o la fecha u hora truncada. Necesito un consejo, ¡gracias de antemano!

 

#Se debe añadirla propiedad strict, después de lo cual la salida de la fecha será en formato "aaaa.mm.dd hh:mm:ss" incluso sin conversión.

o TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS)

 

tu evillive

Parece que no es tan sencillo, ¿o hay algo que no entiendo?

Como versión, el perro está enterrado en el buffer del indicador, ya que es de tipo double.

//+------------------------------------------------------------------+
//|                                                   WinData_v1.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 2

string g_DataTimeValue;

double WinDataBuffer[];
double WinNumberBarBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   IndicatorDigits(0);//(8)

   SetIndexBuffer(0,WinDataBuffer);
   SetIndexStyle(0,DRAW_NONE);

   SetIndexBuffer(1,WinNumberBarBuffer);
   SetIndexStyle(1,DRAW_NONE);

   SetIndexLabel(0,"WinDataTime");
   SetIndexLabel(1,"№ Bara");

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---
   for(int i=0; i<100; i++)
     {

      g_DataTimeValue=TimeToString(time[i],TIME_DATE|TIME_SECONDS);

      WinDataBuffer[i]=TimeToString(time[i],TIME_DATE|TIME_SECONDS);
      WinNumberBarBuffer[i]=i;
      // WinDataBuffer[i]=StrToDouble(g_DataTimeValue);

      Print(" WinDataBuffer[i] = ",WinDataBuffer[i],"  WinNumberBarBuffer[i] = ",WinNumberBarBuffer[i],
            "  g_DataTimeValue = ",g_DataTimeValue);

     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
Принт:


2014.08.11 15:39:54.016 WinData_v1 EURUSD,M1:  WinDataBuffer[i] = 2014.08  WinNumberBarBuffer[i] = 99.0  g_DataTimeValue = 2014.08.06 11:41:00



 

¡Buenas tardes, compañeros!

Es la primera vez en el foro, así que no me pateéis si es una pregunta anticuada...

¿Cómo abrir operaciones en ciclo después de un determinado intervalo (cada minuto, por ejemplo)?

Gracias de antemano
 
vld:

tu evillive

Parece que no es tan sencillo, ¿o hay algo que no entiendo?

Como versión, el perro está enterrado en el buffer del indicador, ya que es de tipo double.


¿Por qué se pone la cadena en el búfer del indicador?
 
Sanyo:

¡Buenas tardes, compañeros!

Es la primera vez en el foro, así que no me pateéis si es una pregunta anticuada...

¿Cómo abrir operaciones en un ciclo con un intervalo determinado (cada minuto, por ejemplo)?

Gracias de antemano.

¡Comprobando la apertura de una nueva barra de la TF apropiada!
 
Sanyo:

¡Buenas tardes, compañeros!

Es la primera vez en el foro, así que no me pateéis si es una pregunta anticuada...

¿Cómo abrir operaciones en un ciclo con un intervalo determinado (cada minuto, por ejemplo)?

Gracias de antemano.
Lea sobre OnTimer()
 

Hola, tengo esta pregunta:

MT4 tiene grandes posibilidades de optimización de expertos, pero ¿existe alguna herramienta para optimizar los indicadores? Si quiero optimizar los parámetros de un indicador para que sus lecturas sean lo más "correctas" posible, ¿es cierto que la única manera de hacerlo es escribir un ekspert sobre su base y ejecutarlo a través del historial?

Y también me gustaría saber si MT-4 tiene un criterio personalizado de optimización de Asesores Expertos como en MT5?

 

Chicos, se me olvidaba...

Cómo obtener un array de órdenes actuales y hacer un bucle a través de ellas. Y bucle para obtener la información del pedido. MT4, gracias...

 
Vinin:

¿Y por qué pones la cadena en el buffer del indicador?

Entiendo lo absurdo de esta acción, pero no entiendo cómo utilizar el indicador

mostrar la hora de la barra en la ventana de datos del terminal en el formato "aaaa.mm.dd" y "hh:mi" (como la primera y segunda línea de la ventana de datos del terminal)

La memoria intermedia del indicador emitirá el tiempo en segundos desde las 00:00 del 1 de enero de 1970 asignándole time[i],

o después de la conversión(TimeToString) fecha u hora truncada.

Y si existe la posibilidad de mostrarlo mediante herramientas MQL personalizadas, aconsejar cómo hacerlo... ¡Gracias de antemano!