Obviamente esta es una pregunta de novato, simplemente estoy buscando trazar los promedios móviles de la relación PE del S&P en diferentes períodos de tiempo y trazarlos frente al DOW. Lo ideal sería algo que se alimenta de datos y se actualiza automáticamente, y se puede hacer en línea en lugar de una pieza propietaria de software. ¿alguien puede recomendar una herramienta para ayudarme a hacer esto? Ya he hecho una hoja de cálculo basada en datos históricos del s&p, pero de nuevo me gustaría automatizar esto de alguna manera.
Respuesta
¿Demasiados anuncios?He automatizado la descarga de varios datos de precios con sencillas aplicaciones de consola en C# que escribo con Visual Studio Express (que es gratuito). Lo que buscas es una tarea muy especializada, por lo que no creo que puedas librarte de la programación. Recomiendo Microsoft .Net para la programación. Sólo tienes que crear una nueva aplicación de consola y utilizar las clases WebRequest y WebResponse de .Net para leer datos de otros sitios web con muy pocas líneas de código. Luego puedes hacer manipulaciones de cadenas y crear archivos de texto de precios (con la clase System.IO) que puedes usar con cualquier programa de gráficos (recomiendo Ninjatrader, que es gratuito). Si no tienes un programa de gráficos, simplemente crea archivos de precios csv y gráficos en Excel. Además, sólo tienes que añadir las aplicaciones de la consola a las tareas de Windows para que se ejecuten automáticamente a una hora determinada cada día.
Obtengo los datos del ratio PE histórico de http://www.multpl.com/table y obtengo los precios históricos del Dow de Stooq: http://stooq.com/q/d/l/?s= ^dji&i=d
Aquí hay un trozo de código para descargar datos de un sitio web:
using System;
using System.IO;
using System.Net;
using System.Text;
namespace Examples.System.Net
{
public class WebRequestGetExample
{
public static void Main ()
{
// Create a request for the URL.
WebRequest request = WebRequest.Create (
"http://WEBSITEHERE/PAGEWITHPRICEDATAHERE");
// Get the response.
WebResponse response = request.GetResponse ();
// Display the status.
Console.WriteLine (((HttpWebResponse)response).StatusDescription);
// Get the stream containing content returned by the server.
Stream dataStream = response.GetResponseStream ();
// Open the stream using a StreamReader for easy access.
StreamReader reader = new StreamReader (dataStream);
// Read the content.
string responseFromServer = reader.ReadToEnd ();
// Display the content.
Console.WriteLine (responseFromServer);
// Clean up the streams and the response.
reader.Close ();
response.Close ();
}
}
}