Acceder

Easylanguage | Sistema de trading: Tortugas

quantifiedmodels.com
quantifiedmodels.com


He visto una plétora de publicaciones sobre las estrategias de comercio de tortugas donde se proporcionan las reglas y el código. Los códigos van desde una mera ruptura de Donchian hasta una representación bastante cercana. Sin retroalimentación de cartera dinámica es bastante imposible programar las restricciones de la cartera como explica Curtis Faith en su bien recibido «Camino de la Tortuga». Pero los otros componentes se pueden programar bastante cerca de las descripciones de Curtis. Quería proporcionar este código de una manera concisa para ilustrar algunas de las construcciones esotéricas de EasyLanguage y algunos atajos limpios. En primer lugar vamos a echar un vistazo a cómo el sistema de trading de las tortugas ha funcionado en el crudo durante los últimos 15 años.

Gráfico de TradeStation del sistema de las tortugas
Gráfico de TradeStation del sistema de las tortugas


Si hay tendencias en el mercado, el sistema de trading de las tortuga lo atrapará. Mira cómo el mercado se recuperó en 2007 e inmediatamente se recuperó en 2008, y mira cómo la Tortuga atrapó los movimientos – impresionante. Pero vea cómo el sistema deja de funcionar en la congestión. Tomó una pequeña porción del movimiento de 2014 hacia abajo y ha hecho un gran trabajo de atrapar el colapso de la pandemia y el rebote. En mi último post, programé la función LTL (Last Trader Loser) para determinar el éxito/fallo de la entrada Turtle System 1. Lo modifiqué ligeramente para este post y lo usé en conjunto con Turtle System 2 Entry y el comercio piramidal AddOn de 1/2N para acercarme lo más posible al núcleo de la lógica de entrada/salida de tortugas.
Voy a proporcionar el ELD para que pueda revisar en su tiempo libre, pero aquí están las piezas importantes del código que es posible que no sea capaz de derivar sin una gran experiencia de programación.

Gráfico del sistema de trading de las tortugas sobre el crudo en TradeStation
Gráfico del sistema de trading de las tortugas sobre el crudo en TradeStation




Este código determina si la posición actual del mercado no es plana y es diferente de la posición de mercado de la barra anterior. Si este es el caso, entonces se ha ejecutado una nueva operación. Esta información es necesaria para saber qué salida aplicar sin tener que vincularlas por la fuerza usando las palabras clave De Entry de EasyLanguage. Sólo necesito saber el nombre de la entrada. El entryPrice es el entryPrice. Aquí sé si el LTL es falso, y el entryPrice es igual o mayor /menor que (basado en la posición actual del mercado) que los niveles de entrada del sistema 2, entonces sé que el sistema 2 nos metió en el trade.



La clave de esta lógica son las palabras clave currentShares shares. Este código indica a TradeStation que liquide todas las acciones o contratos actuales en los niveles stop. Podría utilizar los contratos currentContracts si se siente más cómodo con los futuros La clave de esta lógica son las palabras clave currentShares shares. Este código indica a TradeStation que liquide todas las acciones o contratos actuales en los niveles stop. Podría utilizar los contratos currentContracts si lo prefiere.

Activación de la opción de piramidar en TradeStation

Antes de poder piramidar, debe activarla en Propiedades de estrategia.
Ventana de diálogo en TradeStation para configurar piramidación
Ventana de diálogo en TradeStation para configurar piramidación


Esta lógica agrega posiciones desde la entrada originalPrecio en incrementos de 1/2N. La descripción de esta lógica es un poco borrosa. ¿Es el valor N la lectura ATR cuando se puso el primer contrato o se vuelve a calcular dinámicamente? Me equivoqué en el lado de la precaución y usé la N cuando se puso el primer contrato. Por lo tanto, para calcular las entradas largas de AddOn, basta con tomar el entryPrice original y agregar currentShares * .5N. Así que si currentShares es 1, entonces el siguiente nivel de pirámide sería entryPrice + 1* .5N. Si currentShares es 2 , entonces entryPrice + 2* .5N y así sucesivamente. El stop estará en 2N de la última entrada. Así que si pones 4 contratos (especificados en el libro de Curtis), entonces la salida final sería 2N desde donde agregaste el 4o contrato. Aquí está el código para eso.


Presento una nueva variable aquí: cs. CS significa currentShares y yo hago un seguimiento de ella de bar a bar. Si currentShares o cs es menor o igual a1 sé que la última entradaPrice era la entrada originalPrice. Las cosas se complican un poco más cuando empiezas a añadir posiciones – inicialmente no podía recordar si el entryPrice de EasyLanguage contenía el último entryPrice o el original – resulta que es el original – bueno saber. Por lo tanto, si currentShares es mayor que uno y currentShares de la barra actual es mayor que currentShares de la barra anterior, entonces sé que agregué otro contrato y por lo tanto debo actualizar lastEntryPrice. LastEntryPrice se calcula tomando el entryPrice original y agregando (currentShares-1) * .5N. Ahora esta es la entrada teóricaPrecio, porque no tengo en cuenta el deslizamiento en la entrada. Podrías hacer este ajuste. Por lo tanto, una vez que conozco el lastEntryPrice puedo determinar 2N a partir de ese precio.


Salir en 2N Trailing Stop



Ese es todo el código ingenioso. A continuación se muestra la función y ELD para mi implementación del sistema de entrada dual Turtle. Verá un código bastante sofisticado cuando se trata de la entrada del sistema 1 y esto es debido a estos escenarios:
¿Qué pasa si usted es teóricamente corto y son teóricamente detenidos para un verdadero perdedor y se puede entrar en la misma barra en una operación larga.
¿Qué pasa si usted es teóricamente corto y el punto de inversión resultaría en una operación perdedora. No registraría al perdedor a tiempo para entrar en la posición larga en el punto de inversión.
¿Qué pasa si usted es realmente corto y el punto de inversión daría como resultado un verdadero perdedor, entonces usted querría permitir la inversión en ese punto
Probablemente haya otros escenarios, pero creo que cubrí todas las bases. Sólo avísame si ese no es el caso. Lo que hice para validar las entradas fue que programé una ruptura/fallo de 20/10 días con una parada 2N y luego revisé la lista y eliminé las operaciones que siguieron a una pérdida no 2N (10 salida de barra para una pérdida o una victoria.) Entonces me aseguré de que esas operaciones no estaban en la salida del sistema completo. Hubo un poco de prueba y error. Si ves un error, como dije, avísame.

Artículo escrito por Quantified Models
t.me/quantifiedmodelstrading



6
¿Te ha gustado mi artículo?
Si quieres saber más y estar al día de mis reflexiones, suscríbete a mi blog y sé el primero en recibir las nuevas publicaciones en tu correo electrónico
  1. en respuesta a Juanpide
    -
    #6
    29/08/23 19:52
    Por supuesto
  2. en respuesta a Quantifiedmodels
    -
    #5
    29/08/23 18:45
    ¿Pero la puedes utilizar para optimizar los parámetros de tu modelo?
  3. en respuesta a Juanpide
    -
    #4
    29/08/23 17:39
    Tanto TradeStation como Multicharts ahora tienen información intrabar con libbt TradeStation y Bar magnifier en Multicharts
  4. en respuesta a Quantifiedmodels
    -
    #3
    29/08/23 13:43
    Si quieres tener en cuenta cosas como el drawdown con precisión sí que es importante tener información intra-trade.
    Además digo de hacerlo teniendo en cuenta las dos cosas, lógicamente, teniendo en cuenta la información intra-trade y sabiendo si estás en el trade o no.

    Además también es útil tener en cuenta todos los bids y asks, no sólo el cruce.  Y eso tampoco permite programarlo TradeStation, al menos no lo permitía cuando yo lo usaba.
  5. en respuesta a Juanpide
    -
    #2
    29/08/23 12:27
    Hola Juan!

    No creo que sea lo mejor hacer barra a barra. Si estas en un trade y en la proxima optimizacion ese trade no existe, la estrategia no te lo cerrará.
  6. #1
    29/08/23 03:56
    Yo lo usé hace tiempo, con Tradestation y con Multicharts.
    Había limitaciones, como que sólo podías optimizar los parámetros de los modelos con los datos a la entrada y salida de los trades, no con los datos barra a barra.
    No sé si habrán corregido ese problema.
    Además sólo tenían métricas muy básicas como el ratio de Calmar.
    Y muchas funciones no estaban optimizadas para que fuesen "rolling". Bueno, esto era positivo para mí porque me pagaban por desarrollar otras nuevas.

Proveedor de soluciones innovadoras de trading algorítmico e inteligencia artificial. Aportamos toda nuestra experiencia en el diseño, desarrollo e implantación de soluciones algorítmicas y de inteligencia artificial para inversores de todo tipo. TELEGRAM: t.me/quantifiedmodelstrading CONTACTO: [email protected]