Dibujar linea de apertura y dlinea a un porcentaje objetivo

Viewing 12 posts - 1 through 12 (of 12 total)
  • Author
    Posts
  • #241572 quote
    Amanav
    Participant
    New

    Hola,

    Llevo dias intentando programar algo que me parece simple pero no soy capaz.

    Quiero dibujar una linea de precio de apertura de la semana a una hora en concreto a las 01:00 en grafico de 5 minutos y una linea en la que yo pueda poner a que porcentaje objetivo quiero que se dibuje. Por ejemplo al 5% y que si quiero que en otro momento sea al 3% pueda cambiarlo.

    Podéis ayudarme??

     

    Gracias

    #241585 quote
    Iván González
    Moderator
    Master

    Buenos días

    Aquí lo tienes:

    // Variables de configuración
    OpeningHour = 130000 // Hora de apertura
    TargetPercentage = 5 // Porcentaje objetivo (puedes cambiar este valor)
    
    // Obtener el precio de apertura semanal
    IF openDayOfWeek = 1 AND opentime >= OpeningHour and opentime[1]<OpeningHour THEN
    LastWeeklyOpen=WeeklyOpen
    LastWeeklyIdx=WeeklyIdx
    LastTargetLevel=TargetLevel
    WeeklyOpen = Open // Guardar el precio de apertura semanal
    WeeklyIdx = barindex
    TargetLevel = WeeklyOpen + (WeeklyOpen * TargetPercentage / 100)// Calcular el nivel del porcentaje objetivo
    ENDIF
    // Dibujar la línea del precio de apertura semanal
    DRAWSEGMENT(LastWeeklyIdx, LastWeeklyOpen, WeeklyIdx, LastWeeklyOpen) COLOURED(0, 0, 255) style(dottedline)
    // Dibujar la línea del nivel de porcentaje objetivo
    DRAWSEGMENT(LastWeeklyIdx, LastTargetLevel, WeeklyIdx, LastTargetLevel) COLOURED(255, 0, 0) style(dottedline)// Línea roja para el porcentaje 
    
    if islastbarupdate then
    // Dibujar la línea del precio de apertura semanal
    DRAWSEGMENT(WeeklyIdx, WeeklyOpen, barindex+10, WeeklyOpen) COLOURED(0, 0, 255) style(line)
    // Dibujar la línea del nivel de porcentaje objetivo
    DRAWSEGMENT(WeeklyIdx, TargetLevel, barindex+10, TargetLevel) COLOURED(255, 0, 0) style(line)// Línea roja para el porcentaje
    endif
    
    return
    Amanav thanked this post
    #241675 quote
    Amanav
    Participant
    New

    Buenos días Iván

    Gracias por tu rápida respuesta.

    He puesto el indicador y todo y que no me da errores, no dibuja las líneas.

    ¿Por qué puede ser??

    Un abrazo y felices fiestas

    #241676 quote
    Amanav
    Participant
    New

    Disculpa Iván,

    Si que dibuja la linea de apertura, pero no a las 01:00 sino a las 13:00.

    Lo he intentado cambiar yo y no se porque a las 01:00 no las dibuja y a otras horas si.

    Por otro lado, la linea de objetivo variable, que en este caso dijimos al 5 %, como puedo hacer para que tambien la dibuje al -5%?

    Saludos

    #241683 quote
    JS
    Participant
    Senior

    Aquí está el código ajustado de Ivan…

    Si deseas usar diferentes horarios o porcentajes, puedes ajustarlos en las primeras líneas del código (OpeningHour, TargetPercentage1, TargetPercentage2)…

    // Variables de configuración
    OpeningHour = 010000 // Hora de apertura
    TargetPercentage1 = 5 // Porcentaje objetivo (puedes cambiar este valor)
    TargetPercentage2 = -5
    
    // Obtener el precio de apertura semanal
    IF openDayOfWeek = 1 AND opentime >= OpeningHour and opentime[1]<OpeningHour THEN
    LastWeeklyOpen=WeeklyOpen
    LastWeeklyIdx=WeeklyIdx
    LastTargetLevel1=TargetLevel1
    LastTargetLevel2=TargetLevel2
    WeeklyOpen = Open // Guardar el precio de apertura semanal
    WeeklyIdx = barindex
    TargetLevel1 = WeeklyOpen + (WeeklyOpen * TargetPercentage1 / 100)// Calcular el nivel del porcentaje objetivo
    TargetLevel2 = WeeklyOpen + (WeeklyOpen * TargetPercentage2 / 100)
    ENDIF
    // Dibujar la línea del precio de apertura semanal
    DRAWSEGMENT(LastWeeklyIdx, LastWeeklyOpen, WeeklyIdx, LastWeeklyOpen) COLOURED(0, 0, 255) style(dottedline)
    // Dibujar la línea del nivel de porcentaje objetivo
    DRAWSEGMENT(LastWeeklyIdx, LastTargetLevel1, WeeklyIdx, LastTargetLevel1) COLOURED(255, 0, 0) style(dottedline)// Línea roja para el porcentaje
    DRAWSEGMENT(LastWeeklyIdx, LastTargetLevel2, WeeklyIdx, LastTargetLevel2) COLOURED(255, 0, 0) style(dottedline)
    
    if islastbarupdate then
    // Dibujar la línea del precio de apertura semanal
    DRAWSEGMENT(WeeklyIdx, WeeklyOpen, barindex+10, WeeklyOpen) COLOURED(0, 0, 255) style(line)
    // Dibujar la línea del nivel de porcentaje objetivo
    DRAWSEGMENT(WeeklyIdx, TargetLevel1, barindex+10, TargetLevel1) COLOURED(255, 0, 0) style(line)// Línea roja para el porcentaje
    DRAWSEGMENT(WeeklyIdx, TargetLevel2, barindex+10, TargetLevel2) COLOURED(255, 0, 0) style(line)
    endif
    
    return
    robertogozzi, Amanav and Iván González thanked this post
    #241685 quote
    Amanav
    Participant
    New

    Muchas gracias por responder,

    Pensaba que hoy no respondería nadie al ser domingo y he puesto una nueva pregunta sin ver tu anterior respuesta. MUCHAS, muchas Gracias.

    Como tengo el dia tranquilo estoy haciendo cosas y resuelvo unas y se me dificultan otras.

    SOLUCIONADO lo de añadir una linea en el -5%. Aunque para no tocar el código cada vez, me gustaría poder añadir un parámetro que me permitiera poder multiplicar ese porcentaje.

    Me explico, imaginemos que lo pongo en 1,5% dentro del código. Pues quiero añadir un parámetro que cambiándolo me permita ponerlo multiplicándolo x 2, x 4, x 8 o x 16. O sea, que si tengo 1,5% y cambio el parámetro a 2, lo múltiple por dos y entonces dibuje la lineal al 3%, que si cambio el parámetro a 4 pues lo multiplique por 4 i dibuje la linea al 6% y así con 4 niveles de parámetros.

    SIGO sin entender porque puedo configurar cualquier hora menos las 01:00 h. A esa hora las líneas no se dibujan.

    SI pongo hora 010000 seria lo correcto y no lo hace lo mínimo que me deja es 010001

    Otra tontería mas, como darle mayor grosor a las líneas?

     

    Muchas gracias y felices fiestas

    #241686 quote
    JS
    Participant
    Senior

    Lo que quizás funcione mejor es hacer que la entrada sea variable para que puedas establecer tus propios porcentajes.
    Cuando haces clic en la etiqueta del indicador en el gráfico, puedes configurar el indicador de la manera que prefieras.
    En cuanto a los horarios diferentes, probablemente tenga que ver con la zona horaria; creo que tal vez deberías usar ‘000000’ en lugar de ‘010000’.
    ¡Felices fiestas para ti también!”

    Amanav thanked this post
    #241689 quote
    JS
    Participant
    Senior

    P.D.: primero debes importar el archivo ITF para poder ajustar la configuración…

    Amanav thanked this post
    #241691 quote
    Amanav
    Participant
    New

    Es que si añado muchas lineas, hacerlo manualmente tardo mucho.

    Por eso busco una forma mas automática.

    Gracias

    #241693 quote
    JS
    Participant
    Senior

    Cuando desees utilizar más líneas de objetivos (targets), será necesario ajustar el código. Modificaré el código para que puedas usar 5 objetivos positivos y 5 objetivos negativos…”

    Amanav and Iván González thanked this post
    #241741 quote
    Amanav
    Participant
    New

    Buenos días,

    He estado trabajando en el código y tengo algún tema a mejorar.

    Pongo este código Mensual en grafico de 15 minutos y necesito resolver dos cosas:

    1-no consigo que me coja como inicio horario las 01:00 EN CAMBIO SI LO HAGO EN EL GRAFIGO DE 5 MINUTOS SI ME LO COGE

    2- como saco la variable de volatilidad = 4 fuera del código como un parámetro que pueda modificar??

    // Variables de configuración
    OpeningHour = 010010 // Hora de apertura          SI AQUI PONGO 010000 SE VA AL MES DE OCTUBRE EN LUGAR DE DICIEMBRE
    volatilidad = 4
    startDayOfMonth = 2 // Día del mes para empezar a dibujar la línea de apertura, ESTO LOTENGO ASÍ POR SI EL MES INICIA EN DIA FESTIVO
    openDayOfMonth = 2 // Día del mes para dibujar la línea de apertura

    TargetPercentage1 = 0.50 // Porcentaje objetivo 1
    TargetPercentage2 = -0.50 // Porcentaje objetivo 2
    TargetPercentage3 = 1 // Porcentaje objetivo 3
    TargetPercentage4 = -1 // Porcentaje objetivo 4

    AdjustedTargetPercentage1 = TargetPercentage1 * volatilidad
    AdjustedTargetPercentage2 = TargetPercentage2 * volatilidad
    AdjustedTargetPercentage3 = TargetPercentage3 * volatilidad
    AdjustedTargetPercentage4 = TargetPercentage4 * volatilidad

    // Variables internas
    // Definir dayofmonth correctamente para obtener el día del mes
    dayofmonth = day
    isFirstTradingDay = 0

    // Verificar el primer día hábil del mes a partir del día especificado

    IF dayofmonth = openDayOfMonth AND opentime >= OpeningHour AND opentime[1] < OpeningHour THEN
    LastMonthlyOpen = MonthlyOpen
    LastMonthlyIdx = MonthlyIdx
    LastTargetLevel1 = TargetLevel1
    LastTargetLevel2 = TargetLevel2
    LastTargetLevel3 = TargetLevel3
    LastTargetLevel4 = TargetLevel4

    MonthlyOpen = Open // Guardar el precio de apertura semanal
    MonthlyIdx = barindex
    TargetLevel1 = MonthlyOpen + (MonthlyOpen * AdjustedTargetPercentage1 / 100) // Calcular el nivel objetivo 1
    TargetLevel2 = MonthlyOpen + (MonthlyOpen * AdjustedTargetPercentage2 / 100) // Calcular el nivel objetivo 2
    TargetLevel3 = MonthlyOpen + (MonthlyOpen * AdjustedTargetPercentage3 / 100) // Calcular el nivel objetivo 3
    TargetLevel4 = MonthlyOpen + (MonthlyOpen * AdjustedTargetPercentage4 / 100) // Calcular el nivel objetivo 4

    ENDIF

    // Dibujar la línea del precio de apertura semanal en color naranja
    DRAWSEGMENT(LastMonthlyIdx, LastMonthlyOpen, MonthlyIdx, LastMonthlyOpen) COLOURED(127, 255, 0) style(dottedline)

    // Dibujar las líneas de los niveles objetivos
    DRAWSEGMENT(LastMonthlyIdx, LastTargetLevel1, MonthlyIdx, LastTargetLevel1) COLOURED(255, 165, 0) style(dottedline)
    DRAWSEGMENT(LastMonthlyIdx, LastTargetLevel2, MonthlyIdx, LastTargetLevel2) COLOURED(255, 165, 0) style(dottedline)
    DRAWSEGMENT(LastMonthlyIdx, LastTargetLevel3, MonthlyIdx, LastTargetLevel3) COLOURED(255, 165, 0) style(dottedline)
    DRAWSEGMENT(LastMonthlyIdx, LastTargetLevel4, MonthlyIdx, LastTargetLevel4) COLOURED(255, 165, 0) style(dottedline)

    IF islastbarupdate THEN
    // Dibujar la línea del precio de apertura semanal extendida en color naranja
    DRAWSEGMENT(MonthlyIdx, MonthlyOpen, barindex + 10, MonthlyOpen) COLOURED(127, 255, 0) style(line)

    // Dibujar las líneas de los niveles objetivos extendidas
    DRAWSEGMENT(MonthlyIdx, TargetLevel1, barindex + 10, TargetLevel1) COLOURED(255, 165, 0) style(line)
    DRAWSEGMENT(MonthlyIdx, TargetLevel2, barindex + 10, TargetLevel2) COLOURED(255, 165, 0) style(line)
    DRAWSEGMENT(MonthlyIdx, TargetLevel3, barindex + 10, TargetLevel3) COLOURED(255, 165, 0) style(line)
    DRAWSEGMENT(MonthlyIdx, TargetLevel4, barindex + 10, TargetLevel4) COLOURED(255, 165, 0) style(line)

    ENDIF

    RETURN

     

    Muchas Gracias y Felices fiestas

    #242063 quote
    Amanav
    Participant
    New

    Feliz año nuevo a todos!!

    Alguien puede ayudarme??

     

    Gracias

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

Dibujar linea de apertura y dlinea a un porcentaje objetivo


ProOrder: Trading Automático y Backtesting

New Reply
Author
author-avatar
Amanav @amanav Participant
Summary

This topic contains 11 replies,
has 3 voices, and was last updated by Amanav
1 year, 1 month ago.

Topic Details
Forum: ProOrder: Trading Automático y Backtesting
Language: Spanish
Started: 12/18/2024
Status: Active
Attachments: 7 files
Logo Logo
Loading...