Página 1 de 1

Una ayuda con un backtest

Publicado: 12 Sep 2011 15:21
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

Re: Una ayuda con un backtest

Publicado: 12 Sep 2011 20:05
por X-Trader
¿En qué lenguaje está escrito? ¿Para qué plataforma? Diría que es Visual Chart pero por si acaso...

Saludos,
X-Trader

Re: Una ayuda con un backtest

Publicado: 12 Sep 2011 21:23
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)

Re: Una ayuda con un backtest

Publicado: 12 Sep 2011 22:50
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

Re: Una ayuda con un backtest

Publicado: 12 Sep 2011 23:27
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.

Re: Una ayuda con un backtest

Publicado: 12 Sep 2011 23:54
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.

Re: Una ayuda con un backtest

Publicado: 13 Sep 2011 07:01
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.

Re: Una ayuda con un backtest

Publicado: 13 Sep 2011 08:25
por Fer137
Rafa, en el primer post de Trollputero ya aparece corregido.

Re: Una ayuda con un backtest

Publicado: 13 Sep 2011 14:24
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.

Re: Una ayuda con un backtest

Publicado: 13 Sep 2011 16:59
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

Re: Una ayuda con un backtest

Publicado: 13 Sep 2011 17:14
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! ;-)

Re: Una ayuda con un backtest

Publicado: 13 Sep 2011 22:46
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.

Re: Una ayuda con un backtest

Publicado: 19 Sep 2011 18:18
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