Sistema muy sencillo de MACD

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #245701 quote
    osdiga
    Participant
    New

    Buenos días,

    soy nuevo en el foro y en backtests de prorealtime y os quería pedir ayuda. Tengo un sistema ultra sencillo que quiero backtestear.

    Entra largo cuando tanto la linea MACD como el histograma son positivos.

    Sale de la posición cuando el histograma es negativo. Este es el código:

    defparam cumulateorders= false
    
    //indicadores
    Mimacd= MACDline[10,20,7](close)
    MiHisto= MACD[10,20,7](close)
    capital= 10000 + STRATEGYPROFIT
    
    //entrada cuando tanto la linea MACD como el histograma son positivos
    IF NOT longonmarket AND Mimacd>0 and MiHisto>0 THEN
    contratos = capital/close
    BUY contratos SHARES AT MARKET
    ENDIF
    
    //salida cuando el histograma es negativo
    if longonmarket and MiHisto<0   THEN
    sell contratos SHARES AT MARKET
    ENDIF

     

    Pero estoy intentado añadir que la salida de la posición no sea automática sino que, cuando se dé la condición (histograma negativo), se active un stoploss un 1% por debajo del mínimo de esa barra.

    En caso de que el histograma volviera a ser positivo, el stoploss se desactiva.

    He creado una variable onceSLActive que con 1 indica stoploss activado y con 0 indica stoploss desactivado.

    defparam cumulateorders= false
    //indicadores
    Mimacd= MACDline[10,20,7](close)
    MiHisto= MACD[10,20,7](close)
    capital= 10000 + STRATEGYPROFIT 
    // Variables de control
    onceSLActive = 0
    stopPrice = 0.0
    
    //condicion de entrada
    IF NOT longonmarket AND Mimacd>0 and MiHisto>0 THEN
    contratos = capital/close
    onceSLActive = 0
    BUY contratos SHARES AT MARKET
    ENDIF
    
    //activacion del stoploss
    if longonmarket and onceSLActive = 0 and  MiHisto<0   THEN
    onceSLActive = 1
    stopPrice = close * 0.99
    ENDIF
    
    //desactivacion del stoploss porque el histograma vuelve a ser positivo
    if longonmarket and onceSLActive = 1 and  MiHisto>0   THEN
    onceSLActive = 0
    ENDIF
    
    // Ejecución del stop loss si el precio cae por debajo del stopPrice
    IF onceSLActive = 1 AND close <= stopPrice THEN
    sell contratos SHARES AT MARKET
    onceSLActive = 0
    ENDIF

    el problema es que no me funciona. Lo unico que hace el backtest es hacer una compra al inicio del periodo y una venta al final.

    Si fuerais tan amables de indicarme el error.

    Muchas gracias.

    #245722 quote
    Iván González
    Moderator
    Master

    Buenas. Esto creo que cumple con lo que buscas:

    defparam cumulateorders= false
    
    //indicadores
    Mimacd= MACDline[10,20,7](close)
    MiHisto= MACD[10,20,7](close)
    capital= 10000 + STRATEGYPROFIT
    
    //entrada cuando tanto la linea MACD como el histograma son positivos
    IF NOT longonmarket AND Mimacd>0 and MiHisto>0 THEN
    contratos = capital/close
    BUY contratos SHARES AT MARKET
    ENDIF
    
    if longonmarket and MiHisto crosses under 0 THEN
    // ajuste del stop a 1% por debajo del minimo
    stoploss = 0.99*low
    elsif longonmarket and MiHisto crosses over 0 then
    // quitamos el stop loss (para largos)
    stoploss = 0
    elsif not onmarket then
    // aseguramos que no haya stop loss
    stoploss = 0
    ENDIF
    
    set stop price stoploss
    
    // representación del stop loss en el grafico
    graphonprice stoploss
    osdiga thanked this post
    #245763 quote
    osdiga
    Participant
    New

    Muchísimas gracias!!

    Voy a probarlo.

    #245849 quote
    GraHal
    Participant
    Master

    Iván escribió:

    MiHisto= MACD[10,20,7](cerrar)

    Perdón por la pregunta tonta, pero ¿cómo puedo obtener un histograma MACD?

    El histograma MACD es ¿MACDLine – MACDSignal?

    #245850 quote
    GraHal
    Participant
    Master

    Respecto a lo anterior, ignórelo… Puedo verlo en el código disponible para Algos, etc.

    ¡Estos nervios por los aranceles me están afectando y me están quitando el sueño! 😉 

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

Sistema muy sencillo de MACD


ProOrder: Trading Automático y Backtesting

New Reply
Author
author-avatar
osdiga @osdiga Participant
Summary

This topic contains 4 replies,
has 3 voices, and was last updated by GraHal
10 months, 3 weeks ago.

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