Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Antes del build 600 (3 de febrerode 2014) sólo había start(). Ahora hay OnTick (EAs,) OnCalculate (indicadores,) y OnStart (scripts.) Olvidé que estabas hablando de un indicador.
Comience a utilizar las nuevas funciones de manejo de eventos - Funciones - Fundamentos del lenguaje - Referencia MQL4. Vea Cómo hacer sus lookbacks correctamente.
Sí. Ahora te entiendo mucho más claramente y gracias.
Y tu comentario #20 me dio otra idea. (una vez lo compartiste conmigo y ahora lo tengo en mi mente)
También trato de escribir mejor código para mi indicador, y ahora trato deaprender el comentario#18-@Marco vd Heijden
Entonces voy a investigar ampliamente su comentario.
¡Gracias una vez más!
Por favor, póngalo en un experto en lugar de un indicador, esto permite un uso más fácil en el futuro cuando quiera añadir su estrategia de negociación.
Para el tema de las barras, almacene la hora de apertura de la barra en una variable datetime y simplemente compare la hora registrada con la hora real, entonces cada vez que surja una nueva barra se activará.
Aquí hay un ejemplo:
En primer lugar muchas gracias por tu comentario tan claro.
Sigo con el indicador. He intentado algo, y funciona bien para mí, pero me enfrenté a un problema, no puedo probarlo en 'Probador de Estrategias' - me da un error fatal: MT4 'No responde'.
#1 - Marco, ¿puedes decirme de dónde viene, por favor?
#2 - ¿Es el código de abajo correcto?
A continuación el código que he probado.
string _vlineName_M5 ;
int _prd = PERIOD_M5 ;
int _prd_add = PeriodSeconds( _prd ) ;
datetime _dt_Prd_M5 ;
int _time_M5 ;
datetime _prdCvrt_M5 ;
datetime _timeCvrt_M5 ;
//---init
EventSetMillisecondTimer( 10 );
_CreateLines();
//---timer
if ( _dt_Prd_M5 != iTime( Symbol(), _prd, 0 ) )
{
_dt_Prd_M5 = iTime( Symbol(), _prd, 0 );
_CreateLines();
}
//---_CreateLines()
//---
int _dayCnt_M5 = 0;
int _cnt_M5 = iBarShift( Symbol(), 0, iTime( Symbol(), PERIOD_M15, _dayCnt_M5 ) );
for ( int i = 0; i < _cnt_M5; i++ )
{
//---time convert
_time_M5 = Time[i];
_prdCvrt_M5 = PeriodSeconds( _prd );
_timeCvrt_M5 = _time_M5 - ( _time_M5 % _prdCvrt_M5 ) + _prdCvrt_M5;
//---name
_vlineName_M5 = _prefix + "PERIOD_M5 - " + TimeToStr( _timeCvrt_M5, TIME_DATE|TIME_MINUTES );
//---
if ( _Period < PERIOD_M30 )
{
{
ObjectCreate( _vlineName_M5, OBJ_VLINE, 0, _timeCvrt_M5, 0 );
}
}
}
ObjectMove ( 0, _vlineName_M5, 0, _dt_Prd_M5, 0 );
He dejado de trabajar en él, voy a continuar después de su comentario. (En realidad me preocupa que el código de arriba aplaste mis otros indicadores mientras lo uso juntos).
Muchas gracias.
Evento del gráfico para el backtester de MT4 (Migel) - MQL4 forum
La función del temporizador no funciona en el probador de estrategias de MT4 por lo que hay que ponerla en la función de tick.
Evento del gráfico para el Backtester de MT4 (Migel) - MQL4 forum
Muchas gracias.
Sé con certeza, que el problema no viene de código.
Marco vd Heijden:
He aquí un ejemplo:
//+------------------------------------------------------------------+
int OnInit()
{
//--- create timer
EventSetMillisecondTimer(250);
//--- create some things
CreateLines(); // Function that creates time lines
//--- load open times
M5=iTime(Symbol(),PERIOD_M5,0);
//--- set timelines
ObjectMove(0,"Time-M5",0,M5,0);//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
if(M5!=iTime(Symbol(),PERIOD_M5,0))
{
M5=iTime(Symbol(),PERIOD_M5,0); // overwrite old value with new value
//Alert("New Bar on M5! ",TimeToString(M5,TIME_SECONDS));
// do something...
//ObjectMove(0,"Time-M5",0,M5,0);
}
}
//+------------------------------------------------------------------+
Muchas gracias.
Este comentario me ha enseñado muchas cosas.
Parece que ese código funciona bien para mí, el que publiqué en mi comentario anterior.
Pero necesito que el código (que uno está trabajando para Period_M5) no funcionará en el reloj 12:00 (es tal vez 13:00, 14:00 ...) y por debajo de código ignorando 'OBJ_VLINE's tiempos pasados (que es bueno para mí), pero mientras que actualmente el reloj 12:00 por debajo de código me muestra, además, el tiempo actual VLINE pero yo no lo quiero.
{
ObjectCreate( _vlineName_M5, OBJ_VLINE, 0, _timeCvrt_M5, 0 );
} //---if Close
He intentado algo que resolver mi problema, pero no funcionó correctamente.
También he añadido captura de pantalla.
Por favor, ayúdame que realmente necesito para resolver este problema.
Muchas gracias de antemano.
¿Cómo lo sabes?
Porque la conexión se perdió y traté de usar'Probador de Estrategias' mientras el tiempo de desconexión y funciona perfectamente para mí.
Después de leer su y el Sr. William comentarios, y luego sé con certeza al respecto.
¿No es suficiente, lo siento?
{
ObjectCreate( _vlineName_M5, OBJ_VLINE, 0, _timeCvrt_M5, 0 );
} //---if Close
En este ejemplo se obtiene una línea a cada hora MENOS a las 12:00 porque se excluye con != differ then 12 statement así que cuando es == igual a 12 no hay línea.
En este ejemplo se obtiene una línea en cada hora PERO 12:00 porque se excluye con != differ then 12 declaración por lo que cuando es == igual a 12 ninguna línea.
Brillante hombre, gracias :))
Eso es simple pero no me importa. Simplemente simple y simplemente wow.
(En realidad yo uso '==' en mi este indicador, pero realmente se centró 'OnTimer')
//--- segunda vez editado...
Esto funciona bien para mí, pero cuando el tiempo será 00:00 - tiempo actual adicional VLINE muestra de nuevo.
TimeHour( _timeCvrt_M5 ) == 1 ||
TimeHour( _timeCvrt_M5 ) == 2 ||
TimeHour( _timeCvrt_M5 ) == 3 ||
TimeHour( _timeCvrt_M5 ) == 5 ||
TimeHour( _timeCvrt_M5 ) == 6 ||
TimeHour( _timeCvrt_M5 ) == 7 ||
TimeHour( _timeCvrt_M5 ) == 9 ||
TimeHour( _timeCvrt_M5 ) == 10 ||
TimeHour( _timeCvrt_M5 ) == 11 ||
TimeHour( _timeCvrt_M5 ) == 13 ||
TimeHour( _timeCvrt_M5 ) == 14 ||
TimeHour( _timeCvrt_M5 ) == 15 ||
TimeHour( _timeCvrt_M5 ) == 17 ||
TimeHour( _timeCvrt_M5 ) == 18 ||
TimeHour( _timeCvrt_M5 ) == 19 ||
TimeHour( _timeCvrt_M5 ) == 21 ||
TimeHour( _timeCvrt_M5 ) == 22 ||
TimeHour( _timeCvrt_M5 ) == 23
)
(Yo pocas veces actualizado este comentario porque yo estaba investigado)
Por favor, ayúdame.