Forum Sign in Register

Cómo Calcular Indicadores Técnicos en MATLAB: RSI, Medias Móviles, MACD y Bandas de Bollinger

Started by Support 2 weeks ago · 0 replies RSS

Cómo Calcular Indicadores Técnicos en MATLAB: RSI, Medias Móviles, MACD y Bandas de Bollinger

Antes de poder hacer backtest de una señal hay que calcularla, y ahí es donde muchos proyectos de trading en MATLAB se tuercen sin hacer ruido: un RSI hecho a mano con la ventana desplazada un bar, una media móvil que se asoma una vela al futuro, longitudes que dejan de cuadrar al combinar dos indicadores. La Financial Toolbox incluye funciones de indicadores vectorizadas y probadas para que no tengas que reinventarlas. Esta guía cubre las que vas a usar de verdad y las trampas que conviene evitar.

Primero, da a tus datos la forma correcta

La mayoría de las funciones de indicadores aceptan una matriz, una tabla o una timetable. Lo más limpio es una timetable con variables de precio con nombre, porque varias funciones buscan una variable llamada Close (sin distinguir mayúsculas) y la usan automáticamente. Si pasas un vector simple de cierres también funciona, pero una timetable OHLC bien nombrada permite que los indicadores de volumen y de rango encuentren las columnas que necesitan.


% prices: una timetable con Open, High, Low, Close, Volume
close = prices.Close;


Medias móviles: movavg

Atención a la sintaxis moderna: el código antiguo que llamaba a movavg con argumentos separados Lead y Lag ya no funciona. Hoy recibe los datos, un tipo y una única ventana:


sma20 = movavg(prices, 'simple', 20); % media simple, 20 barras
ema50 = movavg(prices, 'exponential', 50); % media exponencial, 50 barras


RSI: rsindex

rsindex calcula el Índice de Fuerza Relativa a partir de los precios de cierre; con una timetable lee la variable Close y tú fijas el periodo mediante un par nombre-valor:


rsi14 = rsindex(prices, 'WindowSize', 14);
sobreventa = rsi14 < 30;
sobrecompra = rsi14 > 70;


MACD y Bandas de Bollinger

Ambas devuelven varias series. macd te da la línea MACD y su línea de señal (12/26/9 por defecto); bollinger devuelve la banda media, la superior y la inferior:


[macdLine, signalLine] = macd(prices);
[bandaMedia, bandaSup, bandaInf] = bollinger(prices);


Y hay muchas más

La toolbox incluye también osciladores e indicadores de volumen que de otro modo programarías a mano: stochosc (oscilador estocástico), willpctr (Williams %R), adline (Acumulación/Distribución), onbalvol (On-Balance Volume), chaikosc, adosc y más. Siguen la misma convención de leer las columnas OHLC o de volumen con nombre de tu timetable.

Un pequeño ejemplo de principio a fin

Aquí tienes un pase compacto y vectorizado que calcula unos indicadores y los convierte en una señal sencilla de comprado/fuera, sin bucle y sin mirar al futuro:


sma20 = movavg(prices, 'simple', 20);
rsi14 = rsindex(prices, 'WindowSize', 14);

% comprado cuando el precio está por encima de su media de 20 y el RSI no está sobrecomprado
senalCruda = (prices.Close > sma20) & (rsi14 < 70);

% desplaza la señal un bar hacia delante para que la vela de hoy no
% opere con información que solo tuvo al cierre de hoy (evita el sesgo de anticipación)
senal = [false; senalCruda(1:end-1)];


Gráficos

Para una comprobación visual rápida, superpón las bandas y las medias sobre el precio, o usa los ayudantes de gráficos de la toolbox como candle para velas OHLC. Ver el indicador sobre el gráfico detecta errores de alineación más rápido que leer números.

Las trampas que se pagan caras

  • NaN de calentamiento. Todo indicador con ventana está indefinido durante sus primeras ventana barras. Esos NaN iniciales son correctos, no un fallo: gestiónalos antes de calcular rendimientos en vez de dejar que envenenen una suma.
  • Alineación de longitud y fechas. Al combinar dos indicadores con ventanas distintas, alinéalos por las marcas de tiempo de la timetable, no por el índice crudo, o compararás en silencio barras de fechas diferentes.
  • Sesgo de anticipación. El error de backtest más común. Desplaza tu señal un bar hacia delante (como arriba) para que una decisión use solo la información disponible al cierre de esa barra.
  • La sintaxis antigua de movavg. Los tutoriales escritos para versiones antiguas usan argumentos Lead/Lag que ya no existen. Si un ejemplo da error en movavg, es por eso: pásate a la forma de ventana única.


En resumen

La Financial Toolbox te da funciones de indicadores correctas y vectorizadas —movavg, rsindex, macd, bollinger y una larga lista de osciladores y herramientas de volumen— para que los ladrillos de tu estrategia sean fiables desde el principio. Mete tus precios en una timetable bien nombrada, respeta el periodo de calentamiento, desplaza tus señales para evitar la anticipación y estas funciones se convierten en la entrada limpia de un backtest honesto.
clean by ai-agent

Sign in to reply.