¿Cómo adaptar el período de una media móvil al mercado?
Resultados 1 al 8 de 8

Tema: ¿Cómo adaptar el período de una media móvil al mercado?

  1. #1
    Hola, he estado programando algunos programas que usan un filtro digital lowpass que captura por ejemplo las tendencias de 2 meses o 1 mes de longitud. Pero me di cuenta de que las eegias que tienen éxito en backtests, por ejemplo, en 2009-2014 fallan miserablemente en 2002-2008.

    ¿Hay alguna manera de adaptar el período de media móvil de acuerdo a las condiciones del mercado? Gracias!

  2.                         
    Publicidad
  3. #2
    Hola , te paso un par de ideas que te pueden ayudar:

    * En el PDF titulado Buildin se explica en detalle la Variable-Length Moving Average (VLMA).

    * Otro método que te puede interesar es la denominada Variable Moving Average (VMA) también conocida como Volatility Index Dynamic Average (VIDYA), lo tienes en el PDF titulado Adaptin.

    Espero que sirva.

    Saludos,
    Archivos adjuntados Archivos adjuntados

  4. #3
    Muchas gracias por el material! Da gusto conocer personas que compartan. Estuve leyendo y el concepto es interesante, por lo que entendí ata el período a la volatilidad del mercado. El problema es que para calcular la volatilidad necesitamos un período también y seguimos con el problema del principio. Tal vez se podría calcular el período a usar para calcular la volatilidad calculando la autocorrelación de la serie de precios? Por ejemplo cuando la correlación de la serie de n precios sea < 0.10 creo que no tendría sentido seguir promediando la volatilidad.

    - - - Updated - - -

    He estado muy ocupado con los estudios y el trabajo de las últimas semanas. He añadido a mi script un filtro que mide la volatilidad. Podría haber usado el ATR pero por alguna razón me pareció mas interesante el Alligator así que aquí está el programa y los resultados, el lenguaje utilizado es lite-c de la plataforma Zorro:

    Código:
    function run()
    {
    //set(PARAMETERS);
    StartDate = 2002;
    EndDate = 2008;
    NumWFOCycles = 10;
    LookBack = 2000;
    vars Price = series(price());
    var period = 500;
    vars Trend = series(LowPass(Price,period));
    
    Stop = ATR(100)*4;//optimize(4, 2, 8);
    
    vars Meanness = series(MMI(Price,200));
    vars Filter = series(LowPass(Meanness,period));
    
    Alligator(series(MedPrice()));
    var diff = FisherN(series(abs(rBlue-rGreen) + abs(rGreen-rRed)),500);
    vars diffs = series(diff);
    var Threshold = 2.5;//0.1;//1.0;//1.5;//2.5
    
    static bool Filter2;
    if (crossOver(diffs,Threshold) or crossUnder(diffs,-Threshold))
    Filter2 = true;
    if (crossUnder(diffs,Threshold) or crossOver(diffs,-Threshold))
    Filter2 = false;
    
    if( valley(Trend) ){
    exitShort(); // close opposite position
    if(falling(Filter) and Filter2)
    enterLong();
    } else if( peak(Trend) ) {
    exitLong();
    if(falling(Filter) and Filter2)
    enterShort();
    }
    }
    Los resultados y su gráfico:

    Walk-Forward Test Workshop4_2Pc EUR/USD - performance report

    Simulation period 01.05.2002-31.12.2008
    Test period 30.11.2004-31.12.2008
    WFO test cycles 9 x 2742 bars (23 weeks)
    Training cycles 10 x 15538 bars (134 weeks)
    Monte Carlo cycles 200
    Lookback time 2000 bars (17 weeks)
    Assumed slippage 10.0 sec
    Spread 2.3 pips (roll -0.10/0.04)
    Contracts per lot 1000.0

    Gross win/loss 117$ / -44$ (+941p)
    Average profit 18$/year, 1.48$/month, 0.07$/day
    Max drawdown -34$ 47% (MAE -42$ 58%)
    Total down time 41% (TAE 9%)
    Max down time 68 weeks from Jul 2007
    Largest margin 5.00$
    Trade volume 17479$ (4278$/year)
    Transaction costs -3.02$ spr, 0.10$ slp, -0.88$ rol
    Capital required 34$

    Number of trades 17 (5/year, 1/week, 1/day)
    Percent winning 41%
    Max win/loss 42$ / -16$
    Avg trade profit 4.28$ 55.4p (+215.8p / -56.9p)
    Avg trade slippage 0.01$ 0.1p (+0.6p / -0.3p)
    Avg trade bars 151 (+346 / -14)
    Max trade bars 542 (4 weeks)
    Time in market 10%
    Max open trades 1
    Max loss streak 6 (uncorrelated 6)

    Annual return 52%
    Profit factor 2.65 (PRR 1.25)
    Sharpe ratio 0.75
    Kelly criterion 1.08
    R2 coefficient 0.385
    Ulcer index 6.0%
    Prediction error 125%

    Confidence level AR DDMax Capital

    10% 103% 14$ 17$
    20% 93% 17$ 19$
    30% 85% 18$ 21$
    40% 82% 20$ 22$
    50% 77% 21$ 23$
    60% 73% 22$ 24$
    70% 67% 25$ 27$
    80% 62% 28$ 29$
    90% 55% 32$ 33$
    95% 50% 36$ 36$
    100% 33% 58$ 54$

    Portfolio analysis OptF ProF Win/Loss Wgt% Cycles

    EUR/USD .166 2.65 7/10 100.0 ./XX//\\\
    EUR/USD:L .169 3.14 5/6 88.4 ..\///\\\
    EUR/USD:S .147 1.60 2/4 11.6 .//\...\.

    result (1).png
    Como se puede ver, utilizé cercanía de las lineas del Alligator como una medida de la volatilidad, luego normalizé sus diferencias y cuando salen de un umbral (que es mayor cuanto menos volátil el mercado es, este umbral se puede optimizar adaptando a las condiciones del mercado, tal vez usando equity curve trading para eso) lo considero una señal de compra o venta.

    Esto ha convertido el sistema perdedor en uno ganador con buena ratio de Sharpe para un sistema de tendencia y un índice de úlcera de 6%. Qué piensan? ¿Creen que tiene algún sesgo o curve-fitting? Espero escuchar sus opiniones. Gracias!

  5. #4
    Impresionante , has probado en más pares y/o estableciendo filtros horarios para evitar la sesión asiática?

    Saludos,

  6. #5
    disculpa que dejé medio abandonado este tema dado los estudios y que en otro foro me dijeron que no me preocupara tanto por "hacer rentable" un período en el pasado que no era rentable para el método de trend following, más bien que aceptara que el mercado cambió...

    Con respecto a lo que propones, me lo voy a anotar y reporto aquí los resultados cuando lo pruebe. Te puedo preguntar cual sería la razón de evitar la sesión asiática? Es porque en ese horario no se comercian tanto los pares "occidentales" (falta de liquidez de EUR/USD,EUR/GBP o sea mayor slippage)?

  7. #6
    Me refería a evitar la sesión asiática porque es donde menos se mueve el precio en los pares europeos y por tanto posiblemente tengas poca volatilidad y por tanto menos oportunidades.

    Saludos,

  8. #7
    Ah claro, o sea para evitar entrar en operaciones que dan retornos pequeños o incluso terminan en pérdidas por las señales falsas, perfecto!

  9. #8
    Vale decir que ademas de senales falsas y retrnos pequenos, la sesion asiatica tambien desvirtua las medias moviles del siguente periodo Londres/NY en donde se intercambia el mayor volumen.

    No se si es posible pero seria ideal sacarle esas horas al calculo. Y otra alternativa es usar calculo de medias de grafica renko.

Etiquetas para este tema

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Uso de cookies
Utilizamos cookies propias y de terceros para elaborar información estadística y mostrarle publicidad personalizada a través del análisis de su navegación. Si continúa navegando acepta su uso. Más información y política de cookies.
     

Aviso legal: Ni forosforex.com ni ninguna persona involucrada en forosforex.com aceptarán ninguna responsabilidad por cualquier pérdida o daño en el trading como resultado de la confianza en la información contenida en este sitio web, incluidos datos, cotizaciones, gráficos y señales de compra/venta. Por favor, infórmese plenamente de los riesgos y costes asociados a las operaciones en los mercados financieros, una de las formas de inversión que más riesgos entrañan.
forosforex.com le quiere recordar que los datos contenidos en este sitio web no son necesariamente en tiempo real ni exactos. forosforex.com no asume responsabilidad alguna por las pérdidas en que usted podría incurrir como resultado de la utilización de estos datos. Este acuerdo se rige por su versión en inglés, que prevalecerá siempre que haya alguna discrepancia entre la versión en inglés y la versión en español. Los CFD son un producto difícil de entender, varios organismos reguladores consideran que no es adecuado para inversores minoristas debido a su complejidad y riesgo.
Advertencia de riesgo: Los CFDs son un producto difícil de entender, y puede no ser adecuado para inversores minoristas debido a su complejidad y riesgo. Existe la posibilidad de sufrir una pérdida igual o superior a la inversión. Por lo tanto, no debe invertir o arriesgar dinero que no pueda permitirse perder. Debe asegurarse de que comprende todos los riesgos. Antes de abrir una cuenta en un broker por favor sea consciente e infórmese de los riesgos asociados con el trading. El contenido de este sitio web no debe interpretarse como asesoramiento personal. ForosForex recomienda que busque el consejo de un asesor financiero independiente.