Comprar y vender posición entera o parcial en función condiciones

Forums ProRealTime foro Español Soporte ProOrder Comprar y vender posición entera o parcial en función condiciones

Viewing 5 posts - 1 through 5 (of 5 total)
  • #235803

    Hola, soy nuevo en esto de programar un backtest,  y no soy capaz de escribir un código, que sirva para comprar con el 100% del capital cuando se cumplen dos condiciones , y el 50% del capital cuando se cumple una sola condición, y lo mismo para la venta. Pongo este ejemplo: quiero estar 100% invertido cuando una acción, tiene el precio está por encima de la media simple de 200 y cuando el RSI de 14 periodos, está por encima de 60, si el RSI se coloca por debajo de 60, pero el precio sigue por encima de la media de 200, solo quiero vender el 50% de la posición. Si el RSI vuelve a estar por encima de 60, quiero estar otra vez invertido 100%. Sí por ejemplo, no se cumple ninguna de las 2 condiciones, quiero vender todo, y estar 0% invertido.

    Solo he conseguido, que se cumplan estas condiciones para la venta, pero en el momento, en que se produce la primera venta del 50%, si luego el RSI vuelve a estar por encima de 60, ya no se activa ninguna orden de compra, para volver a estar invertido 100%. He probado de diferentes formas con el DEFPARAM true o false, pero no lo consigo. Este es el código que tengo metido actualmente. Muchas gracias.

    //SISTEMA RSI Y MEDIA200//
    DEFPARAM CumulateOrders=True

    //INDICADORES UTILIZADOS//
    MSIMPLE= AVERAGE [200] (close)
    MiRSI= RSI [14] (close)

    //CONDICIONES ENTRADA
    C1 = CLOSE> MSIMPLE
    C2 = MiRSI>60

    //CONDICIONES SALIDA PARCIAL
    C3 = MiRSI <60

    // CONDICIONES SALIDA TOTAL
    C4 = CLOSE <MSIMPLE

    //GESTIÓN DE CAPITAL
    CAPITALINICIAL = 50000
    CAPITALACUMULADO = STRATEGYPROFIT + CAPITALINICIAL
    numShares = floor (CAPITALACUMULADO / CLOSE)

    //ORDENES ENTRADA
    IF C1 AND C2 AND NOT ONMARKET THEN
    BUY numShares shares AT MARKET
    ENDIF

    //ORDENES SALIDA

    IF NOT Onmarket THEN
    Vender = 1
    ENDIF

    //REM ORDENES DE VENTA PARCIAL
    IF C3 AND Vender THEN
    SELL numShares /2 SHARES AT MARKET
    Vender = 0
    ELSIF C4 THEN
    SELL AT MARKET
    ENDIF
    //

    #235878

    buenas. Sobre tu código he cambiado la variable vender.

    #235938

    Hola Ivan,

    Muchas gracias por tu ayuda. He introducido tus cambios, lamentablemente sigo igual 🙁  , lo que trato es que el sistema cuando esté 50% invertido, pueda pasar al 100% invertido directamente , cuando se vuelven a cumplir las 2 condiciones, y que no tenga que esperar a que primero pase a estar al 0% invertido (cuando se dejan de cumplir las 2 condiciones), para luego ya sí el sistema comprar el 100%, si vuelven a darse las 2 condiciones.

    En resumen, que no me deja pasar del 50% al 100%, y solo funciona  la compra del 0% al 100%.

     

    Un saludo

    #235965

    Ahh, ok.

    #236272

    Hola, me temo que sigue sin salir, de hecho ahora no entiendo muy bien lo resultados…empiezo a pensar que quizás lo que estoy pidiendo , no se puede hacer directamente…era un simple sistema para estar posicionado el 50% o el 100% dependiendo de un sistema con 2 condiciones, en el que si se cumplía la condición A entraba al 50% y si se cumplía A y B a la vez, estaba al 100%.  Pero no termina de salir.

    Un saludo y gracias

     

Viewing 5 posts - 1 through 5 (of 5 total)

Create your free account now and post your request to benefit from the help of the community
Register or Login