Una ayuda con un backtest

El espacio de los traders quant: sistemas de trading, gestión monetaria, automatización de sistemas.
Responder
thebarbarian
Mensajes: 34
Registrado: 09 Sep 2011 08:06

Una ayuda con un backtest

Mensaje por thebarbarian »

Hola desearia un consejo en este codigo para un cruce de medias de 50 y 100 wilder no consigo que arranque gracias de antemano
REM Comprar
indicator1 = WeightedAverage[50](close)
indicator2 = WilderAverage[100](close)
c1 = (indicator1 CROSSES OVER indicator2)
IF c1 THEN
BUY 1 SHARES AT MARKET THISBARONCLOSE
ENDIF
REM Vender
indicator3 = WeightedAverage[50](close)
indicator4 = WilderAverage[100](close)
c2 = (indicator3 CROSSES UNDER indicator4)
IF c2 THEN
SELL AT MARKET THISBARONCLOSE
ENDIF
REM Venta a corto (short)
indicator5 = WeightedAverage[50](close)
indicator6 = WilderAverage[100](close)
c3 = (indicator5 CROSSES OVER indicator6)
IF c3 THEN
SELLSHORT 1 SHARES AT MARKET THISBARONCLOSE
ENDIF
REM Salida venta a corto (exit short)
indicator7 = WeightedAverage[50](close)
indicator8 = WilderAverage[100](close)
c4 = (indicator7 CROSSES UNDER indicator8)
IF c4 THEN
EXITSHORT AT MARKET THISBARONCLOSE
ENDIF
Cuando el maestro señala la luna el necio mira el dedo
Avatar de Usuario
X-Trader
Administrador
Mensajes: 12800
Registrado: 06 Sep 2004 10:18
Contactar:

Re: Una ayuda con un backtest

Mensaje por X-Trader »

¿En qué lenguaje está escrito? ¿Para qué plataforma? Diría que es Visual Chart pero por si acaso...

Saludos,
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
Avatar de Usuario
Kosparuk
Mensajes: 860
Registrado: 31 Ago 2010 16:31
Ubicación: Asturias
Contactar:

Re: Una ayuda con un backtest

Mensaje por Kosparuk »

Es prorealtime, fijo.

A ojo no veo más cosa rara que el "thisbaronclose", que no sé para qué lo quieres si las órdenes ya son "at market", y que llamas de 3 maneras distintas a la misma función (indicator1=indicator3=indicator5)
Trollputero
Mensajes: 143
Registrado: 16 Jul 2010 13:56
Ubicación: from hell

Re: Una ayuda con un backtest

Mensaje por Trollputero »

REM la variable mm1 debe ser menor que mm2
REM Comprar
mm1=13
mm2=21

indicator1 = ExponentialAverage[mm1](close)
indicator2 = ExponentialAverage[mm2](close)
c1 = (indicator1 CROSSES OVER indicator2)

IF c1 THEN
BUY 1 SHARES AT MARKET THISBARONCLOSE
ENDIF


REM Vender

indicator3 = ExponentialAverage[mm1](close)
indicator4 = ExponentialAverage[mm2](close)
c2 = (indicator3 CROSSES UNDER indicator4)

IF c2 THEN
SELL AT MARKET THISBARONCLOSE
ENDIF


REM Venta a corto (short)

indicator5 = ExponentialAverage[mm1](close)
indicator6 = ExponentialAverage[mm2](close)
c3 = (indicator5 CROSSES UNDER indicator6)

IF c3 THEN
SELLSHORT 1 SHARES AT MARKET THISBARONCLOSE
ENDIF


REM Salida venta a corto (exit short)

indicator7 = ExponentialAverage[mm1](close)
indicator8 = ExponentialAverage[mm2](close)
c4 = (indicator7 CROSSES OVER indicator8)

IF c4 THEN
EXITSHORT AT MARKET THISBARONCLOSE
ENDIF


...............................................................................
Donde pone exponential cámbialo por WeightedAverage
lo que he ido mirando son los cruces que tienen esperanza matematica positiva, y como son medias pues las mas largas dan mejor resultado con una fiabilidad del 30%
las mas cortas como el cruce 2,3 tiene EMN rachas de perdidas enormes, demasiadas operaciones=muchas comisiones y mas temprano que tarde la cuenta queda destrozada.

El backtest que he puesto solo funciona en el ibex o mini ibex, tampoco se poner el stoploss ni tampoco un stoploss dinámico con idea de ver si los resultados se mejoran, he visto la opcion en PT pero no me termina de convencer
Imagen
Avatar de Usuario
Rafa7
Mensajes: 4924
Registrado: 17 Dic 2009 21:36
Contactar:

Re: Una ayuda con un backtest

Mensaje por Rafa7 »

Hola tehbarbarian,

He probado tu código, que es sin duda ProRealTime, y me funciona perfectamente.
Humm, prueba pasar a 10000 unidades, y luego a las unidades que te prefieras. Y vuelve a ejecutar.

Por cierto, he hecho backtesting de tu sistema históricamente en el Ibex35, y me da que es un sistema perdedor. Ojito.

El código es un poco adsurdo, porque simultáneamente abres cortos y largos con la misma condición en lugar de la condición recíproca.

Te sugiero este otro código que sí es ganador:

REM Comprar
indicator1 = WeightedAverage[50](close)
indicator2 = WilderAverage[100](close)
c1 = (indicator1 CROSSES OVER indicator2)
IF c1 THEN
BUY 1 SHARES AT MARKET THISBARONCLOSE
ENDIF
REM Vender
indicator3 = WeightedAverage[50](close)
indicator4 = WilderAverage[100](close)
c2 = (indicator3 CROSSES UNDER indicator4)
IF c2 THEN
SELL AT MARKET THISBARONCLOSE
ENDIF
REM Venta a corto (short)
indicator5 = WeightedAverage[50](close)
indicator6 = WilderAverage[100](close)
c3 = (indicator5 CROSSES UNDER indicator6)
IF c3 THEN
SELLSHORT 1 SHARES AT MARKET THISBARONCLOSE
ENDIF
REM Salida venta a corto (exit short)
indicator7 = WeightedAverage[50](close)
indicator8 = WilderAverage[100](close)
c4 = (indicator7 CROSSES OVER indicator8)
IF c4 THEN
EXITSHORT AT MARKET THISBARONCLOSE
ENDIF

La únicas diferencias con tu código son las palabras en rojo. He intercambiado UNDER por OVER y viceversa en la operativa de cortos porque es lo lógico.

¿Tema aclarado?

Saludos.
¡Jesús es el Rey de Reyes y el Señor de Señores!
https://loquepermanece.blogspot.com

Trollputero
Mensajes: 143
Registrado: 16 Jul 2010 13:56
Ubicación: from hell

Re: Una ayuda con un backtest

Mensaje por Trollputero »

Rafa7 escribió:Hola tehbarbarian,

He probado tu código, que es sin duda ProRealTime, y me funciona perfectamente.
Humm, prueba pasar a 10000 unidades, y luego a las unidades que te prefieras. Y vuelve a ejecutar.

Por cierto, he hecho backtesting de tu sistema históricamente en el Ibex35, y me da que es un sistema perdedor. Ojito.

Saludos.


¿Has probado con diferentes cruces de medias?
Por ejemplo cruce exponencial de 5 y 10 en gráfico semanal, a mi me da EMP (esperanza matemática positiva)

mm 5,8 gráfico semanal: efectividad de mas o menos un %33 gana en 27 y pierde en 53 operaciones, máxima racha de perdidas unos 4000 (podrían ser mas aplicado en real)

Y luego tengo un tema pendiente: cruces de medias pero usando barras de 2 horas o de 15 minutos para hacer swingtrading y si realmente merece la pena o ese 30% que suelen tener las medias en este caso las comisiones serian un problema al ser mas operaciones.
Imagen
Avatar de Usuario
Rafa7
Mensajes: 4924
Registrado: 17 Dic 2009 21:36
Contactar:

Re: Una ayuda con un backtest

Mensaje por Rafa7 »

Trollputero escribió:¿Has probado con diferentes cruces de medias?
Hola Troll.

No he probado ni hace falta que lo haga. En el código de thebarbarian hay un error de trading: la condición para abrir las operaciones cortas y largas es exactamente la misma en lugar de la recíproca. Y la condición para cerrar las operaciones cortas y largas es exactamente la misma en lugar de la recíproca. Teóricamente el resultado es nulo antes de comisiones y perdedor después de comisiones. ¿Me explico?
Pero ese código con las correcciones que he puesto (solo he cambiado lo señalado en rojo), da lugar a un sistema ganador.

Mira, te invito a una cosa, compara el código de thebarbarian con el que yo he propuesto. Espero que entiendas la diferencia.
Ya me diras si me has entendido.

Saludos.
¡Jesús es el Rey de Reyes y el Señor de Señores!
https://loquepermanece.blogspot.com
Avatar de Usuario
Fer137
Mensajes: 1371
Registrado: 12 Nov 2007 18:43

Re: Una ayuda con un backtest

Mensaje por Fer137 »

Rafa, en el primer post de Trollputero ya aparece corregido.
Avatar de Usuario
Rafa7
Mensajes: 4924
Registrado: 17 Dic 2009 21:36
Contactar:

Re: Una ayuda con un backtest

Mensaje por Rafa7 »

Fer137 escribió:Rafa, en el primer post de Trollputero ya aparece corregido.
Pues no entiendo nada.
Yo cuando dije que el código de trading errado me refería al de thebarbarian, no al de troll.
Me siento fuera de juego porque no entiendo nada.
Yo afirmo que el código de thebarbarian funciona correctamente pero que es errado desde el punto de vista del trading ya que simultáneamente abre una operación corta y larga, con el mismo número de títulos, y simultáneamente las cierra. El sistema es nulo, y si consideramos las comisiones el sistema es claramente perdedor sin necesidad de hacer backtesting (aunque el backtesting me lo ha confirmado jejeje).
No entiendo que quiso decirme Troll.

Eso sí, si thebarbarian quiere aplicar solamente Wilder tiene que usar WilderAverage en lugar de WeightedAverage.

Troll, creo que no entendió la pregunta de thebarbarian, ya que en su código usa ExponentialAverage cuando debería ser WilderAverage. WilderAverage es un alisado, que usaba Wilder, muy parecido a la media móvil exponentcial pero diferente a ella.
¡Jesús es el Rey de Reyes y el Señor de Señores!
https://loquepermanece.blogspot.com
Trollputero
Mensajes: 143
Registrado: 16 Jul 2010 13:56
Ubicación: from hell

Re: Una ayuda con un backtest

Mensaje por Trollputero »

Rafa7 escribió:
Fer137 escribió:Rafa, en el primer post de Trollputero ya aparece corregido.
Pues no entiendo nada.
Hola Rafa7, tu aportación es mas completa que la mía, ya que tu le indicas en ROJO donde esta el fallo, para que el sistema propuesto por thebarbarian funcione correctamente.

Lo que le comente a de thebarbarian era que cambiara el tipo de medias, yo uso exponencial (no lo cambie yo por pereza todo sea dicho jejeje :-D ) y que usara ese código que copie y pegue para que el mismo vea diferentes cruces, cambiando las variables o también el tipo de medias, ya he visto que thebarbarian usa dos tipos de medias diferentes, creo que son una alisada y otra triangular.

Un sistema tendencial que como se sabe tiene una efectividad del 30% rentable solo a largo plazo, psicológicamente resulta duro de seguir sobre todo cuando se mete en racha de perdidas, laterales, etc

Para la próxima semana intentare ver que pasaría si en lugar de usar barras semanales, se usan de 2 horas o también de 15 minutos con cruces de medias, supongo que también tendrá su 30% ¿merecerá la pena? o al ser mas comisiones ya no es lo mismo.

Saludos
Imagen
Avatar de Usuario
gofiodetrigo
Mensajes: 3794
Registrado: 17 Sep 2004 22:42
Ubicación: Macaronesia

Re: Una ayuda con un backtest

Mensaje por gofiodetrigo »

Trollputero escribió: supongo que también tendrá su 30% ¿merece la pena?
pues dependerA de lo q las comisiones y slipage resten. Cuando se aumenta la frecuencia o se bajan las comisiones o éstas se lo comen todo, y eso sin mencionar el slipage

imagina q es un sistema abierto, con overnite, y q en una apertura te ejecuta en un boquete como el euro este "lunes", y ese 30% se convierte en -3%

un solo slipage malo se puede comer el 80% de los resultados tranquilamente

yo te sugiero q lo metas en una demo de forex y hagas forward test de al menos 100 o 200 opes ( y claro, como necesitamos los resultados rapidito, pues ponlo a funcionar en minutajes bestias tipo 1 minuto, y a ver cuanto tiempo tarda en hacer las 200, y con la misma hasta es robusto y sigue mostrando los mismos resultados, dicen q cuando un sistema es robusto funciona en cualquier periodo...cualquier producto....vamos, q te barre hasta la casa xD )

y saques nuevas conclusiones. El spread del euro por ejemplo en forex de menos de un pip en muchas ocasiones, 25 pips como lo mAs salvaje ( pensemos q en la vida real 200 pips de spread son un lujo... ) es dificil de batir en cuanto a comisiones, y en cuanto a slipage, lo mismo, mAs de 25 pips es rharho rharho verlo a dia de hoy, incluso en NFPs y demAs

s2! ;-)
"No es dichoso aquél a quien la fortuna no puede dar más, sino aquel a quien no puede quitar nada." Francisco de Quevedo y Villegas 1580-1645.
Avatar de Usuario
Rafa7
Mensajes: 4924
Registrado: 17 Dic 2009 21:36
Contactar:

Re: Una ayuda con un backtest

Mensaje por Rafa7 »

Trollputero escribió:ya he visto que thebarbarian usa dos tipos de medias diferentes, creo que son una alisada y otra triangular.
Hola Troll,

exactamente la WilderAverage es el alisado de Wilder, la WeightedAverage es la la ponderada y la TriangularAverage es la triangular. Así que thebarbarian en su código está usando la alisada de Wilder y la ponderada.

Saludos.
¡Jesús es el Rey de Reyes y el Señor de Señores!
https://loquepermanece.blogspot.com
Trollputero
Mensajes: 143
Registrado: 16 Jul 2010 13:56
Ubicación: from hell

Re: Una ayuda con un backtest

Mensaje por Trollputero »

Tengo la semana de prueba gratuita de PT y he estado mirando varios cruces de medias en diferentes espacios temporales (4horas, 2horas,1hora, 30', 15', 5')

los resultados que dan todos los backtesting son des-esperanzadores todos tienen esperanza matemática negativa ademas de lo que cuesta el servicio al mes para poder ver estos gráficos y que te envíen las señales al móvil


pd: me paso al medio plazo, parece mas cómodo y las comisiones no son tal altas
Imagen
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “Sistemas de Trading”