Mi indicador

INDICADOR SUPERTHON MENSUAL

El Superthon Mensual es un indicador de constatación de tendencia de mercado para índices.



Mi operativa se basa en el seguimiento de tendencias a largo plazo. y cuando digo largo plazo, digo largo plazo. Nunca busco salirme antes de las correcciones sino que aguanto los retrocesos y las correcciones intermedias siempre que la tendencia principal de largo plazo siga vigente. 



No me importa aguantar grandes correciones, pero si que me importa saber cuando una tendencia larga se ha acabado y hay que dejar de apostar al alza. 



Por eso, llevaba tiempo buscando algun indicador que me dijese justo eso, cuando se ha acabado una tendencia. No busco algo que me anticipe el final y me avise de los giros un par de días antes, sino solo un indicador fiable que me confirme que se acabo lo que se daba. 



Nada de salirme en los maximos, sino solo saber cuando debo dejar de abrir posiciones largas y cuando aguantar las que tengo abiertas.


Así que he implementado un indicador llamemosle "de evidencia". 

Lo que hace este indicador es, basicamente decirme cuando ya han empezado o acabado las grandes tendencias. 

Su uso es muy sencillo: cuando corta la linea de cero hacia arriba y marca un +1, comienza una tendencia alcista. Mientras el indicador esta por encima de cero, la tendencia alcista sigue vigente. Cuando corta hacia abajo y marca un -1, acaba la alcista y comienza una bajista. Mientras esta bajo cero, la tendencia es bajista.


Aviso dos cosas:

1) El indicador solo lo uso como evidencia, no para conseguir señales de entrada o de salida. Ya digo que es un indicador de CONFIRMACION. Es, lógicamente, un indicador retrasado, no te dice lo que va a pasar mañana. Solo te dice lo que ya está pasando. 

2) Dado que es un indicador de "evidencia de mercado" solo uso en los indices y no en los titulos individuales, que es donde funciona bien. Además, funciona solo en timeframe mensual. Lo intenté probar en escalas temporales inferiores para ver si era capaz de utilizarlo como generador de señales de entrada/salida, pero no funciona.


Su lógica es mas sencilla que el mecanismo del asa de un cubo. Si hay algún quant mirando por aquí, que cierre los ojos, no vaya a asustarse. 

Simplemente cuenta velas. 

Cuenta cuantas velas mensuales alcistas hay en las ultimas 12 velas (un año). Si mas de la mitad de las velas son alcistas, el mercado es alcista, si mas de la mitad son bajistas, el mercado es bajista. Asi que colocamos una linea de cero en el 6.

La magia es que algo tan tonto funciona perfectamente en los indices. Miradlo y comprobadlo.
En todos los indices y desde hace mas de 20 años funciona muy bien, como digo, como indicador de CONSTATACION de en que tipo de tendencia estamos.

Otra cosa es que lo querais usar para generar señales. Eso lo dejo a vuestro libre albedrío. Yo he corrido backtests poniendome largo cuando cruzan el cero hacia arriba y corto cuando lo cruzan hacia abajo y, claro, ganan dinero. Pero ya os digo que no lo uso para eso.

Con las acciones individuales y, especialmente, con las materias primas, ya os adelanto que no funciona tan bien.


¿Que no es perfecto y falla a veces?, por supuesto, si no fuera así yo estaría hiperforradísimo y no os contaría nada sobre este indicador.

El que todavía crea que hay algún indicador que no falla nunca, por favor, que contrate un coach de trading.


En los gráficos siguientes, podemos ver como funciona el indicador.


SP500


DAX


IBEX




Os dejo el enlace a una Hoja GoogleDocs donde poder verlo




Y el código para PROREALTIME.

REM cuenta meses alcistas de los últimos 12 meses
N=11
Suma = 0
FOR i = 0 TO N DO
IF ( Close [i] > Open[i] ) THEN
Suma = Suma + 1
ENDIF
NEXT
RETURN (Suma-6)



Y para AMIBROKER

// REM cuenta meses alcistas de los ultimos 12 meses
// REM periodo de N meses
// Valores Iniciales
N=11;
Suma = 0;
// Bucle
if (BarCount>12)
for ( i = 0 ; i <=N; i++ )

Suma = iif ( Ref(C,-1*i)>Ref(O,-1*i), Suma+1, Suma );
}
// Pinta el indicador
SUPERTHON = (Suma-6);
//CERO = 0;
//Plot (CERO, "Linea de Cero", ParamColor("Color", colorBlack), ParamStyle ("style",0,maskAll));
Plot (SUPERTHON, "Superthon", ParamColor("Color", colorGreen), styleLine | styleThick);
PlotGrid(0, colorBlack, width =2, styleLine);




Y para WealthLab
(Ricardo Gonzalez, Gestor de Fondos de GPM y Director General de esbolsa.com, ha tenido la amabilidad de programar mi indicador en WealthLab y enviármelo para que podamos disfrutar todos de él)

using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using WealthLab;
using WealthLab.Indicators;

namespace WealthLab.Strategies
{
                public class Indicador : WealthScript
                {

                               private DataSeries getCurvaCoppock(){
                                               int N = 11;
                                               DataSeries suma = new DataSeries(Bars, "suma");
                                               
                                               for(int bar = 12; bar < Bars.Count; bar++)
                                               {
                                                               for(int i = 0; i <= N; i++)
                                                               {
                                                                               if ( Close[bar-i] > Open[bar-i])
                                                                                              suma[bar] = suma[bar] +1;
                                                                               if (Close[bar-i] < Open[bar-i])
                                                                                              suma[bar] = suma[bar] -1;
                                                               }
                                               }
                                  
                                               return suma;
                               }
  
                               protected override void Execute()
                               {
                                               int numMinimoBarras = 13;
   
                                               HideVolume();
                                               SetLogScale(PricePane,true);
                                               SetBarColors(Color.Black, Color.Black);
                                               
  
                                               DataSeries coppock = this.getCurvaCoppock();
                                               
                                               //Dibujo indicador
                                               
                                               ChartPane wrPane = CreatePane( 40, true, true );
                                               PlotSeriesOscillator(wrPane, coppock, 0, 0, Color.Green, Color.Red, Color.Black, WealthLab.LineStyle.Solid, 1);
                                               DrawHorzLine( wrPane, 0, Color.Gray, WealthLab.LineStyle.Dashed, 1 );
                                               coppock.Description = "Indicador Superthon";
                                  
                                               for(int bar = numMinimoBarras; bar < Bars.Count; bar++)
                                               {
                                                               if (IsLastPositionActive)
                                                               {
                                                                               Position p = LastPosition;
                                                                               if (coppock[bar-1]>=0 
                                                                               && coppock[bar]<0){
                                                                                                              ExitAtMarket(bar+1, p, "Exit Long"); 
                                                                                              SetPaneBackgroundColor(PricePane, bar, Color.IndianRed);
                                                                                              SetPaneBackgroundColor(wrPane, bar, Color.IndianRed);
                                                                                              }
                                                                               }
                                                                               else
                                                                               {
                                                                                              if (coppock[bar-1]<=0 
                                                                                              && coppock[bar]>=1){
                                                                                                              BuyAtMarket(bar+1, "Compra");
                                                                                                              SetPaneBackgroundColor(PricePane, bar, Color.Lime);
                                                                                                              SetPaneBackgroundColor(wrPane, bar, Color.Lime);
                                                                                              }
                                                                               }
                                                               }
                                               }
                               }
}






Configuración En Prorealtime

Para que el indicador salga como en el gráfico siguiente,


tenéis que configurarlo de acuerdo a las opciones que indico a continuación: