Ayuda en código con condicionante previo para abrir posición

Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
    Posts
  • #204374 quote
    MaikelNait
    Participant
    New
    DEFPARAM CumulateOrders = FALSE // Acumulación de posiciones desactivada
    
    z = 60
    w = 60
    
    // Condiciones para entrada de posiciones largas
    indicator1 = WeightedAverage[9](totalPrice)
    indicator2 = WeightedAverage[100](totalPrice)
    
    c1 = (indicator1 CROSSES OVER indicator2)
    c2 = (indicator1 > indicator2 + z)
    c3 = (indicator1 CROSSES UNDER indicator2)
    C4 = (indicator1 < indicator2 - Z)
    c7 = (indicator1 < indicator2 - w)
    C8 = (indicator1 > indicator2 + w)
    
    IF c1 and C2 THEN
    BUY 2 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 2 CONTRACT AT market
    ENDIF
    
    // Condiciones de salida de posiciones cortas
    
    IF c1 and C8 THEN
    EXITSHORT AT MARKET
    ENDIF
    
    DEFPARAM CumulateOrders = FALSE // Acumulación de posiciones desactivada
    
    z = 60
    w = 60
    
    // Condiciones para entrada de posiciones largas
    indicator1 = WeightedAverage[9](totalPrice)
    indicator2 = WeightedAverage[100](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 2 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 2 CONTRACT AT market
    ENDIF
    
    // Condiciones de salida de posiciones cortas
    
    IF c1 and C8 THEN
    EXITSHORT AT MARKET
    ENDIF

     

     

    Buenos dias a tod@s,

    Necesito ayuda con mi código ya que no consigo programar mi idea correctamente.

    La idea es sencilla; cuando se produce cruce al alza de MM9 versus MM100, se da una primera señal de entrada con largos y cuando el cruze es a la baja se da primera señal para abrir cortos.. Pero hasta que la distancia entre las MM no sea mínimo de 60 puntos no debe realizarse la apertura de largos o cortos, según el caso.

    Con mi siguiente código, en cuanto lo activo abre posición sin esperar al cruce me medias previo:

     

     

    Por otro lado cuando aplico este otro código el error está en que solo abre posición, si en el momento del cruce de MM la distancia es mínimo de 60. En caso de que la distancia mínimo de 60 se alcance más adelante, ya no abre posición.

     

     

    Ruego me ayudéis para poder sacar mi sistema adelante.

    Muchas gracias a tod@s.

    #204433 quote
    robertogozzi
    Moderator
    Master

    Ahi esta:

    DEFPARAM CumulateOrders = FALSE // Acumulación de posiciones desactivada
    ONCE c1Flag  = 0
    ONCE c3Flag = 0
    
    ONCE c1        = 0
    ONCE c3        = 0
    
    z = 60
    w = 60
    
    // Condiciones para entrada de posiciones largas
    indicator1 = WeightedAverage[9](totalPrice)
    indicator2 = WeightedAverage[100](totalPrice)
    
    IF c1 = 0 THEN
    c1 = (indicator1 CROSSES OVER indicator2)
    IF c1 THEN
    c1Flag = 1
    c3     = 0
    c3Flag = 0
    ENDIF
    ENDIF
    
    c2 = (indicator1 - indicator2) > z//(indicator1 > indicator2 + z)
    
    IF c3 = 0 THEN
    c3 = (indicator1 CROSSES UNDER indicator2)
    IF c3 THEN
    c3Flag = 1
    c1     = 0
    c1Flag = 0
    ENDIF
    ENDIF
    
    C4 = (indicator2 - indicator1) > Z//(indicator1 < indicator2 - Z)
    c7 = (indicator2 - indicator1) > w//(indicator1 < indicator2 - w)
    C8 = (indicator1 - indicator2) > w//(indicator1 > indicator2 + w)
    
    IF c1Flag and C2 THEN
    BUY 2 CONTRACT AT market
    ENDIF
    
    // Condiciones de salida de posiciones largas
    IF c3Flag and C7 THEN
    SELL AT MARKET
    ENDIF
    
    // Condiciones de entrada de posiciones cortas
    IF c3Flag and C4 THEN
    SELLSHORT 2 CONTRACT AT market
    ENDIF
    
    // Condiciones de salida de posiciones cortas
    IF c1Flag and C8 THEN
    EXITSHORT AT MARKET
    ENDIF

    No publicaste el segundo código.

    #204710 quote
    MaikelNait
    Participant
    New

    Hola, buenas noches Roberto.

    He operado con este código en cuenta Demo para comprobarlo y, lamentablemente,  ha abierto posiciones antes del cruce de MM.

    Busco que, cuando activo el sistema por primera vez, no haga ninguna operación hasta que no se den los condicionantes: Un nuevo corte de MM, y una distancia mínima entre MM de 60 puntos.

    Así que no debería haber abierto posición hoy, dado que lo he activado sobre las 9h y ha abierto posición sin esperar a un nuevo corte de MM.

    Muchas gracias por tu ayuda.

    Adjunto imagen de la entrada errónea.

    x-12.jpg x-12.jpg
    #205045 quote
    robertogozzi
    Moderator
    Master

    Agregue esto como una segunda línea:

    DEFPARAM PreLOadBars    = 0

    Lo probé y entra correctamente, después de cada cruce, si el ancho supera los 60 puntos.

    Agregue estas líneas al final, para que pueda ver las diversas señales en la ventana de variables que abre el backtest:

    graph indicator1 CROSSES OVER  indicator2 coloured("LawnGreen")
    graph indicator1 CROSSES UNDER indicator2 coloured("Red")
    graph abs(indicator1 - indicator2) > zz
Viewing 4 posts - 1 through 4 (of 4 total)
  • You must be logged in to reply to this topic.

Ayuda en código con condicionante previo para abrir posición


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, 3 months ago.

Topic Details
Forum: ProOrder: Trading Automático y Backtesting
Language: Spanish
Started: 11/18/2022
Status: Active
Attachments: 1 files
Logo Logo
Loading...