Ayuda para GSV de Larry Williams

Forums ProRealTime foro Español Soporte ProBuilder Ayuda para GSV de Larry Williams

Viewing 15 posts - 1 through 15 (of 17 total)
  • #167831

    Hola a todos

    Soy nuevo en el foro y he estado buscando algún post relacionado con Greatest Swing Value de Williams, pero no he encontrado nada.

    He intentado crear el indicador, pero soy principiante en ProRealCode y no se como programar.

    Las condiciones son

    Si close < open, día bajista,  tomar el valor de high – open. Sacar la media de los últimos 4 días.

    Si close > open, día alcista, tomar el valor de open – low. Sacar la media de los últimos 4 días.

    Por favor, si alguien pudiera programar el código, se agradecería.

    Gracias anticipadas

    #167844

    Creo que este es el indicador que está buscando: https://www.prorealcode.com/prorealtime-indicators/williams-highs-lows/ Un evaluador sobre esa metodología: https://www.prorealcode.com/prorealtime- evaluadores de mercado / williams-swing-points /

    #167855

    Buenos días Nicolas.

    El indicador que me dice es el de swing highs y lows de Williams.

    Yo el que busco es el GSV.

    En lenguaje amibroker sería

    //rango hacia arriba de los días que cierran por debajo de la apertura//
    r1=ValueWhen(C<O,HO,1);r2=ValueWhen(C<O,HO,2);
    r3=
    ValueWhen(C<O,HO,3);r4=ValueWhen(C<O,HO,4);
    r_medio=
    0.25*(r1+r2+r3+r4);

    Lo que hace este código es calcular la diferencia High-Open en las 4 últimas
    ocurrencias en las que Close < Open. Luego sumamos los 4 valores (r1+r2+r3+r4) y
    dividimos por 4 para tener la media.

    Gracias por su interés

    #167863

    El siguiente código debería replicar el cálculo de Bill Williams Swing que publicó:

    #167872

    El código parece correcto, aunque hay un error, culpa mía por no haber explicado bien.

    El valor (1,2,3,4) que aparece en el código de amibroker se refiere a la barra actual(1), la anterior(2),… que en prorealcode es [0], [1],….

    Por tanto el código debería quedar así, supongo

    //r1 = ValueWhen ( C < O , H – O , 1 ); r2 = ValueWhen ( C < O , H – O , 2 );
    //r3 = ValueWhen ( C < O , H – O , 3 ); r4 = ValueWhen ( C < O , H – O , 4 );

    $r[0]=0
    $r[1]=0
    $r[2]=0
    $r[3]=0

    a = 0
    for i = 0 to 200 do
    if close[i]<open[i] then
    $r[a] = high[i]-open[i]
    a=a+1
    if a=3 then
    break
    endif
    endif
    next

    rmedium = 0.25 * ($r[0] + $r[1] + $r[2] + $r[3])

    return rmedium

     

    Pero por alguna razón no da el resultado correcto.

    Acabo de probarlo en el gráfico del SPY y en los últimos 4 días bajistas se han producido los siguientes valores

    Día                            HIGH                  LOW                      H-L

    16 abril                  417.91                   417.25                    0.66

    19 abril                  416.74                   416.26                   0.48

    20 abril                 415.09                   413.91                    1.18

    22 abril                 416.78                   415.89                    0.89

    SUMA    3.21          MEDIA = 3.21/4 = 0.8025

    Ese es el resultado que debería dar, pero el indicador me da como resultado 0.63750

    No alcanzo a ver donde está el error

    #167874

    Este debería ser el indicador:

     

    #167883

    Buenos días Roberto

    Tampoco da los valores correctos.

    Los días que son alcistas deberían tener el mismo valor que el último día bajista anterior para bears. Al contrario para los alcistas.

    En el ejemplo que he puesto arriba de los últimos días bajistas del SPY, tu código da el mismo resultado que el de Nicolas, 0.63750, cuando debería tener un valor de 0.8025, la media de los últimos 4 días bajistas, es decir que close < open.

    De todas formas, gracias por la ayuda.

    Es un placer leer este foro

    #167885

    De hecho, cometí un error tipográfico en mi código, pruebe esta versión:

    #167888

    Mi interpretación es que los días alcistas y bajistas de los últimos 4 días deben tomarse por separado, NO los últimos 4 valores bajistas y los últimos 4 alcistas, de lo contrario se convierte en más de una semana de operaciones.

    #167893

    Sin embargo, en mi ejemplo hay un error, ya que también considero que HOY son los 4 días, mientras que los 4 anteriores deberían serlo.

    Para corregirlo, simplemente coloque [1] junto a HIGH, CLOSE, OPEN y LOW, que se convertirán en HIGH [1], CLOSE [1], OPEN [1] y LOW [1].

     

    #167894

    Nicolas,

    Sigue dando el mismo resultado el indicador que la vez anterior, 0.6375.

    El valor de la media es 0.8025.

    No encuentro el error.

     

    #167910

    Perdón que me inmiscuya en el tema  nonidrilo, pero creo que el valor que calculas en el post #167872 es incorrecto. Calculas la media sobre el rango (high-low) y según la definición del indicador sería para los días bajistas (close<open) , sumar la distancia desde la apertura al máximo de los últimos 4 días  que cerraron bajistas. Ese valor lo dividimos entre 4 y así obtenemos la media. Los días no tienen por que ser consecutivos.

    Lo explicas tú mismo bien en el post#167855, pero luego cuando haces el calculo en el post anterior que te indique, estas teniendo en cuenta el high y el open.

    Creo que las soluciones que te dan tanto Nicolas como Robertogozzi, son correctas.

    Compruébalo si puedes.

     

    Un saludo

    #167916

    Efectivamente cjr30, estaba mirando mal los datos, había cogido como bajista a un día alcista, el 16 de abril fue alcista por 0.01.

    Pero una vez que he empezado hacia atrás a comprobar resultados, lo que hace el código de Nicolas es hacer la media de los últimos 4 días, y en caso de que sea alcista lo anota como cero, en ese caso el último valor del indicador si sería correcto, pero lo que tiene que hacer es sumar los 4 último días bajistas, estén seguidos o no.

    El indicador tiene que recoger la media de la diferencia entre high y open  de los 4 últimos días bajistas

    Ejemplo del SPY

    Fecha                                        High                      Low                     H-L

    10/02/2021 bajista                392.28                   392.12                 0.16

    11/02/2021 bajista                 391.69                   391.24                 0.45

    12/02/2021 alcista

    16/02/2021 bajista               394.17                     393.96                0.21

    17/02/2021 alcista

    18/02/2021 alcista

    19/02/2021 bajista              392.38                     392.07                 0.31

    22/02/2021 alcista

    23/02/2021 alcista

    24/02/2021 alcista

    25/02/2021 bajista              391.88                     390.41                  1.47

    El indicador debería marcar el día 19 la media de los 4 días bajistas (10, 11, 16 y 19) cuya media es 0.2825. Sin embargo el indicador marca 0.2425.

    El día 25 recogería la media de los últimos 4 días bajistas (11, 16, 19 y 25) cuya media es 0.61, pero el indicador marca 1.085.

    El código, tanto de Nicolas como de Roberto lo veo lógico pero no alcanzo a comprender de donde saca esos valores el indicador.

    Un saludo y perdón por el tostón

     

     

     

    #167917

    Perdón pero hay un error en la tabla.

    Donde pone Low debe poner Open y en vez de H-L debe ser H-O

    Disculpen

    #167920

    Hola, creo que hay un bug en el codigo de Nicolas, todo esta bien salvo que esta promediando unicamente los 3 ultimos dias  .  Para  promediar los 4  anteriores  dias bajistas habría que cambiar la linea 14 , quedaría asi:

     

Viewing 15 posts - 1 through 15 (of 17 total)

Create your free account now and post your request to benefit from the help of the community
Register or Login