no ejecuta stop loss

Viewing 6 posts - 1 through 6 (of 6 total)
  • Author
    Posts
  • #246381 quote
    josemi
    Participant
    Average

    Hola comunidad, tengo el siguiente sistema:

    // Condiciones de salida de posiciones cortas
    // Exit on ATR
    if shortonmarket and atr2 crosses under avgatr2 then
    exitshort at market

    SET STOP %LOSS  0.1
    endif

    //trailing stop function
    trailingstart = 20 //trailing will start @trailinstart points profit
    trailingstep = 1 //trailing step to move the “stoploss”

    //reset the stoploss value
    IF NOT ONMARKET THEN
    newSL=0
    ENDIF

    //manage short positions
    IF SHORTONMARKET THEN
    //first move (breakeven)
    IF newSL=0 AND tradeprice(3)-close>=trailingstart*pipsize THEN
    newSL = tradeprice(4)-trailingstep*pipsize
    ENDIF
    //next moves
    IF newSL>0 AND newSL-close>=trailingstep*pipsize THEN
    newSL = newSL-trailingstep*pipsize
    ENDIF
    ENDIF

    //stop order to exit the positions
    IF newSL>0 THEN
    EXITSHORT AT newSL STOP
    ENDIF

    pero tengo el problema de que no pone el stoploss, es decir, no lo ejecuta. Y no sé porqué. Alguien me puede echar una mano por favor.

    #246396 quote
    Iván González
    Moderator
    Master

    Hola. Por lo que veo en las primeras líneas de código colocas el stop loss dentro de la condicion de salida por lo que no se va a ejecutar hasta que no se de la salida técnica de ATR que has puesto.
    Si quieres colocar el stop loss lo puedes hacer fuera del condicional y siempre tendrás un stop loss en el nivel que tú decidas (no me meto en si lo tienes muy cerca o no).
    Por otro lado tambien puedes colocar el stop loss dentro de un condicional para que se active/actualice al cumplirse las condiciones establecidas.

    #246400 quote
    josemi
    Participant
    Average

    De acuerdo, mmm, bien, me puedes decir cómo se escriben las dos formas Iván? No quiero equivocarme otra vez, gracias

    #246420 quote
    Iván González
    Moderator
    Master

    por ejemplo,

    if tuscondiciones then
    buy 1 contract at market
    set stop %loss 5
    endif

    o

    //tus condiciones de entrada
    
    if xxxx then
    buy 1 contract at market
    endif
    
    set stop %loss 5

    o

    if condicionesparaStop then
    set stop %loss 5
    endif
    #246424 quote
    josemi
    Participant
    Average

    hola de nuevo Iván, no me he aclarado con la respuesta anterior. Necesito que el sistema ponga un stoploss y que éste vaya moviéndose con los parámetros del trailling que ya tengo codificados en mi sistema, y que también salga de la posición si el ATR cruza debajo de su media.

    El problema está en que cuando el sistema realiza una operación no lanza el dichoso stoploss.

    #246440 quote
    robertogozzi
    Moderator
    Master

    En estas líneas, SET STOP no se ejecuta para la operación actual porque se cerró en la línea anterior.
    Por lo tanto sólo es válido para operaciones posteriores.

    // Condiciones de salida de posiciones cortas
    // Exit on ATR
    if shortonmarket and atr2 crosses under avgatr2 then
    exitshort at market
    
    SET STOP %LOSS  0.1
    endif

    Mueva SET STOP a la línea después de SELLSHORT:

    IF Not OnMarket AND (sma1 CROSSES UNDER sma2) THEN
    SELLSHORT 1 Contract at Market
    SET STOP %LOSS  0.1
    ENDIF

    Utilice TRADEPRICE o TRADEPRICE(1), no TRADEPRICE(3) ni TRADEPRICE(4), que también son precios de salida de operaciones anteriores.

    Este es el código actualizado:

    sma1 = Average[20,0](close)
    sma2 = Average[50,0](close)
    atr2  = AverageTrueRange[14](close)
    avgatr2 = average[10,0](atr2)
    
    IF Not OnMarket AND (sma1 CROSSES UNDER sma2) THEN
    SELLSHORT 1 Contract at Market
    SET STOP %LOSS  1.0
    ENDIF
    
    // Condiciones de salida de posiciones cortas
    // Exit on ATR
    if shortonmarket and atr2 crosses under avgatr2 then
    exitshort at market
    endif
    
    //trailing stop function
    trailingstart = 20 //trailing will start @trailinstart points profit
    trailingstep = 1 //trailing step to move the "stoploss"
    
    //reset the stoploss value
    IF NOT ONMARKET THEN
    newSL=0
    ENDIF
    
    //manage short positions
    IF SHORTONMARKET THEN
    //first move (breakeven)
    IF newSL=0 AND tradeprice-close>=trailingstart*pipsize THEN
    newSL = tradeprice(1)-trailingstep*pipsize
    ENDIF
    //next moves
    IF newSL>0 AND newSL-close>=trailingstep*pipsize THEN
    newSL = newSL-trailingstep*pipsize
    ENDIF
    ENDIF
    
    //stop order to exit the positions
    IF newSL>0 THEN
    EXITSHORT AT newSL STOP
    ENDIF
    graphonprice Tradeprice * 1.001 AS "Stop Loss"     coloured("Red")
    graphonprice NewSL              AS "Trailing Stop" coloured("Blue")

    Añadí, al final, dos líneas con GRAPHONPRICE para que podáis ver en el gráfico el Stop Loss 0,1% (en Rojo) y el Trailing Stop (en Azul).

Viewing 6 posts - 1 through 6 (of 6 total)
  • You must be logged in to reply to this topic.

no ejecuta stop loss


Soporte ProOrder

New Reply
Author
author-avatar
josemi @josemi Participant
Summary

This topic contains 5 replies,
has 3 voices, and was last updated by robertogozzi
9 months, 1 week ago.

Topic Details
Forum: Soporte ProOrder
Language: Spanish
Started: 04/25/2025
Status: Active
Attachments: No files
Logo Logo
Loading...