Indicador de entrada y salida

Viewing 10 posts - 1 through 10 (of 10 total)
  • Author
    Posts
  • #9541 quote
    Pere
    Participant
    Veteran

    Buenos días.

    He hecho un indicador para entrar y salir, pero no me acaba de funcionar.

    Está basado en el Inverse Fisher Transform aplicado al RSI. Según Prorealtime, genera una orden de compra cuando la curva cruza al alza 50 y vende cuando cruza a la baja 80.

    En cortos, vende cuando cruza a la baja 50 y compra cuando cruza al alza 20.

    He hecho el siguiente código:

    Ind=RSI[n](Close)
    x = 0.1 * (Ind – 50)
    y = (EXP (2 * x) – 1) / (EXP (2 * x) + 1)
    z = 50 * (y + 1)
    IF z CROSSES OVER 50 THEN
    a=1
    ENDIF
    IF z CROSSES UNDER 80 THEN
    b=1
    a=0
    ELSE
    b=0
    ENDIF
    IF z CROSSES UNDER 50 THEN
    c=-1
    b=1
    ENDIF
    IF z CROSSES OVER 20 THEN
    d=-1
    c=0
    ELSE
    d=0
    ENDIF
    RETURN a AS “Entrada largos”, b AS “Salida largos”, c AS “Entrada cortos”, d AS “Salida cortos”

    pero no funciona correctamente. Alguien sabe dónde está el error?

    #9554 quote
    Pere
    Participant
    Veteran

    Parece que lo he solucionado bastante bien, aunque se puede mejorar. Me complicaba bastante la vida. Por si le puede ser de utilidad a alguien, ahí ve el código corregido:

    REM Inverse Fisher Transform aplicado al RSI
    REM Parámetros: n = períodos del RSI
    //n = 9
    Ind=RSI[n](Close)
    x = 0.1 * (Ind - 50)
    y = (EXP (2 * x) - 1) / (EXP (2 * x) + 1)
    z = 50 * (y + 1)
    
    IF z CROSSES OVER 50 THEN
    a=1
    ELSIF z CROSSES OVER 80 THEN
    a=1
    ELSIF z CROSSES UNDER 80 THEN
    a=0
    ENDIF
    IF z CROSSES UNDER 50 THEN
    a=-1
    ELSIF z CROSSES UNDER 20 THEN
    a=-1
    ELSIF z CROSSES OVER 20 THEN
    a=0
    ENDIF
    RETURN a AS "Entrada-Salida", 0 AS "cero"
    #9568 quote
    Nicolas
    Keymaster
    Master

    Petrus muchas gracias por compartir su solución. Friendly.

    #9571 quote
    Pere
    Participant
    Veteran

    Como ya dije que se podía mejorar, aquí tenéis el código un poco más pulidito. Me olvidaba decir que las dos salidas hay que ponerlas en histograma, verde para largos y rojo para cortos. También hay que añadir la variable n, aunque el valor por defecto de 9 funciona bastante bien.

    REM Inverse Fisher Transform aplicado al RSI
    REM Parámetros: n = período para el cálculo del RSI
    //n = 9
    Ind=RSI[n](Close)
    x = 0.1 * (Ind - 50)
    y = (EXP (2 * x) - 1) / (EXP (2 * x) + 1)
    z = 50 * (y + 1)
    IF z CROSSES OVER 50 THEN
    a=1
    ELSIF z CROSSES OVER 80 THEN
    a=1
    ELSIF z CROSSES UNDER 80 THEN
    a=0
    ENDIF
    IF z CROSSES UNDER 50 THEN
    a=0
    ENDIF
    IF z CROSSES UNDER 50 THEN
    b=-1
    ELSIF z CROSSES UNDER 20 THEN
    b=-1
    ELSIF z CROSSES OVER 20 THEN
    b=0
    ENDIF
    IF z CROSSES OVER 50 THEN
    b=0
    ENDIF
    RETURN a AS "Largos", b AS "Cortos", 0 AS "cero"
    #9582 quote
    Nicolas
    Keymaster
    Master

    Bien hecho. Este es un indicador puede publicar en la “Library”, estoy seguro de que será de interés para algunas personas en busca de señales de intraday trading.

    #17778 quote
    Parquecesped
    Participant
    New

    Soy principiante y novato, estoy iniciandome y, pretendo utilizar dos medias, una corta y otra larga para aplicar el siguiente desarrollo….

    SOS: necesito que me lo ordeneis y completeis… (estoy bloqueao).

    _______________________________________

    REM Inverse Fisher Transform aplicado al RSI
    REM Parámetros: n = período para el cálculo del RSI
    //n = 9
    Ind=RSI[9](Close)
    x = 0.1 * (Ind – 50)
    y = (EXP (2 * x) – 1) / (EXP (2 * x) + 1)
    z = 50 * (y + 1)

    ELSIF z CROSSES UNDER 80 THEN //a=0
    IF z CROSSES UNDER 50 THEN //a=0

    IF z CROSSES UNDER 50 THEN //b=-1
    ELSIF z CROSSES UNDER 20 THEN //b=-1

    BUY 1 SHARES AT MARKET
    ENDIF
    IF z CROSSES OVER 50 THEN //a=1
    ELSIF z CROSSES OVER 80 THEN //a=1

    ELSIF z CROSSES OVER 20 THEN //b=0
    IF z CROSSES OVER 50 THEN //b=0

    SELLSHORT 1 SHARES AT MARKET
    ENDIF

    //RETURN a AS “Largos”, b AS “Cortos”, 0 AS “cero”

    _________________________________

    Parece que hay conceptos que ProRalTime no acepta…

    Muchas gracias por la atencion

    #17779 quote
    Pere
    Participant
    Veteran

    Hola Parquecesped.

    Hay varios fallos de programación en ese texto, donde evidentemente PRT  dará error.

    Antes que corregirlo, y suponiendo que quieres hacer lo que yo hice hace ya tiempo, te paso el código que programé. Pon el indicador “Señal” en forma de histograma, dale color verde y rojo y te dará los diferentes niveles de entradas y salidas.

    REM Inverse Fisher Transform aplicado al RSI: FisherSIRSI2
    REM Parámetros: n = períodos para el cálculo del RSI
    n = 9
    Ind=RSI[n](Close)
    x = 0.1 * (Ind - 50)
    y = (EXP (2 * x) - 1) / (EXP (2 * x) + 1)
    z = 50 * (y + 1)
    
    IF z CROSSES UNDER 50 THEN
    a=0
    ELSIF z CROSSES OVER 85 THEN
    a=2
    ELSIF z CROSSES OVER 99 THEN
    a=3
    ELSIF z CROSSES UNDER 99 THEN
    a=2
    ELSIF z CROSSES UNDER 85 THEN
    a=1
    ELSIF z CROSSES OVER 50 THEN
    a=0
    ELSIF z CROSSES UNDER 15 THEN
    a=-2
    ELSIF z CROSSES UNDER 1 THEN
    a=-3
    ELSIF z CROSSES OVER 1 THEN
    a=-2
    ELSIF z CROSSES OVER 15 THEN
    a=-1
    ELSIF z CROSSES OVER 50 THEN
    a=0
    ENDIF
    RETURN a AS "Señal"
    
    #17781 quote
    Pere
    Participant
    Veteran

    Has mezclado mal la programación para hacer un indicador con la programación para realizar trading automático. No te aconsejo de que empieces a operar con el trading automático antes de comprender bien cómo funciona todo, a no ser que lo quieras para hacer backtests. Si es así, tienes que cambiar los diferentes conceptos: primero establece los diferentes indicadores, y luego haz la parte de Proorder con esos indicadores. Si quieres te doy un ejemplo con sistemas simples del tipo medias, y luego tú lo adaptas al indicador anterior:

    // Definición de los parámetros del código
    DEFPARAM CumulateOrders = False // Acumulación de posiciones desactivada
    
    REM Stop loss
    sl=50
    //Variables
    sl=10
    p=5
    MyEMA=ExponentialAverage[p](close)
    
    IF close CROSSES OVER MyEMA THEN
    k=1
    ELSIF close CROSSES UNDER MyEMA THEN
    k=-1
    ENDIF
    
    // Condiciones para entrada de posiciones largas
    IF k=1 THEN
    BUY 1 CONTRACT AT MARKET
    ENDIF
    
    // Condiciones de salida de posiciones largas
    IF k=-1 THEN
    SELL AT MARKET
    ENDIF
    
    // Condiciones de entrada de posiciones cortas
    IF k=-1 THEN
    SELLSHORT 1 CONTRACT AT MARKET
    ENDIF
    
    // Condiciones de salida de posiciones cortas
    IF k=1 THEN
    EXITSHORT  AT MARKET
    ENDIF
    
    // Stops y objetivos
    SET STOP pLOSS sl
    
    #18206 quote
    Parquecesped
    Participant
    New

    Agradezco tu atencion. Estoy siguiendo tu guion y practicando backtests.

    Te agraderia algunas instruccions basicas sobre como optimizar, lo que no se debe de hacer y, si es posible los pasos a seguir… (la peticion te la hace un estudiante sexagenario..).
    Agradezo la estupenda labor que estais desarrollando.

    Quedo a vuestra disposicion
    Saludos y Feliz Navidad

    #18211 quote
    Pere
    Participant
    Veteran

    Pues de sexagenario (casi septuagenario) a sexagenario, no te puedo recomendar en general lo que debes hacer, depende de lo que tengas en mente. Lo único que te puedo recomendar es estudiar mucho, aprender a programar con el Probuilder (hay un PDF por ahí, aunque le faltan muchas cosas, busca en Google), muchas pruebas con backtests (bájate el PDF Probacktest y Proorder), y sobre todo no hagas trading en real (siempre en demo) hasta después de 1,5-2 años de haber empezado. Si tienes alguna duda concreta, pregunta e intentaré ayudarte. Pero lo más importante, bájate esos tres documentos y estudia.

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

Indicador de entrada y salida


ProOrder: Trading Automático y Backtesting

New Reply
Author
author-avatar
Pere @petrus Participant
Summary

This topic contains 9 replies,
has 3 voices, and was last updated by Pere
9 years, 2 months ago.

Topic Details
Forum: ProOrder: Trading Automático y Backtesting
Language: Spanish
Started: 06/18/2016
Status: Active
Attachments: No files
Logo Logo
Loading...