Un sistema simple ... y funciona !!! (o eso parece :-D)

El espacio de los traders quant: sistemas de trading, gestión monetaria, automatización de sistemas.
Responder
Avatar de Usuario
cls
Mensajes: 1336
Registrado: 24 May 2007 18:46
Contactar:

Un sistema simple ... y funciona !!! (o eso parece :-D)

Mensaje por cls »

Hola

Bueno, este es el típico sistema de toda la vida, con el RSI, estocástico y un par de medias.
El típico sistema que no te molestas en programar porque para qué. Si no han funcionado los supermegasistemas con hiperindicadores basados
en divergencias, roturas de directrices y fibonaccis que aquí el menda se ha tirado un año en programar (y que pintan lo que tienen que pintar cojunadamente y sin errores, ojo), ¿cómo va a funcionar un sistemilla de esos que están en todos los libros y que usan tres indicadores de lo más simple y viejo que hay?

Pues ese sistemilla, que no se tarda más de media hora en programar es, con diferencia, el que mejores resultados me ha dado de todo lo que he probado en este último calamitoso año. :?

Lo he probado en el stoxx50. Para 15min. Sin ninguna optimización. Desde el 2000 en años aleatorios y gana en todos.
Se entra con un contrato y no se dejan overnight (en el Ninja: Exit on Close).
Está puesto una sola entrada por dirección. Se pueden poner más, irá sumando entradas. En el código no está reseteadas las condiciones cuando se entra, así que vuelve a entrar en la barra siguiente, y en la siguiente, ... mientras se mantengan las condiciones.
Por eso, si ponéis una sola entrada por dirección (Entries per direction) sólo entrará una vez y saldrá con la señal contraria.
El sistema siempre está en mercado.

Así que el sistema parece que tiene mucho potencial de mejora. Por ejemplo, confirmar entrada en otro timeframe. Money Management. Pero por ahora lo dejo así.

Subo el código para el que quiera probarlo en el ninja. Supongo que irá bien para Forex (que es de donde lo saqué) y para otros activos.
Si alguien lo optimiza para algún activo estaría bien que compartiera los resultados.

Fuente informativa : http://forex-strategies-revealed.com/tr ... icbalanced

S2 :D :-D :-D :-D
Adjuntos
BalancedSystem.zip
(13.34 KiB) Descargado 248 veces
Avatar de Usuario
polxx
Mensajes: 847
Registrado: 09 Dic 2005 10:25
Ubicación: Albacete

Mensaje por polxx »

Eso lo has programado tu?

Es que veo mucho lio en la forma de programarlo, se puede hacer mucho mas simple.

A mi con esos parámetros desde 1-1-2000 hasta hoy me da pérdida de -11910 euros. Aplicando 0,5 puntos de comisiones+deslizamientos.
El camino equivocado es INVENTAR un SISTEMA ganador. El camino correcto es DESCUBRIR que hace el PRECIO, para adelantarse a el, y con eso poder hacer un sistema ganador.
Avatar de Usuario
cls
Mensajes: 1336
Registrado: 24 May 2007 18:46
Contactar:

Mensaje por cls »

polxx escribió:Eso lo has programado tu?

Es que veo mucho lio en la forma de programarlo, se puede hacer mucho mas simple.

A mi con esos parámetros desde 1-1-2000 hasta hoy me da pérdida de -11910 euros. Aplicando 0,5 puntos de comisiones+deslizamientos.

sí lo he programado yo.
Pues hombre, ya te digo que es imposible programarlo de manera más eficiente.
Otra cosa es que alguien no acostumbrado a leer código (qué sé que no es tu caso) lo entienda, pero de seguro que este código no se puede hacer más rápido y más fácil de mantener. Si alguien quiere preguntar qué significa alguna parte del código, que lo haga que contesto encantado.

Los indicadores están pasados a DataSeries. Por ejemplo, si quieres conocer el valor del RSI hace 5 barras, no tienes que hacer una nueva llamada al RSI sino que consultas su array de datos ( dsRSI ). Esto repercute directamente en la velocidad de ejecución.
Cuantas más veces uses un mismo indicador más notarás la mejora entre almacenar el indicador en DataSeries o llamar al indicador directamente.


Y luego, una vez que tenemos todos los datos que vamos a manejar, se establecen las condiciones por separado.
Más fácil y claro ... . Pero vamos, que agradecería que me dijeras cómo se puede mejorar.
Cuatro condiciones de venta y cuatro de compra, cada una expresada con una simple palabrita (_buy o _sell) en vez de un chorro de sentencias mezcladas: si esto es mayor que esto otro y aquél está por encima de 50 y al mismo tiempo se cruzan los dos de allí ...

A lo mejor falta algún comentario para explicar lo que es cada condición ... pero sabiendo leer el código no tiene más dificultad.
Lo único que sobra es la variable _pos. La puse ahí por si me interesaba más adelante chequear el tiempo transcurrido entre condiciones. Por ahora
no se usa.

Si en el futuro quiero añadir más condiciones no tengo más que usar una nueva variable y asignarle su código. Y sin alterar lo que ya está hecho.
Más limpio y sencillo de mantener ... imposible.


Sobre los resultados, los saqué de datos bajados de VC. Desde el 2000, todos los años gana excepto en el 2003. No he metido slippages.

Desde el 2000-2005

Imagen


Desde el 2006 hasta junio-2008

Imagen


Saludos
Adjuntos
sistema01_2000_06.jpg
sistema01_2006_actual.jpg
Avatar de Usuario
polxx
Mensajes: 847
Registrado: 09 Dic 2005 10:25
Ubicación: Albacete

Mensaje por polxx »

Sin meter slipages ni comisiones a mi también me da beneficios. Pero es que sin slipages ni comisiones el 50% de los sistemas dan ganancias. En el momento que los pones se vuelve todo gris para la mayoria de métodos.

El sistema lo entiendo, pero lo veo enrevesado. Lo de pasarlos a DataSeries yo lo haria si fuera un sistema complejo que voy a optimizar muchas veces porque ya se que funciona y tengo que hacerle mas pruebas. Pero al hacer una prueba sencilla, lo haria todo lo más rápido posible para no complicarme. Ojo, sólo estoy diciendo mi punto de vista, para contrastar ideas.

Yo suelo programar en plataforma visual en VC porque me es mas rápido de hacer las cosas.

Una vez compilado el código se me queda asi:

If .GetIndicatorValue(AvExponentialData) > .GetIndicatorValue(AvExponential1Data) And .GetIndicatorValue(StochasticData) > .GetIndicatorValue(StochasticData, 0, 2) And .GetIndicatorValue(RSIData) > 50 And .GetIndicatorValue(StochasticData) < 80 And .GetIndicatorValue(StochasticData, 0, 2) < 80 Then
.Buy AtClose, 1
Else
If .GetIndicatorValue(AvExponentialData) < .GetIndicatorValue(AvExponential1Data) And .GetIndicatorValue(StochasticData) < .GetIndicatorValue(StochasticData, 0, 2) And .GetIndicatorValue(RSIData) <50> 20 And .GetIndicatorValue(StochasticData, 0, 2) > 20 Then
.Sell AtClose, 1
End If
End If



Otra cosa acerca de ese sistema es que la condición de las medias y la del rsi es la misma y por tanto una de las 2 sobra. Supongamos que hacemos un sistema que sea rsi>50 compra y viceversa. Nos dará unas ciertas operacíones, siempre a favor del precio, osea tendencial, y cuanto más corto sea el periodo más operaciones nos dará.
Si hacemos otro sistema que sea media corta > media larga entonces compra y viceversa, tendremos el mismo sistema. Que es tendencial, y a mayor periodos de las medias, menos operaciones.
Si optimizamos el sistema de las 2 medias y por otro lado el del rsi, nos darán prácticamente el mismo número de operaciones, la misma ganancia por negocio, una peor serie de pérdidas similar, etc etc. Está claro que no son exactamente las mismas operaciones, pero cuando uno se adelante unas pocas barras al otro, compensará las veces que sea el otro el que se adelante, y al final representan lo mismo.

En cuanto al stocástico, no lo veo tan claro, pero me sospecho que también es equivalente, o casi.

Los indicadores son todos lo mismo, coger el precio y deformarlo para tener lo mismo pero de otra manera. Son instrumentos que nos hacen más cómoda la tarea de interpretar el gráfico. Pero en ningún momento nos dan información que no este en el gráfico. No se trata de elegir el indicador, se trata de elegir la forma de hacerlo.
Adjuntos
zs.jpg
El camino equivocado es INVENTAR un SISTEMA ganador. El camino correcto es DESCUBRIR que hace el PRECIO, para adelantarse a el, y con eso poder hacer un sistema ganador.
Avatar de Usuario
cls
Mensajes: 1336
Registrado: 24 May 2007 18:46
Contactar:

Mensaje por cls »

sí. tienes razón.

sobre los indicadores, pues está claro que pintan el pasado. ¿y qué hacemos si es lo único que hay? yo no sé de ninguna técnica que me permita pronosticar el futuro con fiabilidad, y si la hubiere y alguien la conoce y quiere compartirla soy todo oídos. :D

El sistema lo subí porque me sorprendió que así, sin más, diera ganador. Simplemente traduciendo lo que ponía en la web. Nada más terminar de compilarlo lo pasé por el backtest y salió verde.

Qué quieres que te diga, ya me gustaría que el 50% de lo que programo saliera en verde así a la primera. Aunque no le metiera slippages.

S2

Avatar de Usuario
polxx
Mensajes: 847
Registrado: 09 Dic 2005 10:25
Ubicación: Albacete

Mensaje por polxx »

Todos los indicadores hablan del pasado, pero lo que trato de decir es que casi todos los indicadores dicen casi mismo.

No se trata de buscar un sistema ganador, se trata de buscar en los gráficos un fallo, algo por lo que observemos que no es aleatorio. Algo que tienda a repetirse. Para ello lo mejor es hacer sistemas muy simples, optimizar, y observar los resultados según varian los parámetros. De esa manera vemos como se comporta el gráfico y lo destripamos...

Ya contarñe mas en el foro privado.
El camino equivocado es INVENTAR un SISTEMA ganador. El camino correcto es DESCUBRIR que hace el PRECIO, para adelantarse a el, y con eso poder hacer un sistema ganador.
Avatar de Usuario
TapeFighter
Mensajes: 1018
Registrado: 23 Jun 2008 23:27
Ubicación: Provincia de Valencia

Mensaje por TapeFighter »

cls, ¿has probado a poner las reglas de entrada y salida al revés? Es más que nada por saber si aumenta el % de aciertos. :-D
Un inversor ángel es aquel que, creyendo haber tenido una revelación divina, se mete en tal berenjenal que necesita un milagro para recuperar su dinero.
Avatar de Usuario
cls
Mensajes: 1336
Registrado: 24 May 2007 18:46
Contactar:

Mensaje por cls »

Darth Trader escribió:cls, ¿has probado a poner las reglas de entrada y salida al revés? Es más que nada por saber si aumenta el % de aciertos. :-D
pues sí que aumenta la fiabilidad, y mucho. Sin embargo las pérdidas son enormes. ¿Por qué?

Imagen

Se trata de un sistema tendencial así que las operaciones buenas son pocas pero con mucho recorrido.

Las pérdidas ocurren en los períodos laterales o sin tendencia en donde siempre se entra a contrapié debido a la naturaleza del sistema con su retraso en las señales. Aquí se entra largo justo cuando deberíamos entrar corto y viceversa. Pero los recorridos son pequeños en comparación con los largos recorridos de las señales buenas y se pueden soportar. Por eso al final el sistema es positivo.


Si intercambiamos las condiciones de entrada, ahora perdemos en todos los largos recorridos (entramos y nos quedamos dentro hasta señal contraria, así que nos comemos toda la tendencia pero en pérdidas). Sin embargo acertamos en los laterales. Como el mercado transcurre mayormente en laterales la fiabilidad del sistema aumenta, pero el neto no porque la caja se hace con las tendencias.

Saludos

PD: ¿cuándo saber si un sistema entra en lateral? this is the question
Adjuntos
sistema_alreves.jpg
Avatar de Usuario
TapeFighter
Mensajes: 1018
Registrado: 23 Jun 2008 23:27
Ubicación: Provincia de Valencia

Mensaje por TapeFighter »

¿Has probado a jugar con el tamaño de los stops?
Un inversor ángel es aquel que, creyendo haber tenido una revelación divina, se mete en tal berenjenal que necesita un milagro para recuperar su dinero.
negocios57
Mensajes: 271
Registrado: 12 Abr 2008 19:41
Ubicación: Valencia

Mensaje por negocios57 »

PD: ¿cuándo saber si un sistema entra en lateral? this is the question[/quote]

Estoy haciendo trading intradia en paper, es decir no uso sistemas, sin embargo he observado algunas pistas o señales para identtificar los períodos laterales, que no sé si os serán de utilidad.

En futuros europeos en los períodos comprendidos, más o menos entre las 11,30 y las 14 y por la tarde a partir de las 18 horas.
Si usamos cruces de medias, si ambas van en paralelo y próximas entre sí
Por último en períodos en que hay una disminución apreciable del volumen.

Esto último es especialmente desagradable ya que algunas veces las "manos fuertes" aprovechan para dar un "hachazo" y hacer saltar los stops.

Ya digo que estas reglas no son taxativas y también se pueden combinar, es decir que se entienda que entramos en lateral si se cumplen dos de tres, sobre todo la segunda y la tercera,

No sé si esto se puede programar, ya que no domino los sistemas.

Un saludo
pero
Avatar de Usuario
guevon
Mensajes: 1990
Registrado: 11 May 2008 00:12
Ubicación: Montañas del Goierri

Mensaje por guevon »

Para mi lo mas sencillito para saber si una cotizacion esta lateral es por las Bandas de Bollinger...

Cuanto mas cercanas esten a la barra del precio y a la vez entre si mas lateral esta la cotizacion...

Bueno... por lo menos eso me parece a mi...

Por lo menos se lo suele ver de un simple vistazo...

Un saludo.
d_vin@
Mensajes: 1962
Registrado: 14 Nov 2004 16:28

Mensaje por d_vin@ »

las bandas bollinguer son engañosas tambien sino estas en el marco temporal "idoneo" porque pueden tenerlas mas tiempo de lo esperado dilatandose o contrayendose falseando la señal visual, lo mas correcto seria calcular el canal optimo de lateralidad a tener en cuenta para que se produzca rotura de rango o retorno de movimiento basandose en la oscilacion de precio y apalancamiento del producto que estemos trabajando dandonos relaciones "proporcionales" de riesgo/beneficio en el tiempo.

hay un entrenamiento visual sincronizando distintos marcos temporales, es util exclusivamente para comprender ciertos principios en el trading y saber con certeza los "puntos ciegos" de gestion monetaria.
Última edición por d_vin@ el 08 Oct 2008 08:04, editado 5 veces en total.
Avatar de Usuario
cls
Mensajes: 1336
Registrado: 24 May 2007 18:46
Contactar:

Mensaje por cls »

Darth Trader escribió:¿Has probado a jugar con el tamaño de los stops?
sí, en la inmensa mayoría de los sistemas, aumentando el stop aumentas la fiabilidad. Pero no necesariamente aumentará el neto.

(digo en la inmensa mayoría, pq al aumentar el stop conlleva que harás menos operaciones totales, y si ocurriera que todas esas que dejas de hacer fueran exitosas, posiblemente perderás fiabilidad. Esto es muy raro, pero posible).

Jugar con el stop, desde mi punto de vista, es sobreoptimizar.

Supongo que lo ideal es que el mercado te diga dónde colocar el stop: si entras largo, en un mínimo cercano (asimilable a un soporte) y siempre que no supere tu riesgo máximo.

En vez de jugar con un número fijo de puntos para el stop, podrías jugar con un número n de barras hacia atrás donde buscar ese mínimo para poner el stop y que además no estuviera alejado de la entrada un número de puntos que excediera tu máximo riesgo expresado en % sobre tu cuenta.

(Lo mismo podrías hacer para sacar un target y ver si compensa el ratio win/loss para hacer el trade o no).

S2
Avatar de Usuario
cls
Mensajes: 1336
Registrado: 24 May 2007 18:46
Contactar:

Mensaje por cls »

gracias negocios57 y guevon por vuestras opiniones.

Estudiar la pendiente de los indicadores (medias, bollinger, ...) suele ser un buen método para el trader discrecional. Pero programarlo no es tarea fácil. :smt017

Para programar exactamente las pendientes es necesario conocer las dimensiones gráficas del chart (del "lienzo"). Sólo así se pueden programar correctamente. Pero si se pudiera, con aplicarlo sobre alguna media o mejor sobre la línea de regresión del precio, se podría saber hacia donde tira el precio.

Saludos
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “Sistemas de Trading”