Código Kase Dev Stop

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #147066 quote
    Santi
    Participant
    Junior

    Buenas tardes, adjunto un código de un sistema que no me acaba de hacer lo que quiero en varios aspectos, dentro del código precedido de // van los problemas.

    1. En cuanto a la instrucción DEFPARM FlaterAfter, quiero que a partir de las 13:00 horas no abra más operaciones pero que mantenga las ya abiertas hasta que se produzcan las condiciones de cierre o, en caso contrario, la cierre a las 17:30.
    2. c2 = (range > ind2), en cuanto a la condición 2, quiero que se active la orden de compra cuando haya una vela que su rango englobe a la EMA.
    3. Quiero añadir otra condición (c3) que una vez se haya generado una compra y se cierre por cumplir alguna de las condiciones de salida, no vuelve a abrir nueva posición hasta que se produzca lo que yo llamo un “RESET”, en este caso que el MACD cruce 0 a la baja y posteriormente lo vuelva a cruzar al alza.
    4. Por último, en el cierre de las compras, basado en un indicador externo “Kase Dev Stop”, quiero que la orden stop vaya moviendose con el indicador, pero debido a que este indicador se mueve alternativamente arriba y abajo, quiero que la orden stop de salida, se mantenga en el punto máximo marcado y no descienda cuando lo haga el indicador, solo se modifique mientras el indicador va subiendo.

    Adjunto código, a ver si alguien me puede ayudar. Muchas gracias

    DEFPARAM CumulateOrders=False
    
    //solo operar desde esta hora hasta….
    DEFPARAM FlatBefore = 080000
    DEFPARAM FlatAfter = 130000
    // esta hora OJO que cierra todas las posiciones abiertas, yo solo quiero que no abra mas posiciones nuevas pero las que ya estan abiertas quiero cerrarlas con el comando EndTime o por que se cumplan algunas de las condiciones de cierre
    
    rem EndTime = 173000
    
    //Compra:
    
    ind1 = MACD[12,26,9](close)
    c1 = (ind1 > 0)
    
    ind2 = ExponentialAverage[8](close)
    c2 = (range > ind2) //quiero que para abrir posición, tras cumplir c1, haya 1 vela que tenga su rango (max-min) tocando la ema8
    
    //c3 RESET que no se vuelva a generar una compra hasta que el macd haya vuelto a bajar de su nivel 0, en cuyo caso cuando se vuelva a cumplir c1 se vuelva a iniciar el proceso de compra
    
    if c1 and c2 then
    buy 1 contract at high + 2*pointsize STOP
    ENDIF
    
    //Cierre compras
    
    ignored, ignored, ignored, ind4 = CALL "Kase Dev Stop - version 2"[20,5,21]
    c4 = (close > ind4)
    //c5.....quiero  que cuando descienda, la orden stop se mantenga en el punto máximo marcado y no descienda con el indicador, solo se modifique cuando el indicador ascienda otra vez
    
    if c4 then
    sell 1 contract at low - 2*pointsize STOP
    endif
    #147162 quote
    Santi
    Participant
    Junior

    Buenas, mientras alguien me ayuda, sigo buscando información e intentando aprender a base de trabajar. Gracias a ello y sobre todo, a las grandes personas que hay en este canal, de momento he podido solucionar la duda número 1, en cuánto al horario se refiere. Encontré las líneas de código que lo solucionaban publicadas en el foro en inglés por robertogozzi, adjunto esas líneas de código por si a alguien más le puede ayudar.

    Todo sobre esta solución y más en este hilo:

    Time and Day conditions

    un saludo

    //para añadir a las condiciones de entrada la franja horaria de aperturas
    //también los días de la semana que se quiere operar
    TimeCond = OpenTime >= HHMMSS and OpenTime <= HHMMSS
    DayCond  = OpenDayOfWeek >= 1 AND OpenDayOfWeek <= 5
    IF MyConditions AND Not OnMarket AND TimeCond AND DayCond THEN
     .
     .
    ENDIF
    #149183 quote
    Antus
    Participant
    Junior

    Hola Santi,

    Creo que he solucionado el punto 2 y el 3. Respecto al 4, lo siento, no tengo el indicador “Kase Dev Stop” por lo que no puedo ayudarte mucho. Tampoco entiendo muy bien lo que quieres hacer. He puesto la condición c5 pero no se como lo quieres aplicar.

    Un saludo

    DEFPARAM CumulateOrders=False
    
    //solo operar desde esta hora hasta….
    DEFPARAM FlatBefore = 080000
    DEFPARAM FlatAfter = 173000
    
    //para añadir a las condiciones de entrada la franja horaria de aperturas
    //también los días de la semana que se quiere operar
    TimeCond = OpenTime >= 080000 and OpenTime <= 130000
    DayCond  = OpenDayOfWeek >= 1 AND OpenDayOfWeek <= 5
    
    ONCE Reset=1
    ind1 = MACD[12,26,9](close)
    c1 = (ind1 > 0) and Reset=1
    
    
    ind2 = ExponentialAverage[8](close)
    c2 = (Low < ind2 and high > ind2) //quiero que para abrir posición, tras cumplir c1, haya 1 vela que tenga su rango (max-min) tocando la ema8
    
    if ind1 < 0 then
    Reset=1
    endif
    if c1 then
    Reset=0
    endif
    
    
    //Compra:
    MyConditions=c1 and c2
    IF MyConditions AND Not OnMarket AND TimeCond AND DayCond THEN
    buy 1 contract at high + 2*pointsize STOP
    c5=ind4
    ENDIF
    
    
    
    //Cierre compras
    
    ignored, ignored, ignored, ind4 = CALL "Kase Dev Stop - version 2"[20,5,21]
    c4 = (close > ind4)
    c5 = max (c5,ind4)
    //c5.....quiero  que cuando descienda, la orden stop se mantenga en el punto máximo marcado y no descienda con el indicador, solo se modifique cuando el indicador ascienda otra vez
    
    if c4 then
    sell 1 contract at low - 2*pointsize STOP
    endif
    #149387 quote
    Santi
    Participant
    Junior

    Muchas gracias Antus, el tema de la ema me lo has solucionado.

    Lo del “Reset” añadiendo lo que me dices, ahora no me abre ninguna operación, yo quiero que me abra la primera, pero si se cierra no vuelva a abrir más en esa dirección hasta que se produzca el reset.

    El DevStop es un indicador de volatilidad similar al ATR, lo que quiero es que cuando vaya a favor de mi entrada se vaya moviendo con el indicador la orden limitada de salida de la posición, pero cuando el indicador retroceda, la orden no lo acompañe y se quede en su punto más alto.

    De todas forma, te agradezco la ayuda.

    Pongo aquí el indicador DevStop por si a alguien le interesa (las variables “n”, “periodFast”, “periodSlow”  a añadir son 20,5,21)

    //pararemeters:
    //n = 20
    //periodFast = 5
    //periodSlow = 21
    
    DTR = max(max(High - Low[2], abs(High - Close[2])),max(abs(Low - Close[2]),(abs(Low - Close[2]))))
    price = typicalprice
    avg = average[n](DTR)
    st = std[n](DTR)
    
    maFast = average[periodFast](close)
    maSlow = average[periodSlow](close)
    
    if maFast<maSlow then
    WarningLine = price+avg
    Dev1 = price+avg + st
    Dev2 = price+avg + 2.2*st
    Dev3 = price+avg + 3.6*st
    else
    WarningLine = price-avg
    Dev1 = price-avg - st
    Dev2 = price-avg - 2.2*st
    Dev3 = price-avg - 3.6*st
    endif
    
    RETURN Warningline coloured(255,0,0) as "WarningLine", Dev1 coloured(2, 118, 253) as "DevStop1", Dev2 coloured(255, 140, 0) as "DevStop2", Dev3 coloured(1, 71, 250) as "DevStop3"
    
    #149388 quote
    Santi
    Participant
    Junior

    Por cierto, el DevStop se coloca como indicador en el precio

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

Código Kase Dev Stop


ProOrder: Trading Automático y Backtesting

New Reply
Author
author-avatar
Santi @santi Participant
Summary

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

Topic Details
Forum: ProOrder: Trading Automático y Backtesting
Language: Spanish
Started: 10/11/2020
Status: Active
Attachments: No files
Logo Logo
Loading...