Aclaraciones sobre una estrategia propuesta por quo en el forum en inglés

Forums ProRealTime foro Español Soporte ProOrder Aclaraciones sobre una estrategia propuesta por quo en el forum en inglés

  • This topic has 21 replies, 2 voices, and was last updated 7 years ago by avatarquo.
Viewing 15 posts - 1 through 15 (of 22 total)
  • #15701

    Hola quo, vamos a ver si aquí, más tranquilos (menos “ojos”) y sin que se nos trabe la lengua por el idioma, logramos aclarar de una vez las ideas.

    Voy a ir separando por pasos, según tenga tiempo, el ejemplo1 del otro foro para dilucidar si y dónde me pierdo yo solico,  que dirían tus vecinos de arriba, o si y dónde tú me escondes el mapa para que yo me pierda. Un poco en plan “Estrategia para torpes”. Nos va a llevar más tiempo pero “chi va piano va sicuro e va lontano”. No, esto no es otro dicho murciano.

     

    #15705

    Paso 1. Figura Paso_1. Compra y primer stop

    Describo cómo transcurre el proceso:

    (H es high, L es low y C es close. H(1) es high de barra 1, etc.).

    H(1) es un máximo histórico. Como H(a) < H(1) y L(a) < L(barra anterior; 1 en este caso) el código establece, al cierre de a, como precio stop de compra H(1)=0.19.

    H(2) > H(1). El sistema abre posición en su correcto precio y momento, día y hora (es una orden stop enviada al broker, ya no depende de cuando se ejecuta el código). El código establece, al cierre de 2, L(b)=0.11 como precio stop de venta.

    Caso problema 1: L(2) < L(b). Es el caso tratado en el ejemplo-2 del foro anterior, donde tus comentarios son totalmente pertinentes. Dos posibles subcasos:

    • Subcaso 1: C(2) <= L(b). Estamos cerrando por debajo de 0.11. L(b) no puede ser lógicamente precio de venta. Debería ser L(2).
    • Subcaso 2: C(2) > L(b). Podríamos mantener L(b) como precio stop de venta.

    Vale la pena complicarse tanto? Esto es bolsa, no una ciencia exacta y al final todo se compensa y tanto vale una cosa como la otra. Mi propuesta es incluir siempre la barra del máximo derecho al calcular el mínimo entre máximos consecutivos.

    Por tanto al final de dic 1990 estamos comprados en 0.19 y tenemos como precio de salida 0.11. Estamos de acuerdo?

    Saludos

    #16043
    quo

    Aqui otra vez,

    b) 🙂 silly me!

    c) pensé que la solución a esta cuestión sería quitar el signo “=” de la línea 31. Estaré equivocado. No hay problema con que el broker no lo entienda, las señales las traslado al mercado manualmente.

    2) Genial, haré otra versión sustituyendo las lineas que comentas por las propuestas. Si quieres continuamos con la original.

    gracias

     

    #16106

    Hola,

    c) No, el problema no está en la línea 31.

    No se trata de que el bróker lo entienda sino de que acepte o rechace la orden stop (manual o automática) a ese precio calculado, porque cada acción tiene un cambio mínimo posible en su cotización: un céntimo, cinco céntimos, etc. Por ejemplo, caso real de hace unos días en mi sistema, el cambio mínimo de CPLA es 5 céntimos de dólar. Si el máximo histórico fuera, digamos, 90.25 e intentara poner una orden de compra stop a 90.251 (90.25+0.001), mi bróker (Interactive Brokers) la rechazaría. Para que funcionara tendría que usar 90.30 ( o sea buyPrice+0.05 en el código). Por eso, preferí permitir abrir posición al precio exacto del máximo histórico, aunque en algún caso raro como el que me presentas (qué puntería!!), el high del precio toque el máximo y se dé la vuelta sin llegar a hacer la ruptura o breakout.

    Quedan pendientes un par de temas. Los iré mirando, sin prisa pero sin pausa. Si considero que son de algún interés general, los comentaría en el foro en inglés; si son, como temo, un problema de falta de entendimiento (todavía!), aunque sea de detalles, de tu estrategia, se aclararían en este hilo.

    Salud  y paciencia.

    #16422

    Saludos sabatinos, de vuelta al tajo.

    Teniendo a la vista el gráfico EBAY.png, dos cuestiones relativas a los 2 puntos pendientes de la estrategia:

    Punto 3.- Change 2000 cash into shares following this formula: Number of shares will be (Equity line*0,6%)/(Entryprice-Stopprice) and if the result multipied by the price of the stock is less than 1000 don´t buy. Equityline is 50.000 when we start and later what i have in the equity line or equity curve (the result of add to 50.000 previous trades).

    Con el actual código v.3.1 entramos en la barra 2 a 12.31 (máximo de barra 1) y a posteriori, al cierre de la barra, actualizamos el stop desde un valor inicial de 0.21 a 3.70 (mínimo de barra b). Entiendo que, ahora, al calcular número de acciones a comprar habrá que utilizar ya el mínimo de la barra b como StopPrice  y no 0.21, con el consiguiente cambio en la forma de ir actualizando el stop. Es así?

    Punto a.- Sometimes there is a low<low[1] but the stop is not risen. It is because in the same candle we got a high>high[1]. Examples Citigroup (feb1993), Sabadell (may2016), ENGI(jan2008), ESRX (may2015).

    Esto es un poco embarazoso después de tantísimos posts en todos los idiomas pero, desde el primer momento, he supuesto que debía haber “aire” a izquierda y derecha de un máximo, como en la barra 1, para que disparara los eventos de compra o actualización de stop. Digamos que tu primer gráfico-ejemplo de VISA y mi previa idea de esta bien conocida estrategia de ruptura de máximos me empujaban a ello.

    Para ir dejando aclarado el tema, más vale tarde que nunca, en el gráfico de eBay, ¿debemos comprar en la barra 0 (cero) al precio del máximo de la barra -1 con stop en el mínimo de barra -1 (confieso que no me acaba de gustar, pero es tu idea de la estrategia la que cuenta) o esto sólo se aplica al movimiento de stops cuando estamos comprados  y no al momento de la compra?

    Vale. Ya estamos cerca.

     

    #16440
    quo

    Buenos días,

    Punto 3) Es asi, en la compra de la barra 2 tenemos en cuenta el stop de la barra b para el calculo de acciones a comprar.

    Quiero hacer un comentario. Comentas “entramos en la barra 2 y a posteriori, al cierre de la barra actualizamos el stop” Decir que manualmente,el stop lo pongo en el mismo momento de la compra, no a posteriori ni al cierre de la barra. Lo digo porque si la barra 2 bajara lo suficiente como para ir mas abajo de la barra b, el sistema no te sacaría porque como no ha llegado el cierre no se ha actualizado el stop. Entiendo que lo haces al cierre de la barra porque no queda otra a la hora de programar y creeme que es suficiente y perfectamente válido porque, como ves, los stops son muy amplios y es muy improbable que lo que te digo aqui pase asi que este matiz es para que lo sepas pero está bien tal y como está.

    Punto a) no acabo de entender a lo que te refieres con “aire” pero efectivamente en el ejemplo que pones tenemos una compra que no se produce con la versión actual porque el dia que hace máximos tambien hace mínimos (esto yo lo resuelvo yendo a la grafica semanal a ver qué se produce antes si el máximo o el mínimo pero aqui no podemos). Voy a ponerte como lo hago pero no quiero liarte. Si la barra -1 abre, hace el mínimo (ya tengo min<min) y luego hace máximo, compro en esa misma barra. Si la barra -1 abre hace máximo y luego hace el mínimo, la compra se produce en la siguiente vela cuando se produzca el máximo (porque cuando hizo máximo en la barra -1 no teníamos min<min y por tanto no podimos comprar).

    Dicho esto. Por no poder saber qué va antes en la barra si el máximo o el mínimo en PRT (por lo menos en esta versión, tengo entendido que en futuras, sí sera posible), consideremos que la compra siempre es a la vela siguiente como tu propones en el ejemplo (estamos suponiendo que en la vela anterior el máximo se produce antes que el mínimo y si eso es así en semanal dará la misma compra entiendo). Por tanto es correcto lo que dices. Se compra en la barra 0 en el máximo de la -1 poniendo el stop en el mínimo de la misma barra -1. (he tenido que ir a mi grafico para observar que minbarra-1<minbarra-2).

    Por último, el razonamiento es el mismo para comprar que para subir el stop, de hecho, cada vez que uno que esté dentro sube el stop, uno que esté fuera puede comprar.

    Una opción que aumenta el riesgo pero también la rentabilidad es cada vez que se produce una nueva ruptura, además de subir el stop se vuelve a comprar otra posición más. Algo que tambien me gustaria testear y que supongo que habría que hacer con Defparam Cumulate orders=true

    gracias, como bien dices, estamos cerca…y es que no hay nada como la lengua vernácula.

    #16812

    Hola,

    la nueva versión v.04 recogiendo todos los cambios está terminada (a expensas del punto tratado en el siguiente párrafo), y pendiente de probar exhaustivamente a la caza de algún gazapo, bastante probable, especialmente a la vista del galimatías que me ha supuesto programar el punto (a). Si no se complica ni la prueba ni mi tiempo disponible, confío en que sea un asunto de unos pocos días.

    Mientras tanto, una duda me ha surgido sobre un punto que no se ha comentado: admitir o no una actualización de stop hacia abajo, una posibilidad real usando un exit filter mayor que 0.  Parece claro que el primer stop, usado en el cálculo de acciones a comprar, no se puede modificar a la baja, para no incurrir en posibles pérdidas superiores al riesgo permitido por posición abierta (50000*0.6/100 = 300), pero y el resto?

    Saludos

     

    #16914
    quo

    Disculpa no pude logarme en todo el fin de semana, me daba error y he tenido que restaurar la contraseña.

    Efectivamente, no habíamos hablado de ello pero puede darse el caso que el stop vaya a la baja. En ese caso, que no es muy frecuente, estaría asumiendo un riesgo superior al tenido inicialmente. Quizá no es muy correcto, lo sé, pero asi es como lo hago, reduzco riesgo en la siguiente entrada de otro valor puesto que tengo en cuenta el riesgo total de toda mi cartera. Que no te importe/afecte a efectos de programación. El tema de la gestión del dinero es secundario para mi programarlo en PRT. Es mas importante el resto, punto a) etc.

    gracias

     

    #17049

    Buen día,

    he aquí la versión v.04, la penúltima!?, de la estrategia, recién salida de cocina (no ha resultado precisamente una sopa al cuarto de hora).

    Como los cambios que se han ido incorporando, respetando la estructura lógica del código inicial, lo habían convertido bastante en lo que en el argot se conoce como código-spaghetti, difícil de entender y depurar, decidí reescribirlo desde cero, aprovechando que ya tenía la idea completa de las necesidades del sistema y también mi mayor dominio de esta plataforma de programación. El resultado es un código bastante diferente, más corto y más claro, y hasta donde lo he probado parece funcionar como debería.

    Para cualquier aclaración, ya sabes dónde estamos, aunque no estemos siempre. Saludos.

     

    #17052
    quo

    Ayayayayay, Tikitaka, gracias por el enorme esfuerzo lo primero pero creo que por arreglar el punto a), es decir alguna salida errónea que ocurria de vez en cuando (tenia que coincidir que hacia minimo la misma barra que hacia maximo para que no actualizara el stop y no ocurria muchas veces), hemos estropeado la entrada. Ahora siempre entra tarde. Si superpones el anterior código con el nuevo lo ves. A modo de ejemplo pongo el gráfico de citi que te decía que en feb93 no salia correctamente. Ahora sale donde debe, como ves, pero no entra bien y el problema de entrar tarde ocurre siempre en cada entrada de cada valor.

    Es probable que el tema de la gestion del dinero te haya llevado a reprogramarlo todo de nuevo y por eso dan fallo todas las entradas. Antes de que me mandes a paseo con razón te propongo, si te parece, que si puedes arreglar el punto a) con el anterior código perfecto, y si no no pasa nada lo dejamos asi. Perderíamos la gestión del dinero pero como siempre te he dicho, es un tema menor que si no lo tengo no importa, no quiero que por ello te vuelvas loco y tampoco que cuando lo teníamos ya casi vayamos para atrás.

    Verás, yo antes salvo el punto a) estaba y estoy encantado porque arreglaste el problema c) añadiendo 0,001 y el problema 2) dándome unas lineas para sustituir por otras, lo que me permitía tener dos versiones, asegurando entrada y sin asegurarla. Ahora al cambiar todo el código no sé que lineas cambiar por otras para tener estas dos versiones y lo mas importante, la entrada falla siempre y todo por una gestión del dinero que te ha hecho cambiar todo desde el principio. No quiero que eso lo estropee todo por lo que, si te parece, si no puedes arreglar el punto a) en el código antiguo comprando 2000 eur, lo dejamos terminado como está, quedando en todo caso y si quieres, (entiendo que esto no te llevaría mucho tiempo) la versión bajista.

    Tengo que hablar con Nicolás para que te meta en plantilla, no he visto nada igual en el foro y tenemos la suerte de que eres español. Después de esto el agradecimiento no se puede quedar solo en palabras, son muchas horas ayudando las que metes.

    Espero si lo lees ahora no haberte dado la noche.

    Gracias de verdad

    #17134

    Hola,

    gracias por tu preocupación por el tiempo que dedico al tema. No problem, meto horas, entre otras cosas, porque estoy personalmente interesado en la estrategia como instrumento de inversión. Pero de esto ya hablaremos en el futuro, o no.

    En cuanto a las entradas, let’s hear the explanation from the horse’s mouth:

    Change 2000 cash into shares following this formula: Number of shares will be (Equity line*0,6%)/(Entryprice-Stopprice) and if the result multipied by the price of the stock is less than 1000 don´t buy. Equityline is 50.000 when we start and later what i have in the equity line or equity curve (the result of add to 50.000 previous trades).

    Es tu letra no? 🙂

    No te has leído el código, pecador. La respuesta está en la línea 115: quita las barras // de las líneas 126 a 129 para ver en pantalla los valores barra a barra de buyprice y exitprice, calcula el producto del número de acciones por el precio de compra y voilà!

    En fin, no quiero pecar otra vez de exceso de confianza pero el código está muy probado y me sorprendería que encontrases algún fallo. Por otra parte, salvo el denominador del cálculo del número de acciones, todo está parametrizado y cambiando los valores de los parámetros tienes distintas posibles versiones de la estrategia.

    A probar y casi seguro a aprobar!

    Saludos

     

     

    #17135
    quo

    glup,

    Por segunda vez tengo que decir eso de silly me, y me alegro, porque tenía sensación de que lo teníamos cerca y dimos 3 pasos para atrás. Sería tarde, vi tantas entradas mal que me embalé, ya me pareceía a mi un falo muy grande para no haberte dado cuenta. Voy a ir con cuidado, dame unos días y vuelvo al ataque, porque me da a mi que voy a tener que hacerte varias preguntas por no entender bien los códigos. No se si estarias dispuesto a darme un curso de PRT para dummies (no es broma).

    Me alegro de que sigas ahí despues de todo,  🙂

    #17136
    quo

    mas que un “falo” me pareció un “fallo”, que no es… ni parecido :)))

    #17227
    quo

    Bravo!, aprobado no, sobresaliente. Además para dejar sin efecto el mínimo a invertir sin tocar el código bajo el minimalcashsize de la línea 17 a 1 euro. Para dejar sin efecto el breakevenstop subo en la linea 18 el upForBreakeven a 10.000 por ejemplo. Y para dejar sin efecto la gestión del dinero cambio en la linea 116 por buy 2000 cash at buyPrice + 0.01 stop. >>>>aquí he quitado un cero para estar mas cerca de lo que solemos hacer.

    Una vez quitado estos parametros dejamos la versión 04 sin variantes, es decir igual que la versión 03 para poder compararlas. La diferencia ahora es el problema del punto a) que ya está resuelto.

    Si recuerdas el punto a) era que cuando teníamos una vela envolvente, es decir que la vela hacía máximo pero tambien mínimo con respecto a la vela anterior (high>high[1] AND low<low[1]) el stop no se subia en la v.03 y ahora si lo hace en la v.04.

    El resultado es que la v.03 es mas rentable pero tambien mas volátil que la v.04. Sin hacer muchos números, que algunos he mirado, se intuye que la v.03 deja respirar mas al precio como consecuencia de subir menos el stop y la tendencia alcista natural del mercado (y mas en este timeframe) hace que gane mas. Sin embargo cuando el mercado se la pega se come mas caídas haciéndolo mas volátil con DD superiores etc.

    Realmente cuando tenemos una envolvente nosotros miramos un timeframe inferior para ver qué se produce antes, si el máximo o el mínimo y esto en PRT no se puede. Tampoco se puede ver en una vela cual es el orden en el que hace los precios. Por ello podríamos dar el trabajo por finalizado. Sin embargo dándole una vuelta he pensado lo siguiente (lo siento):

    Nosotros en una envolvente, si el mínimo ocurre antes que el máximo subimos el stop y si es al revés no. Pues bien, en la mayoria de las velas envolventes blancas el mínimo se produce antes y en la mayoria de las velas envolventes negras el máximo es el que se produce antes. Y esto es asi cuanto mas grande sea el cuerpo de la vela, fallando un poco mas en los dojis con sombras largas en los dos extremos. Por ello he pensado que si se pudiera poner un filtro que dijera que si la vela envolvente es blanca suba el stop y si es negra no, el sistema se parecería mas a lo que hacemos nosotros. Nota: esto lo digo sin saber si lo que propongo es añadir una línea o poner patas arriba todo el sistema por lo que si es el segundo caso no te preocupes.

    No se si me he conseguido explicar. Es muy raro que una vela negra que envuelve a la anterior baje haciendo mínimo, para luego subir hacer el máximo y luego volver a bajarpor debajo de la apertura y convertirse en una vela negra. Algún caso me he encontrado pero son los menos y suelen ser velas con cuerpos pequeños y sobras grandes, donde como ya he comentado, puede fallar algo más esta regla.

    Por lo demás ya está, me pregunto si para que comprara de nuevo cada vez que hubiera un nuevo máximo aun ya estando dentro habria que poner DEFPARAM CumulateOrders =true al principio del sistema y ya está. En el stop se cerraría todo lo abierto.

    buen fin de semana y gracias

    #17515

    Buenas (algunas),

    respondiendo o comentando:

    El modo correcto de ‘desactivar’ los parámetros minimalCashSize y upForBreakeven es hacerlos igual a cero, porque así está programado. Tus valores de 1 y 10.000, respect., cumplen su función, pero no es el modo correcto.

    Para permitir recompras, en principio basta con quitar ‘not onmarket’ de la línea 115 de la v.04.1. DEFPARAM CumulateOrders =true es el valor por defecto y no es necesario declararlo explícitamente. Sin embargo, por lógica, tendrías que añadir código para limitar de alguna manera el número posible de recompras y, además, las recompras podrían afectar a la idea del breakevenstop, líneas 103 a 107, que probablemente habría que modificar. Tema, por tanto, que necesita estudio adicional.

    El tema de la envolvente alcista/bajista queda recogido en la nueva versión v.04.2. Salvo error u omisión, sólo hacía falta añadir ‘and close > open’ en la línea 65 (que pasa a ser la línea 66, por el comentario añadido en la línea anterior).

    Esta nueva versión está probada, aunque no tan exhaustivamente como la 04.1. Un buen gráfico para verificar si la estrategia funciona como quieres, sería el de BIDU (lista US Tech) en las barras ene2010 y ene2014/mar2014.

    Y, por mi parte, nada más de momento.

     

     

    1 user thanked author for this post.
Viewing 15 posts - 1 through 15 (of 22 total)

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