Problema en vela de ejecución + Duda Stop Loss tras ocurrencia de suceso

Viewing 6 posts - 1 through 6 (of 6 total)
  • Author
    Posts
  • #173342 quote
    Carlosdd
    Participant
    New

    Buenas tardes

    Quería trasladarles 2 dudas en relación con el código de un sistema automático que estoy desarrollando para la temporalidad H1.

    1. La idea es que, EN EL MOMENTO en que se cumplan una serie de condiciones, se realicen las entradas y salidas, según corresponda. Sin embargo, en las pruebas que estoy realizando, las entradas y salidas las realiza en LA VELA SIGUIENTE en la que se producen las condiciones lo cual provoca que el sistema empeore bastante sus resultados. ¿Qué instrucción debo añadir en el código para que las ejecuciones se realicen EN EL MOMENTO en que se produzcan las condiciones y no en LA VELA SIGUIENTE?
    2. La otra duda es la siguiente: quiero incluir en el código una instrucción según la cual, en el momento en que ocurra un suceso X (por ejemplo que el precio cruce a la baja un indicador XX previamente definido), en la siguiente vela el sistema coloque un stop loss (en el caso de posiciones largas sería una venta) un tick por debajo del mínimo de la vela en la que haya ocurrido el suceso 1. ¿Cómo debería ser el código de esa parte subrayada?

    Muchas gracias por adelantado y un saludo

    Carlos D.

    #173343 quote
    robertogozzi
    Moderator
    Master
    1. Debe usar el soporte MTF (Multi, o Multiple, Time Frame) para usar incluso un marco de tiempo más pequeño, 1 minuto o incluso más pequeño, de modo que pueda ingresar casi de inmediato; si busca la palabra MTF encontrará artículos, blogs, publicaciones y muchos ejemplos;
    2. ¿Cuando una posición ya está abierta, o cuando la abres?
    #173346 quote
    Carlosdd
    Participant
    New

    Muchas gracias por tu pronta respuesta Roberto. Te respondo:

    1. Ok, investigaré la instrucción MTF para ver si puedo hacer que el sistema haga el análisis en H1 pero la ejecución en M1.
    2. Tienes razón, no lo especificaba (disculpa). Reformulo la duda: Quiero incluir en el código una instrucción PARA CUANDO HAY UNA POSICIÓN ABIERTA según la cual, en el momento en que ocurra un suceso X (por ejemplo que el precio cruce a la baja un indicador XX previamente definido), en la siguiente vela el sistema coloque un stop loss (en el caso de posiciones largas sería una venta) un tick por debajo del mínimo de la vela en la que haya ocurrido el suceso 1. ¿Cómo debería ser el código de esa parte subrayada?

    Gracias nuevamente y un saludo

    Carlos D.

    #173347 quote
    robertogozzi
    Moderator
    Master

    En el momento de la apertura, se debe determinar el precio de la entrada. Esto se puede hacer en la próxima vela (si usa MTF incluso solo 1 segundo o 1 minuto después), con esta instrucción (que debe colocarse ANTES del código de entrada al mercado):

    IF (OnMarket AND Not OnMarket[1]) OR (LongOnMarket AND ShortOnMarket[1]) OR (ShortOnMarket AND LongOnMarket[1]) THEN
       EntryPrice = TradePrice
    ENDIF

    Luego puede agregar el código del evento:

    IF EventX THEN
       SET STOP LOSS abs(EntryPrice - low) - 1 * PipSize
    ENDIF
    #173351 quote
    Carlosdd
    Participant
    New

    Muchas gracias Roberto.

    Si entiendo bien el código que has enviado, lo que tú planteas es que, una vez ocurra el suceso X, se coloque un Stop Loss 1 pip por debajo del mínimo de la vela EN QUE SE ABRIÓ LA POSICIÓN. ¿Es así?

    Sin embargo, lo que yo busco es colocar el stop 1 pip por debajo del mínimo de la vela EN QUE SE PRODUCE EL SUCESO X (lo cual puede suceder pasadas varias velas después de la entrada).

    Por tanto creo que lo que me faltaría averiguar es cómo definir en código “el mínimo de la vela en que se produce EventX”.

    Incluyo un ejemplo (tonto) para plantear la problemática:

    // Definición de los parámetros del código
    MED50 = Average[50](close)
    
    // Condiciones para entrada de posiciones largas (SIN COLOCAR STOP POR EL MOMENTO): que el precio cruce al alza MED50
     C1 = Close CROSSES OVER MED50
    
    //Orden de entrada en largo
    IF NOT LONGONMARKET AND C1 THEN 
    BUY 1 SHARE AT MARKET
    ENDIF
    
    // Condiciones para que se coloque el STOP: que el precio cruce a la baja la media de 50
    EventX = Close CROSSES UNDER MED50
    
    //Orden de colocación del stop loss (en este caso una venta) en LA SIGUIENTE VELA DONDE OCURRE EventX 
    //y al precio de 1 tick por debajo del mínimo de la VELA DONDE SUCEDE EventX:
    
    IF EventX THEN
       SET STOP LOSS (el mínimo de la vela en que se produce EventX) - 1 * PipSize
    ENDIF

    Muchas gracias nuevamente

    Carlos D.

    #173362 quote
    robertogozzi
    Moderator
    Master

    He puesto la distancia del Stop Loss del precio de entrada, si quieres ponerlo del precio actual solo tienes que usar esto:

    IF EventX THEN
       SET STOP LOSS abs(close - low) + 1 * PipSize
    ENDIF

    (en el ejemplo anterior había puesto “-” por error).
    O puede usar una orden pendiente (STOP o LIMIT, según el precio actual, si es mayor o menor; coloqué STOP al azar):

    IF EventX THEN
       ExitPrice = low - 1 * PipSize
       SELL AT ExitPrice STOP        //or LIMIT
    ENDIF

    En este caso “-” está bien.
    Recuerda que las órdenes pendientes solo duran 1 barra, por lo que en la siguiente barra debes colocarla nuevamente, de lo contrario te quedarás sin Stop Loss.

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

Problema en vela de ejecución + Duda Stop Loss tras ocurrencia de suceso


ProOrder: Trading Automático y Backtesting

New Reply
Author
author-avatar
Carlosdd @carlosdd Participant
Summary

This topic contains 5 replies,
has 2 voices, and was last updated by robertogozzi
4 years, 8 months ago.

Topic Details
Forum: ProOrder: Trading Automático y Backtesting
Language: Spanish
Started: 07/08/2021
Status: Active
Attachments: No files
Logo Logo
Loading...