Hola amigos , tengo una duda sobre visual basic en Visual y como ya he mandado correos pero nadie parece saber solucionarla voy a ponerla aqui.
Necesitaba hacer una cosa sencilla para luego pasar a una cosa mas dificil.
Construir un indicador que sea aplicado en intradia y de el maximo de la sesion anterior.
Esto podria hacerlo eligiendo la funcion getsymbol y poniendo yo mismo la serie de la que quiero que extraiga el maximo pero asi no me serviria porque para cada mercado tendria que cambiar el simbolo.
Creo que se puede hacer algo con las compresiones para que sea automatico pero no sabo. : (
¿Alguien sabe hacer esto ?
Si alguien me puede echar un cable le estaria muy agradecido.
Un saludo.
Duda de VBA para visual basic
El Maximo de la sesion anterior
se puede conseguir llevando una variable local
en el dia anterior que te guarde el maximo para ese
dia.
Para hacerlo al inicio de cada dia tienes que iniciarlo a 0
y luego ir comparando para cada maximo si lo supera o no.
Asi yo lo haria;
primero tienes que saber si estamos en un nuevo dia o no;
eso se hace comparando el .date con respecto al .date anterior,
por lo cual necesitamos otra variable para guardar el .date anterior
y si se da el caso del nuevo .date empezar a iniciar la variable de maximo a 0 para ir comparandolo con la barra del nuevo dia.
Por lo tanto necesitamos 2 variables globales:
Dia_Ant y Max_Ant
iniciadas asi por ejemplo:
Dia_Ant As Date
Max_Ant As Long
Max_Dia_Anterior As Long
Dia_Ant=18000101
Max_Ant=0
Por cada ciclo del bucle hacemos lo siguiente:
If (.Date != Dia_Ant)
'EN ESTE UNICO MOMENTO TENEMOS EN MAX_ANT el maximo del
'dia_anterior
Max_Dia_Ant=.High 'Guardamos en Max_Dia_Ant el Maximo
Max_Ant=.High ' Ponemos al maximo esta variable
Dia_Ant=.Date
Else
If (.High > Max_Ant) Then
Max_Ant=.High
End If
End If
En Max_Dia_Ant Guardamos el Maximo del Dia Anterior que podras usar.
Un saludo.
Si tienes mas dudas puedo incluir el VBA.
se puede conseguir llevando una variable local
en el dia anterior que te guarde el maximo para ese
dia.
Para hacerlo al inicio de cada dia tienes que iniciarlo a 0
y luego ir comparando para cada maximo si lo supera o no.
Asi yo lo haria;
primero tienes que saber si estamos en un nuevo dia o no;
eso se hace comparando el .date con respecto al .date anterior,
por lo cual necesitamos otra variable para guardar el .date anterior
y si se da el caso del nuevo .date empezar a iniciar la variable de maximo a 0 para ir comparandolo con la barra del nuevo dia.
Por lo tanto necesitamos 2 variables globales:
Dia_Ant y Max_Ant
iniciadas asi por ejemplo:
Dia_Ant As Date
Max_Ant As Long
Max_Dia_Anterior As Long
Dia_Ant=18000101
Max_Ant=0
Por cada ciclo del bucle hacemos lo siguiente:
If (.Date != Dia_Ant)
'EN ESTE UNICO MOMENTO TENEMOS EN MAX_ANT el maximo del
'dia_anterior
Max_Dia_Ant=.High 'Guardamos en Max_Dia_Ant el Maximo
Max_Ant=.High ' Ponemos al maximo esta variable
Dia_Ant=.Date
Else
If (.High > Max_Ant) Then
Max_Ant=.High
End If
End If
En Max_Dia_Ant Guardamos el Maximo del Dia Anterior que podras usar.
Un saludo.
Si tienes mas dudas puedo incluir el VBA.
Te lo paso,
luego ya haces lo que quieras con
la variable de max_dia_ant que es la que precisas.
luego ya haces lo que quieras con
la variable de max_dia_ant que es la que precisas.
- Adjuntos
-
- maxant.vba
- (112 KiB) Descargado 172 veces
Si te ha gustado este hilo del Foro, ¡compártelo en redes!