Gracias. ¿Vale así...?
//----------------------------------- TIEMPO NETO POSICIÓN ABIERTA -------------------------------
long tiempoNetoPosic(string simb)
{ //devuelve el tiempo en segundos
datetime arTmpBarra[];
datetime horaIni= horaApertPosicion(simb),
horaFin= TimeCurrent();
long contTmp= CopyTime(simb, PERIOD_M1, horaIni, horaFin, arTmpBarra); //el inicio de las barras queda dentro del intervalo definido
contTmp= contTmp>0? contTmp*60+(horaFin-arTmpBarra[(int)contTmp-1])+(horaIni-arTmpBarra[0]): -1;
return(contTmp); //devuelve -1 si ha habido error
}
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
¿Si una posición se mantiene abierta con fin de semana o festivos de por medio, cómo medimos el tiempo neto, el tiempo de mercado real en que está abierta?
Si usamos la siguiente función obtenemos el tiempo natural pero no el real de mercado abierto...
//----------------------- RETORNA EL TIEMPO QUE LLEVA ABIERTA LA POSICIÓN ------------------------- double tiempoMercadoPosic(string simb= NULL, mi_FECHA_HORA modo= _SEG) { //enum mi_FECHA_HORA {_AÑO=0,_MES=1,_DIA=2,_HORA=3,_MIN=4,_SEG=5,_DSEM=6,_DAÑO=7}; double result=0, sgds=0; datetime horaApert= horaApertPosicion(simb); sgds= (double)(TimeCurrent()- horaApert); switch(modo) { case _DIA : result= sgds/(60*60*24); break; // calcula número de días case _HORA : result= sgds/(60*60); break; // calcula número de horas case _MIN : result= sgds/60; break; // calcula número de minutos case _SEG : result= sgds; // calcula segundos } return(result); } datetime horaApertPosicion(string simb) { datetime resp= -1; if(PositionSelect(simb)) resp= (datetime)PositionGetInteger(POSITION_TIME); return(resp); }¿Alguien propone método de obtener el tiempo neto o real de mercado?