Rankia España Rankia Argentina Rankia Argentina Rankia Chile Rankia Chile Rankia Colombia Rankia Colombia Rankia México Rankia México Rankia Perú Rankia Perú Rankia Portugal Rankia Portugal Rankia USA Rankia USA
Acceder
3 recomendaciones

Llevo mucho tiempo sin escribir nada porque no tenía nada interesante que comentar, pero hoy si.

Si te gustaría tener una plataforma con la que investigar algoritmos de trading intradía, o simplemente te gustaría poder cotillear la cotización al instante, hay una forma de hacerlo sin que te gastes dinero. Esto es lo que yo hago. Además es útil aunque solo hagas un par de compras al año, a veces te metes en la web de tu broker y hay que hacer un acto de fé para creerse la cotización que te da.

La web de Nasdaq (http://www.nasdaq.com) ofrece la posibilidad de leer el precio de una acción en tiempo real, por ejemplo en http://www.nasdaq.com/symbol/spy/real-time vemos la cotización en tiempo real del SPY. Pero estar todo el día dándole a Crtl+R para actualizarlo no es que sea muy productivo.

Y Matlab (www.mathworks.com) tiene una función muy útil de lectura de urls. Lee el código fuente de una url para poder utilizaro. Matlab, para aquel que no lo conozca es un software de cálculo numérico y programación sobre todo orientado a ingeniería y al ámbito científico.

Gratis entre comillas, porque Matlab no es gratis. Pero en todas las universidades hay licencias de Matlab, por ejemplo. No es difícil de encontrar. Y aún así tampoco es caro como para que no podamos comprarlo si realmente nos interesa.

Esas dos piezas son las únicas que necesitamos. Un proveedor de datos (Nasdaq) y un entorno de programación que pueda leer los datos (Matlab). Además Matlab te permite desarrollar tus propios algoritmos con los que hacer trading automático. Para ello lo único que necesitarías es una forma de enlazar Matlab con el software que uses para comprar y vender, tan fácil como comunicarse a través de ficheros con un mini script que te permita progrmar tu broker en python o en lo que sea.

Y, ¿cómo se programa? Pues aquí tienes una función que he programado para graficar en tiempo real la cotización de una acción:

function plot_real_time(ticker)
close all
if ~exist('ticker','var')
    ticker = 'spy' ;
end
max_N = 5000 ;
sale = [] ;
time = [] ;
h = plot(time,sale) ;
set(h,'YDataSource','time')
set(h,'XDataSource','scale')
while true
    [s,t] = get_real_time(ticker) ;
    if isempty(time)
        sale = s ;
        time = t ;
    elseif length(time)==max_N && time(end)~=t
        sale = [sale(2:end),s] ;
        time = [time(2:end),t] ;
    elseif length(time)<max_N && time(end)~=t
        sale(end+1) = s ; %#ok<AGROW>
        time(end+1) = t ; %#ok<AGROW>
    end
    if length(time)>2
        h = plot(time,sale,'LineWidth',1) ;
        title([upper(ticker),' - Last sale: ',num2str(sale(end),'%1.2f'),' at ',datestr(time(end),'HH:MM:SS'),' '],'FontSize',15)
        grid on
        datetick('x')
        refreshdata(h) ;
        drawnow
        pause(1)
        save DATA.mat time sale
    end
end
function [last_sale,time] = get_real_time(ticker)
if ~exist('ticker','var')
    ticker = 'spy' ;
end
url = ['http://www.nasdaq.com/symbol/',ticker,'/real-time'] ;
while true
    try
        str = urlread(url) ;
        str_last_sale = '<div id="qwidget_lastsale" class="qwidget-dollar">' ;
        str_time = '<span id="qwidget_markettime">' ;
        index = strfind(str,str_last_sale) + length(str_last_sale) ;
        i = index ;
        while str(index)~='<'
            index = index+1 ;
        end
        last_sale = str2double(str(i+1:index-1)) ;
        index = strfind(str,str_time) + length(str_time) ;
        i = index ;
        while str(index)~='<'
            index = index+1 ;
        end
        try
            time = datenum(str(i:index-1),'mm/dd/yyyy HH:MM:SS AM') ;
        catch
            error('The market is closed.')
        end
        break
    catch err
        disp(sprintf('Error catched at %s # %s',datestr(now,'HH:MM:SS'),err.message)) %#ok<DSPS>
        pause(1)
    end
end
Y te va dibujando una gráfica como esta que he sacado de la última media hora de hoy para el SPY:
 
Espero que a alguien le sea útil. Un saludo.
¡Sé el primero en comentar!
Comentar
3 recomendaciones
Escribe aquí tu comentario...
Este sitio web usa cookies para analizar la navegación del usuario. Política de cookies.
Cerrar