Numero de la semana
Numero de la semana
Muy buenas a todos. hacia mucho que no posteaba nada por aqui.
Hoy ha tocado de nuevo hacerlo y esta vez para una pregunta. Se como sacar el dia, el mes, el dia de la semana inclusive el año en el que estamos a través de la programación, pero .............. ¿ cómo puedo saber la semana del año en la que estamos ? Lo estoy intentando de diversas formas pero creo ya he llegado a un bucle del cual no salgo. ¿ Una ayuda ? ............... gracias.
Hoy ha tocado de nuevo hacerlo y esta vez para una pregunta. Se como sacar el dia, el mes, el dia de la semana inclusive el año en el que estamos a través de la programación, pero .............. ¿ cómo puedo saber la semana del año en la que estamos ? Lo estoy intentando de diversas formas pero creo ya he llegado a un bucle del cual no salgo. ¿ Una ayuda ? ............... gracias.
http://nuevotrader.blogspot.com/
Mi trading diario en DAX
Mi trading diario en DAX
- SpeakerTrading
- Mensajes: 117
- Registrado: 13 Dic 2012 21:26
- Contactar:
Re: Numero de la semana
Speaker Trading
http://speakertrading.wordpress.com/" onclick="window.open(this.href);return false;
http://speakertrading.wordpress.com/" onclick="window.open(this.href);return false;
Re: Numero de la semana
Con eso sigo teniendo el mismo inconveniente. Hoy estoy muy espeso, pero no consigo aplicar eso en Visualchart.
http://nuevotrader.blogspot.com/
Mi trading diario en DAX
Mi trading diario en DAX
Re: Numero de la semana
Define un punto de partida, haces una resta de fechas, te dara el numero de dias de intervalo y lo divides entre 7
Re: Numero de la semana
p.d:un año tiene 52 semanas
Re: Numero de la semana
Pero el punto de partida es variable en funcion de que es lo que se grafique, sin embargo el numero de semana si que es fijo independientemente de ese punto de partida. Y lo que busco es como saber hoy, en que semana del año me encuentro. El formato de fecha que devuelve VC lo tenemos en YYYYMMDD, formato militar, del cual puedo y ya se extraer el dia, el mes, el dia de la semana tal como lo he expuesto al inicio. Espero explicarme bien en mi problemática actual.Gamelu escribió:Define un punto de partida, haces una resta de fechas, te dara el numero de dias de intervalo y lo divides entre 7
Gracias
http://nuevotrader.blogspot.com/
Mi trading diario en DAX
Mi trading diario en DAX
Re: Numero de la semana
Por ejemplo el 01/01/2012 es semana 1,
hoy 4/3/2013 - 01/01/2012 = 428
428/7=61,14
No puede ser mayor a 52 , por lo tanto
61,14 - 52 = 9,14
Estamos en la semana 10 , eso es lo que tienes que programar
hoy 4/3/2013 - 01/01/2012 = 428
428/7=61,14
No puede ser mayor a 52 , por lo tanto
61,14 - 52 = 9,14
Estamos en la semana 10 , eso es lo que tienes que programar
Re: Numero de la semana
Bien eso hasta creo sabria hacerlo, pero el grafico es variable en el tiempo y no le puedo poner una fecha de partida fija. Puede que la primera fecha del grafico sea del año 2003 y la de hoy ................. o la inicial sea de 1999 o ...... cualquier fecha de cualquier momento.Gamelu escribió:Por ejemplo el 01/01/2012 es semana 1,
hoy 4/3/2013 - 01/01/2012 = 428
428/7=61,14
No puede ser mayor a 52 , por lo tanto
61,14 - 52 = 9,14
Estamos en la semana 10 , eso es lo que tienes que programar
Es para revisar como se comportan determinadas materia primas y/o indices en funcion de la semana del año en que nos encontremos, buscando un comportamiento repetitivo. Por ejemplo, sin que sirva para nada en concreto, posicionarse largo la primera semana del año y posicionarse corto la 33 semana del año ...... o ................ según pueda estudiarlo.
Gracias de nuevo
http://nuevotrader.blogspot.com/
Mi trading diario en DAX
Mi trading diario en DAX
Re: Numero de la semana
Que necesites de un punto de partida no tiene que obligarte a meterlo tu manualmente, sino que el punto de partida puedes y debes de usar el año actual el mes 01 y dia 01, ...
Vamos que tienes que hacer otro script par que el punto de partida sea el 01/01/año .
Vamos que tienes que hacer otro script par que el punto de partida sea el 01/01/año .
Re: Numero de la semana
Voy a intentarlo por esa vía, aunque debo estar muy torpe hoy, porque los primeros inte tos no me sale correctamente.Gamelu escribió:Que necesites de un punto de partida no tiene que obligarte a meterlo tu manualmente, sino que el punto de partida puedes y debes de usar el año actual el mes 01 y dia 01, ...
Vamos que tienes que hacer otro script par que el punto de partida sea el 01/01/año .
Gracias de nuevo
http://nuevotrader.blogspot.com/
Mi trading diario en DAX
Mi trading diario en DAX
Re: Numero de la semana
No lo he conseguido perfecto, pero casi e inicialmente puede ser que me sirva para lo que andaba buscando. Expongo aqui el código de lo programado por si alguien quiere o puede mejorarlo para determinados días que da un fallo de 1 semana. A parte de no tener en cuenta los años bisiestos, donde febrero tendría 29 días.
anyo = Int(.Date / 10000)
mes = Int(.Date / 100) - (anyo * 100)
dia = Int(.Date) - (mes * 100) - (anyo * 10000)
cadena = dia & "/" & mes & "/" & anyo
diasemana = DatePart("w", cadena, 2) '1=lunes,2=martes,3=miercoles,4=jueves,5=viernes
If anyo <> Int(.Date(1) / 10000) Then Semana = 1
If mes = 1 Then
If DatePart("w", 1 & "/" & mes & "/" & anyo, 2) = 1 Then Semana = 1
If DatePart("w", 1 & "/" & mes & "/" & anyo, 2) = 2 Then Semana = 1
If DatePart("w", 1 & "/" & mes & "/" & anyo, 2) = 3 Then Semana = 1
If DatePart("w", 1 & "/" & mes & "/" & anyo, 2) = 4 Then Semana = 1
If DatePart("w", 1 & "/" & mes & "/" & anyo, 2) = 5 Then Semana = 52
If DatePart("w", 1 & "/" & mes & "/" & anyo, 2) = 6 Then Semana = 52
If DatePart("w", 1 & "/" & mes & "/" & anyo, 2) = 7 Then Semana = 52
End If
If mes = 1 And DatePart("w", 4 & "/" & mes & "/" & anyo, 2) = 1 Then Semana = 1
If mes = 1 And DatePart("w", 3 & "/" & mes & "/" & anyo, 2) = 1 Then Semana = 1
If mes = 1 And DatePart("w", 2 & "/" & mes & "/" & anyo, 2) = 1 Then Semana = 1
'If diasemana = 1 And .Date <> .Date(1) Then Semana = Semana + 1
If mes = 1 And dia >= 3 And dia < 7 Then Semana = 1
If mes = 1 And dia >= 7 And .Date <> .Date(1) Then
Semana = Semana + Int(dia / 7)
SemanaActual = Semana
End If
If mes = 1 And dia >= 7 And .Date = .Date(1) Then Semana = SemanaActual
If mes = 2 Then
Semana = Int(dia + 31) / 7
If diasemana = 1 And .Date <> .Date(1) Then
Semana = Semana + 1
SemanaActual = Semana
End If
If diasemana = 1 And .Date = .Date(1) Then Semana = SemanaActual
If diasemana >= 2 And diasemana <= 5 And .Date = .Date(1) + 1 Then Semana = SemanaActual
If diasemana >= 2 And diasemana <= 5 And .Date = .Date(1) Then Semana = SemanaActual
End If
If mes = 3 Then
Semana = Int(dia + 31 + 28) / 7
If diasemana = 1 And .Date <> .Date(1) Then
Semana = Semana + 1
SemanaActual = Semana
End If
If diasemana = 1 And .Date = .Date(1) Then Semana = SemanaActual
If diasemana >= 2 And diasemana <= 5 And .Date = .Date(1) + 1 Then Semana = SemanaActual
If diasemana >= 2 And diasemana <= 5 And .Date = .Date(1) Then Semana = SemanaActual
End If
If mes = 4 Then
Semana = Int(dia + 31 + 28 + 31) / 7
If diasemana = 1 And .Date <> .Date(1) Then
Semana = Semana + 1
SemanaActual = Semana
End If
If diasemana = 1 And .Date = .Date(1) Then Semana = SemanaActual
If diasemana >= 2 And diasemana <= 5 And .Date = .Date(1) + 1 Then Semana = SemanaActual
If diasemana >= 2 And diasemana <= 5 And .Date = .Date(1) Then Semana = SemanaActual
End If
If mes = 5 Then
Semana = Int(dia + 31 + 28 + 31 + 30) / 7
If diasemana = 1 And .Date <> .Date(1) Then
Semana = Semana + 1
SemanaActual = Semana
End If
If diasemana = 1 And .Date = .Date(1) Then Semana = SemanaActual
If diasemana >= 2 And diasemana <= 5 And .Date = .Date(1) + 1 Then Semana = SemanaActual
If diasemana >= 2 And diasemana <= 5 And .Date = .Date(1) Then Semana = SemanaActual
End If
y asi sucesivamente para el resto de meses ....
Un saludo
anyo = Int(.Date / 10000)
mes = Int(.Date / 100) - (anyo * 100)
dia = Int(.Date) - (mes * 100) - (anyo * 10000)
cadena = dia & "/" & mes & "/" & anyo
diasemana = DatePart("w", cadena, 2) '1=lunes,2=martes,3=miercoles,4=jueves,5=viernes
If anyo <> Int(.Date(1) / 10000) Then Semana = 1
If mes = 1 Then
If DatePart("w", 1 & "/" & mes & "/" & anyo, 2) = 1 Then Semana = 1
If DatePart("w", 1 & "/" & mes & "/" & anyo, 2) = 2 Then Semana = 1
If DatePart("w", 1 & "/" & mes & "/" & anyo, 2) = 3 Then Semana = 1
If DatePart("w", 1 & "/" & mes & "/" & anyo, 2) = 4 Then Semana = 1
If DatePart("w", 1 & "/" & mes & "/" & anyo, 2) = 5 Then Semana = 52
If DatePart("w", 1 & "/" & mes & "/" & anyo, 2) = 6 Then Semana = 52
If DatePart("w", 1 & "/" & mes & "/" & anyo, 2) = 7 Then Semana = 52
End If
If mes = 1 And DatePart("w", 4 & "/" & mes & "/" & anyo, 2) = 1 Then Semana = 1
If mes = 1 And DatePart("w", 3 & "/" & mes & "/" & anyo, 2) = 1 Then Semana = 1
If mes = 1 And DatePart("w", 2 & "/" & mes & "/" & anyo, 2) = 1 Then Semana = 1
'If diasemana = 1 And .Date <> .Date(1) Then Semana = Semana + 1
If mes = 1 And dia >= 3 And dia < 7 Then Semana = 1
If mes = 1 And dia >= 7 And .Date <> .Date(1) Then
Semana = Semana + Int(dia / 7)
SemanaActual = Semana
End If
If mes = 1 And dia >= 7 And .Date = .Date(1) Then Semana = SemanaActual
If mes = 2 Then
Semana = Int(dia + 31) / 7
If diasemana = 1 And .Date <> .Date(1) Then
Semana = Semana + 1
SemanaActual = Semana
End If
If diasemana = 1 And .Date = .Date(1) Then Semana = SemanaActual
If diasemana >= 2 And diasemana <= 5 And .Date = .Date(1) + 1 Then Semana = SemanaActual
If diasemana >= 2 And diasemana <= 5 And .Date = .Date(1) Then Semana = SemanaActual
End If
If mes = 3 Then
Semana = Int(dia + 31 + 28) / 7
If diasemana = 1 And .Date <> .Date(1) Then
Semana = Semana + 1
SemanaActual = Semana
End If
If diasemana = 1 And .Date = .Date(1) Then Semana = SemanaActual
If diasemana >= 2 And diasemana <= 5 And .Date = .Date(1) + 1 Then Semana = SemanaActual
If diasemana >= 2 And diasemana <= 5 And .Date = .Date(1) Then Semana = SemanaActual
End If
If mes = 4 Then
Semana = Int(dia + 31 + 28 + 31) / 7
If diasemana = 1 And .Date <> .Date(1) Then
Semana = Semana + 1
SemanaActual = Semana
End If
If diasemana = 1 And .Date = .Date(1) Then Semana = SemanaActual
If diasemana >= 2 And diasemana <= 5 And .Date = .Date(1) + 1 Then Semana = SemanaActual
If diasemana >= 2 And diasemana <= 5 And .Date = .Date(1) Then Semana = SemanaActual
End If
If mes = 5 Then
Semana = Int(dia + 31 + 28 + 31 + 30) / 7
If diasemana = 1 And .Date <> .Date(1) Then
Semana = Semana + 1
SemanaActual = Semana
End If
If diasemana = 1 And .Date = .Date(1) Then Semana = SemanaActual
If diasemana >= 2 And diasemana <= 5 And .Date = .Date(1) + 1 Then Semana = SemanaActual
If diasemana >= 2 And diasemana <= 5 And .Date = .Date(1) Then Semana = SemanaActual
End If
y asi sucesivamente para el resto de meses ....
Un saludo
http://nuevotrader.blogspot.com/
Mi trading diario en DAX
Mi trading diario en DAX
Si te ha gustado este hilo del Foro, ¡compártelo en redes!