Publi

Publi

Resultados 1 al 7 de 7


  1. #1
    Avatar de Vinisius
    Erectus


    Reputación:
    Poder de reputación: 5

    Espana
    Mensajes: 309
    Créditos: 50

    Renko bars codigo


    Publi
    ---------------------------------------------------------------------------------------------------------------------


    Buenas.


    Para practicar con la programacion mql4 he estado estudiando el codigo del Expert o indicador de Renko para MT4.


    He acabado entendiendo todo el codigo (me ha costado lo mio)... menos una cosa.

    A ver si podeis ayudarme a entender esta "cosa".

    Veamos la parte del codigo que aunque entiendo su funcionamiento no entiendo el porque esta puesto de tal forma y no de otra.
    El codigo se repite en varias partes del programa:


    FileWriteInteger(HstHandle, PrevTime, LONG_VALUE);
    FileWriteDouble(HstHandle, PrevOpen, DOUBLE_VALUE);
    FileWriteDouble(HstHandle, PrevLow, DOUBLE_VALUE);
    if(ShowWicks && UpWick > PrevHigh) FileWriteDouble(HstHandle, UpWick, DOUBLE_VALUE);
    else FileWriteDouble(HstHandle, PrevHigh, DOUBLE_VALUE);
    FileWriteDouble(HstHandle, PrevClose, DOUBLE_VALUE);
    FileWriteDouble(HstHandle, CurVolume, DOUBLE_VALUE);


    UpWick = 0;
    DnWick = EMPTY_VALUE;


    -----------------------------------------------------------------------------------------------------------------------------------


    Las primeras 7 lineas escritas las entiendo perfectamente. Con estas lineas se dibujaría en el grafico offline una barra limpia Renko o si tenemos el ShowWicks en verdadero nos dibujaría también la cola de la barra en caso de que el alto más alto (UpWick) fuese más alto que el previo alto de la ultima barra formada (PrevHigh).

    Lo que no entiendo es lo que viene a continuacion ....

    UpWick = 0;
    DnWick = EMPTY_VALUE;


    Aqui entiendo que una vez dibujada la barra, los valores UpWick y DnWick deben ponerse a 0 o vaciarse para volver a coger valor en la siguiente itineracion del historico o al actual precio en real, según corresponda.

    UpWick busca el alto más alto y DnWick el bajo más bajo ... ¿ entonces no deberían tener ambos el mismo valor ?.... o ambos EMPTY_VALUE o ambos 0.

    He probado de poner los 2 valores a 0 o a EMPTY_VALUE o incluso cambiar los valores entre si:

    UpWick = EMPTY_VALUE;
    DnWick = 0;

    Y nada , tienen que estar tal cual estan en el codigo por que sinó no dibuja bién las barras.

    En fin que no entiendo por que ambos valores no pueden estar igual si lo que miden es casi lo mismo , solo que uno busca el alto y el otro el bajo. Y además el codigo viene después de haberse dibujado la barra.

    Alguién puede aclararmelo pués no lo entiendo.


    Saludos.


    -------------------------------------------------------------------------------------------------------------
    Foro de Forex Trading United

     

  2.                         
    Publi
  3. #2
    Avatar de robertomar
    Heidelbergensis


    Reputación:
    Poder de reputación: 9

    Espana
    Mensajes: 905
    Créditos: 15,929

    Re: Renko bars codigo

    Cita Iniciado por Vinisius Ver mensaje
    ---------------------------------------------------------------------------------------------------------------------


    Buenas.


    Para practicar con la programacion mql4 he estado estudiando el codigo del Expert o indicador de Renko para MT4.


    He acabado entendiendo todo el codigo (me ha costado lo mio)... menos una cosa.

    A ver si podeis ayudarme a entender esta "cosa".

    Veamos la parte del codigo que aunque entiendo su funcionamiento no entiendo el porque esta puesto de tal forma y no de otra.
    El codigo se repite en varias partes del programa:


    FileWriteInteger(HstHandle, PrevTime, LONG_VALUE);
    FileWriteDouble(HstHandle, PrevOpen, DOUBLE_VALUE);
    FileWriteDouble(HstHandle, PrevLow, DOUBLE_VALUE);
    if(ShowWicks && UpWick > PrevHigh) FileWriteDouble(HstHandle, UpWick, DOUBLE_VALUE);
    else FileWriteDouble(HstHandle, PrevHigh, DOUBLE_VALUE);
    FileWriteDouble(HstHandle, PrevClose, DOUBLE_VALUE);
    FileWriteDouble(HstHandle, CurVolume, DOUBLE_VALUE);


    UpWick = 0;
    DnWick = EMPTY_VALUE;


    -----------------------------------------------------------------------------------------------------------------------------------


    Las primeras 7 lineas escritas las entiendo perfectamente. Con estas lineas se dibujaría en el grafico offline una barra limpia Renko o si tenemos el ShowWicks en verdadero nos dibujaría también la cola de la barra en caso de que el alto más alto (UpWick) fuese más alto que el previo alto de la ultima barra formada (PrevHigh).

    Lo que no entiendo es lo que viene a continuacion ....

    UpWick = 0;
    DnWick = EMPTY_VALUE;


    Aqui entiendo que una vez dibujada la barra, los valores UpWick y DnWick deben ponerse a 0 o vaciarse para volver a coger valor en la siguiente itineracion del historico o al actual precio en real, según corresponda.

    UpWick busca el alto más alto y DnWick el bajo más bajo ... ¿ entonces no deberían tener ambos el mismo valor ?.... o ambos EMPTY_VALUE o ambos 0.

    He probado de poner los 2 valores a 0 o a EMPTY_VALUE o incluso cambiar los valores entre si:

    UpWick = EMPTY_VALUE;
    DnWick = 0;

    Y nada , tienen que estar tal cual estan en el codigo por que sinó no dibuja bién las barras.

    En fin que no entiendo por que ambos valores no pueden estar igual si lo que miden es casi lo mismo , solo que uno busca el alto y el otro el bajo. Y además el codigo viene después de haberse dibujado la barra.

    Alguién puede aclararmelo pués no lo entiendo.


    Saludos.


    -------------------------------------------------------------------------------------------------------------

    Pues precisamente por eso, porque uno busca el máximo y el otro el mínimo es por lo que uno lo inicializa con valor 0 y el otro con EMPTY_VALUE.

    EMPTY_VALUE es el valor más alto posible que acepta MT4 para enteros con signo, o sea: 2147483647 (es equivalente a la constante INT_MAX), es decir un valor muy muy alto, por tanto, de esa forma, el primer precio que se marque siempre será menor que EMPTY_VALUE, aunque al ser precios en realidad deberían haber puesto DBL_MAX (máximo valor posible para variables de tipo double).
    Como tendrá alguna condición por ahí que diga algo así como:

    if(Close[0] < DnWick) DnWick = Close[0]; (o bien if(Bid < DnWick) DnWick = Bid) . Si le pusieras valor 0, ningún precio que llegue va a ser menor que 0, por lo cual la variable DnWick nunca tomaría ningún valor. De esta forma, el primer precio que llegue ya lo tomará como DnWick inicial, y luego si llegan precios menores, pues lo irá actualizando.

    Con respecto al UpWick y el valor 0 ocurre igual, cualquier precio que llegue va a ser mayor que 0, por lo cual lo tomará como UpWick inicial y luego lo irá actualizando con alguna condición como la que te pongo arriba para el DnWick. En este caso, en lugar de 0, también se le podría haber puesto el valor -DBL_MAX (el máximo valor negativo posible, de tal forma que cualquier precio que llegue será mayor a él).

    Espero que te sirva,

    Saludos y un abrazo.
    Foro de Forex Trading United

     

  4. #3
    Avatar de Vinisius
    Erectus


    Reputación:
    Poder de reputación: 5

    Espana
    Mensajes: 309
    Créditos: 50

    Re: Renko bars codigo

    --------------------------------------------------------------------------------------------------------------------------------------


    Gracias por contestar robertomar.


    Sabia que ibas a ser tu ... jejeje.


    De momento te doy gracias.


    Tienes reputacion casi garantizada ... en cuanto lo acabe de asimilar.


    Más o menos entiendo lo que dices.

    ¿ pero por que siempre está en el mismo orden en todo el codigo, sea la barra bajista o alcista ?... ¿ sea la cola alcista o bajista ?. sea > o sea < que ...


    Está siempre igual en todo el codigo:

    UpWick = 0;
    DnWick = EMPTY_VALUE;


    Y si lo cambias dá error de dibujo.


    Por eso no lo acabo de pillar.



    Saludos.
    Foro de Forex Trading United

     

  5. #4
    Avatar de Vinisius
    Erectus


    Reputación:
    Poder de reputación: 5

    Espana
    Mensajes: 309
    Créditos: 50

    Re: Renko bars codigo

    ------------------------------------------------------------------------------------------------------------------------


    Buffff ... no sé si me he explicado bién.


    En el historial se dibujan 2 barras, una alcista y otra bajista y cuando pasa a real lo mismo.

    Osea, aparece 4 veces en el codigo, con dibujo de barra en diferente sentido pero siempre, siempre lo hace de la misma manera .... UpWick siempre a 0 y DnWick siempre en EMPTY_VALUE.

    ¿ No debería darse alguna al reves ?. UpWick en EMPTY_VALUE ... y ... DnWick en 0 ... ???


    Muchas gracias.


    -----------------------------------------------------------------------------------------------------------------------------
    Foro de Forex Trading United

     

  6. #5
    Avatar de robertomar
    Heidelbergensis


    Reputación:
    Poder de reputación: 9

    Espana
    Mensajes: 905
    Créditos: 15,929

    Re: Renko bars codigo

    Cita Iniciado por Vinisius Ver mensaje
    ------------------------------------------------------------------------------------------------------------------------


    Buffff ... no sé si me he explicado bién.


    En el historial se dibujan 2 barras, una alcista y otra bajista y cuando pasa a real lo mismo.

    Osea, aparece 4 veces en el codigo, con dibujo de barra en diferente sentido pero siempre, siempre lo hace de la misma manera .... UpWick siempre a 0 y DnWick siempre en EMPTY_VALUE.

    ¿ No debería darse alguna al reves ?. UpWick en EMPTY_VALUE ... y ... DnWick en 0 ... ???


    Muchas gracias.


    -----------------------------------------------------------------------------------------------------------------------------

    No amigo, siempre debe ser igual, UpWick siempre será el máximo que ha alcanzado el precio en el transcurso de la vela Renko, sea ésta roja o verde, alcista o bajista. Y DnWick siempre será el mínimo que haya alcanzado el precio en dicha barra. Las wick son las mechas, como sabrás.

    Tú quedate con que para buscar máximos tienes que inicializar por valores muy bajos (o bien 0 o valores negativos para asegurarte de que tome el primer valor como máximo) y para buscar mínimos tienes que hacerlo con valores muy altos (o bien EMPTY_VALUE o bien DBL_MAX, o lo que sea, pero asegurarte de que te tome el primer valor que llegue como mínimo).

    No puedes inicializar nunca DnWick con valor 0 ni UpWick con un valor máximo.

    También he visto en algunos códigos que inicializan con valores como éstos, por ejemplo, la lógica es la misma:

    Min = 99999999;
    Max = -99999999;

    Cuando llegue un precio, por ejemplo 1,23452, vale tienes la condición de que :

    if(Bid < Min) Min = Bid;

    Vale, Bid = 1,23452..... 1,23452 es menor que 99999999???, sí, vale, pues entonces Min pasa a ser = 1,23452.
    Cuando llegue otro precio, por ejemplo: 1,23460..... es menor que Min???, o sea 1,23460 < 1,23452??? NO, pues la variable Min se queda como estaba (con el valor 1,23452).
    Llega otro precio, que es 1,23445..... este precio es menor que Min???, o sea 1,23445 < 1,23452???, Sí, pues ahora Min pasa a ser = 1,23445.

    Y así hasta que acabe la barra, o el bucle (si es que estabas buscando precios en un bucle), o lo que sea.

    Si la variable Min la inicializas con valor 0, alguno de los precios que lleguen va a ser < 0???? En algun momento se va a cumplir la condición de que Bid < Min???, Nunca se va a cumplir, por lo que en todo el transcurso la variable Min siempre será 0, nunca tomará ningún otro valor, y por tanto no calculará el Mínimo que se busca.


    Cuando ya ha acabado, vuelves a inicializar para empezar a buscar los max y min de la nueva barra o del nuevo bucle, pero por la misma razón siempre tienes que inicializar con valores muy altos para buscar mínimos y 0 o negativos para buscar máximos.

    Para buscar los Máximos, justo al revés, inicializando con valores negativos o con 0.

    Espero que te quede más claro así.

    Saludos y un abrazo.
    Foro de Forex Trading United

     

  7. #6
    Avatar de Vinisius
    Erectus


    Reputación:
    Poder de reputación: 5

    Espana
    Mensajes: 309
    Créditos: 50

    Re: Renko bars codigo

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------


    Ahora si ... lo pillé.


    Con las tan buenas explicaciones que has dado hasta el más zoquete de los programadores lo hubiera entendido.


    El sistema no me deja darte reputacion.

    Debo habertela dado ya alguna vez cercana.

    Te debo una.

    Gracias muuuuchaaaas.

    Un abrazo.



    --------------------------------------------------------------------------------------------------------------------
    Foro de Forex Trading United

     

  8. #7
    Avatar de robertomar
    Heidelbergensis


    Reputación:
    Poder de reputación: 9

    Espana
    Mensajes: 905
    Créditos: 15,929

    Re: Renko bars codigo


    Publi
    De nada hombre, lo de la reputación es lo de menos. Si tengo algún rato, que suelo tener pocos, y veo alguna duda de algo que yo pueda conocer, pues intento aclarar lo que sea, para eso somos una comunidad en la que estamos en el mismo barco, jajaja.

    Saludos y un abrazo.
    Foro de Forex Trading United

     

Publi
Publi


Aviso Legal
Ley Orgánica 15/1999, de 13 de diciembre, de Protección de Datos de Carácter Personal