El porcentaje de aciertos aumenta si le añadimos un filtro de medio plazo (media 50 del SP500) o largo plazo (media 200 del SP500). En estos casos tomaríamos posiciones largas cuando la media de 50 ó de 200 del SP500 está subiendo, y viceversa para el caso bajista.
Esta estrategia es ideal para seguir tendencias y a la vez evitar las señales falsas que suelen tener los sistemas de este tipo.
Fuente: "Estrategias y Gestión de Capital con Acciones" de Oscar G. Cagigas
CONDICIONES DEL SISTEMA
1.- MM10 por encima de la MM302.- El precio supera el máximo de los últimos 30 días.
3.- La MM50 ó MM200 del SP500 es alcista.
SCREENER MM10/30 CON CANAL DE DONCHIAN
indicator1 = Average[10](close)
indicator2 = Average[30](close)
c1 = (indicator1 CROSSES OVER indicator2)
indicator3 = CALL "Maximo anual cierres30d"
c2 = (close >= indicator3)
criteria = volume*close
SCREENER[c1 AND c2] (criteria AS "Cap")
indicator2 = Average[30](close)
c1 = (indicator1 CROSSES OVER indicator2)
indicator3 = CALL "Maximo anual cierres30d"
c2 = (close >= indicator3)
criteria = volume*close
SCREENER[c1 AND c2] (criteria AS "Cap")
INDICADOR MAXIMO ANUAL CIERRES30D
maxi=highest[30] (close)
RETURN maxi AS "max30d"
maxi=highest[30] (close)
RETURN maxi AS "max30d"
PROBACKTEST MM10/30 CON CANAL DE DONCHIAN
REM Comprar
indicator1 = Average[10](close)
indicator2 = Average[30](close)
c1 = (indicator1 CROSSES OVER indicator2)
indicator3 = CALL "Maximo anual cierres30d"
c2 = (close >= indicator3)
IF c1 AND c2 THEN
BUY 1 SHARES AT MARKET THISBARONCLOSE
ENDIF
REM Vender
indicator4 = Average[30](close)
c3 = (close < indicator4)
IF c3 THEN
SELL AT MARKET THISBARONCLOSE
ENDIF
indicator1 = Average[10](close)
indicator2 = Average[30](close)
c1 = (indicator1 CROSSES OVER indicator2)
indicator3 = CALL "Maximo anual cierres30d"
c2 = (close >= indicator3)
IF c1 AND c2 THEN
BUY 1 SHARES AT MARKET THISBARONCLOSE
ENDIF
REM Vender
indicator4 = Average[30](close)
c3 = (close < indicator4)
IF c3 THEN
SELL AT MARKET THISBARONCLOSE
ENDIF
Hola! tengo una duda con respecto a este sistema, una de las 3 condiciones del mismo es que la MM50 ó MM200 del SP500 sea alcista. Bien! Pero esa condición está incluida en el screener o en el backtester? a mi me parece que no. En este caso, como la incluiria para que el filtro beneficie los resultados. Desde ya muchas gracias! y felicitaciones por el blog!! Julia
ResponderEliminarNo se puede incluir en el screener de búsqueda de valores. Se trata de que en la plantilla tengas el SP500 con las medias 50 ó 200 para visualizarlas. Se trata de adecuar las compras al Timing del mercado y permanecer fuera si los índices están en corrección. Si quieres adelantar la entrada puedes cambiar los max de 30d por max20d, máximos de 20 días. Espero haberte ayudado.
ResponderEliminarSi Txema, me has aclarado el panorama, muchas gracias por la explicacion. Saludos! JUlia
EliminarTxema, cuando instalo en prt me dice : La función máximo anual cierres30d llamada desde Cagigas MM10/30 Canal Donchian (que es el nombre que le he dado al screener) no existe.
ResponderEliminarHe añadido el indicador máximo anual cierres 30d a la base de datos, ¿no es suficiente con esto, hay que hacer alguna otra cosa?
dónde crees que tengo el error?
Saludos
Luis E.
Dale este nombre al indicador y en el screener escribe el nombre exactamente igual. A mi me funciona perfectamente. Saludos de Txema
ResponderEliminar"Maximo anual cierres30d"
maxi=highest[30](close)
RETURN maxi AS "max30d"
Prueba esta variante del screener:
MM10 = Average[10](close)
MM30 = Average[30](close)
c1 = (MM10 >= MM30)
Max30 = CALL "Maximo anual cierres30d"
c2 = (close >= Max30[1])
REM RIESGO STOP POR DEBAJO DEL 9% EN SEMANAL
REM Este código se relaciona con la siguiente unidad de tiempo:weekly
TIMEFRAME(weekly)
riesgostop, ignored = CALL "Distancia MM30"
c3 = (riesgostop < 9.0)
REM Capitalización
cap = close*volume
c4 = cap > 10000000
SCREENER[ c1 AND c2 AND c3 AND c4] (riesgostop AS "R.Stop")
Txema, solucionado, funciona bien. Me equivocaba en una letra.
ResponderEliminarSaludos
Luis E.