Mejorar la entrada en sistema con corte de medias WMA

Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
    Posts
  • #191206 quote
    MaikelNait
    Participant
    New

    Buenas a tod@ssss

    Estoy utilizado un sistema sencillo de cruce de medias para encontrar puntos de entrada.

    Concretamente, dos medias ponderadas de 4 y 100. Dejo código:

    DEFPARAM CumulateOrders = false // Acumulación de posiciones desactivada
    
    z = 50
    w = 40
    // Condiciones para entrada de posiciones largas
    indicator1 = WeightedAverage[4](totalPrice)
    indicator2 = WeightedAverage[160](totalPrice)
    
    c1 = (indicator1 > indicator2)
    c2 = (indicator1 > indicator2 + z)
    c3 = (indicator1 < indicator2)
    C4 = (indicator1 < indicator2 - Z)
    c7 = (indicator1 < indicator2 - w)
    C8 = (indicator1 > indicator2 + w)
    
    IF c1 and C2 THEN
    BUY 1 CONTRACT AT MARKET
    ENDIF
    
    // Condiciones de salida de posiciones largas
    IF c3 and C7 THEN
    SELL AT MARKET
    ENDIF
    
    // Condiciones de entrada de posiciones cortas
    
    IF c3 and C4 THEN
    SELLSHORT 1 CONTRACT AT MARKET
    ENDIF
    
    // Condiciones de salida de posiciones cortas
    
    
    IF c1 and C8 THEN
    EXITSHORT AT MARKET
    ENDIF

    Lo que me gustaría es poder mejorar las posiciones de entrada. Es decir,  en posiciones largas por ejemplo, en lugar  de comprar al precio que se encuentre cuando mis medias se cruzan ( y se cumplen el parámetro Z), que la compra se realice cuando el precio esté a 80 puntos por encima de la WMA(160) que denomino como “indicator2”.

    Dicho de otra manera, que el corte de medias WMA, sea como un activador del sistema, para que cuando se dé mi condición Z se coloque una orden de compra a 80 puntos por encima de la WMA(160) que dure hasta que se den mis condiciones de “SELL AT MARKET”.

    Igualmente para los cortos, que se coloque una orden de entrada corta a -80 puntos de la WMA(160) cuando la WMA(4) se encuentre a Z puntos por debajo de la WMA(160).

    Muchas gracias de antemano por vuestra ayuda.

    Saludos

    #191248 quote
    robertogozzi
    Moderator
    Master

    Reemplace las líneas 17 y 28 con estas:

    BUY 1 CONTRACT AT indicator2 + 80*PipSize STOP
    SELLSHORT 1 CONTRACT AT indicator2 - 80*PipSize STOP
    #191256 quote
    MaikelNait
    Participant
    New

    Muchas gracias por el código, pero no funciona correctamente. Creo que no me he explicado bien 🙁

    Sustituyendo estas líneas, conseguimos una entrada en el mercado inmediatamente después del corte de medias + Z, aunque el precio en ese momento esté por encima de 80 puntos de la WMA 160.

    Solo funciona correctamente si, cuando las medias cortan, el precio en ese momento está por debajo de los 80 puntos del indicador2 , entonces sí que el sistema emite orden para comprar cuando alcance los 80 puntos. Pero si cuando las medias cortan y el indicador1 es mayor que indicador2 +Z (tal y como condiciona el código) el sistema emite orden de compra aunque el precio sea superior a indicador2 + 80 puntos.

    En largos, busco que una vez las medias se corten y el indicador1 sea igual o mayor al indicador2 +Z puntos, el sistema espere a que el precio se encuentre a un máximo de 80 puntos por encima de WMA 160 para ejecutar la orden de compra. Es decir entre la WMA 160  y la WMA 160 + 80 puntos y no por encima de los 80 puntos de la WMA 160.

    Muchas gracias de antemano por toda tu ayuda.

    #191308 quote
    robertogozzi
    Moderator
    Master

    ¿Quizás te refieres a esto?

    DEFPARAM CumulateOrders = false // Acumulación de posiciones desactivada
     
    z = 50
    w = 40
    // Condiciones para entrada de posiciones largas
    indicator1 = WeightedAverage[4](totalPrice)
    indicator2 = WeightedAverage[160](totalPrice)
     
    c1 = (indicator1 > indicator2)
    c2 = (indicator1 > indicator2 + z)
    c3 = (indicator1 < indicator2)
    C4 = (indicator1 < indicator2 - Z)
    c7 = (indicator1 < indicator2 - w)
    C8 = (indicator1 > indicator2 + w)
     
    IF c1 and C2 AND (close < (indicator2 + 80*PipSize)) THEN
    BUY 1 CONTRACT AT indicator2 + 80*PipSize STOP
    ENDIF
     
    // Condiciones de salida de posiciones largas
    IF c3 and C7 THEN
    SELL AT MARKET
    ENDIF
     
    // Condiciones de entrada de posiciones cortas
     
    IF c3 and C4 AND (close > (indicator2 - 80*PipSize)) THEN
    SELLSHORT 1 CONTRACT AT indicator2 - 80*PipSize STOP
    ENDIF
     
    // Condiciones de salida de posiciones cortas
     
     
    IF c1 and C8 THEN
    EXITSHORT AT MARKET
    ENDIF
Viewing 4 posts - 1 through 4 (of 4 total)
  • You must be logged in to reply to this topic.

Mejorar la entrada en sistema con corte de medias WMA


ProOrder: Trading Automático y Backtesting

New Reply
Author
author-avatar
MaikelNait @maikelnait Participant
Summary

This topic contains 3 replies,
has 2 voices, and was last updated by robertogozzi
3 years, 11 months ago.

Topic Details
Forum: ProOrder: Trading Automático y Backtesting
Language: Spanish
Started: 04/05/2022
Status: Active
Attachments: No files
Logo Logo
Loading...