źródło historycznych danych o zapasach [zamknięte]


239

Próbuję stworzyć symulator giełdy (być może w końcu przerodzi się w przewidującą sztuczną inteligencję), ale mam problem ze znalezieniem danych do wykorzystania. Szukam (mam nadzieję, że za darmo) źródła historycznych danych giełdowych.

Idealnie byłby to bardzo drobiazgowy (drugi lub minutowy) zestaw danych z ceną i wolumenem każdego symbolu na NASDAQ i NYSE (i być może innych, jeśli mam ochotę na przygodę). Czy ktoś zna źródło takich informacji?

Znalazłem to pytanie, które wskazuje, że Yahoo oferuje dane historyczne w formacie CSV, ale nie byłem w stanie dowiedzieć się, jak je uzyskać w pobieżnej analizie połączonej witryny.

Nie podoba mi się również pomysł pobierania fragmentarycznych danych z plików CSV ... Wyobrażam sobie, że Yahoo byłby zdenerwowany i wyłączałby mnie po pierwszych kilku tysiącach żądań.

Odkryłem również inne pytanie, które sprawiło, że pomyślałem, że trafiłem w dziesiątkę, ale niestety strona OpenTick wydaje się być zamknięta ... szkoda, ponieważ uważam, że były dokładnie tym, czego chciałem.

Mógłbym również codziennie używać danych, które po prostu otwierają / zamykają cenę i objętość każdego symbolu, ale wolę wszystkie dane, jeśli mogę je zdobyć. Jakieś inne sugestie?


4
@rmeador, Yahoo nie odetnie cię bez względu na liczbę żądań, ale Google odetnie cię. Udało mi się pobrać około 4 GB historycznych cen EOD z Yahoo w ciągu około 5-6 godzin bez wyłączania się. To około 7 000 akcji z wszystkimi historycznymi cenami EOD od momentu wejścia na rynek. Zobacz moją odpowiedź, aby uzyskać więcej informacji i przykładowy kod źródłowy.
Kiril

Wydaje mi się, że dane EOD nie są wystarczająco pouczające. Jeśli chcesz notowania i transakcje tykające tyknięciem , uważam, że polygon.io jest najtańszy.
Quinton Pike

Odpowiedzi:


226

Pozwólcie, że dodam moje 2 centy, moim zadaniem jest pozyskiwanie dobrych i czystych danych dla funduszu hedgingowego, widziałem całkiem sporo źródeł danych i dostawców danych historycznych. Dotyczy to głównie danych o amerykańskich akcjach.

Na początek, jeśli masz trochę pieniędzy, nie przejmuj się pobieraniem danych z Yahoo, pobierz dane na koniec dnia bezpośrednio z danych CSI , to tutaj Yahoo pobiera również swoje dane EOD AFAIK. Posiadają interfejs API, w którym można wyodrębnić dane do dowolnego formatu. Myślę, że roczna subskrypcja danych to kilka 100 dolarów.

Główny problem z pobieraniem danych z bezpłatnej usługi polega na tym, że dostajesz tylko zapasy, które nadal istnieją, nazywa się to uprzedzeniem przetrwania i może dać złe wyniki, jeśli spojrzysz na wiele zapasów, ponieważ uwzględnisz tylko te, które sprawiły, że tak daleko, a nie te, które zostały usunięte z listy.

Do zabawy z niektórymi danymi śróddziennymi zajrzałbym do IQFeed , zapewniają one kilka interfejsów API do wydobywania danych historycznych, chociaż są one głównie zestawem do kanałów w czasie rzeczywistym. Ale tutaj jest sporo opcji, niektórzy brokerzy zapewniają nawet pobieranie danych historycznych za pośrednictwem swoich interfejsów API, więc po prostu wybierz swoją truciznę.

ALE zwykle wszystkie te dane nie są bardzo czyste, gdy naprawdę zaczniesz testowanie z powrotem, zobaczysz, że niektórych zapasów brakuje lub pojawiają się jako dwa różne symbole, lub podziały zapasów nie są odpowiednio rozliczane itp. I wtedy zdajesz sobie sprawę, że historyczne dane dywidendy są również potrzebne, więc zaczynasz biegać w kręgach, łatając dane ze 100 różnych źródeł danych i tak dalej. Zacznijmy od pliku danych z rabatem, ale jak tylko przeprowadzisz bardziej kompleksowe testy wsteczne, możesz napotkać problemy w zależności od tego, co robisz. Jeśli spojrzymy na, powiedzmy, akcje S&P 500, nie będzie to jednak problemem i zrobi to „tania” transmisja śróddzienna.

To, czego nie znajdziesz, to bezpłatne dane śróddzienne. Mam na myśli, że możesz znaleźć kilka przykładów, jestem pewien, że pływa około 5 lat danych tykania MSFT, ale to nie zaprowadzi cię daleko.

Następnie, jeśli potrzebujesz prawdziwych rzeczy (księga zamówień poziomu II, wszystkie tiki, jakie miały miejsce na wszystkich giełdach), jeden „niedrogi”, ale doskonałą opcją jest Nanex . Dostarczą ci dysk z terabajtami danych. Jeśli dobrze pamiętam, to około 3k-4K $ danych rocznie. Ale zaufaj mi, gdy zrozumiesz, jak trudno jest uzyskać dobre dane śróddzienne, nie będziesz myśleć, że to w ogóle bardzo dużo pieniędzy.

Trudno nie zniechęcić, ale zdobyć dobre dane, tak trudne, że wiele funduszy hedgingowych i banków wydaje setki tysięcy dolarów miesięcznie, aby uzyskać dane, którym mogą zaufać. Znowu możesz zacząć gdzieś, a potem stamtąd iść, ale dobrze jest zobaczyć to trochę w kontekście.


Edycja: Powyższa odpowiedź pochodzi z mojego własnego doświadczenia. Ten artykuł Caltech na temat dostępnych plików danych da więcej informacji, a szczególnie zaleca QuantQuote .


18
+1 za wskazanie 3 poziomów danych (hist, intra, poziom II) oraz za wnikliwe komentarze na temat odpowiedzi innych (kompletność, czystość, rozmiar pamięci, zestawy danych ...)
Peter Host

2
CSI jest świetny, ale po prostu FYI, wycofane akcje są teraz usługą premium, nie są już zawarte w podstawowych pakietach. Po prostu dla ciebie.
Olie,

1
CSI jest świetny, ale cena jest droga. Jeśli korzystasz z Unfair Advantage, jesteś związany ich aplikacją. Używanie go codziennie do aktualizowania historii jest nudne. Jeśli chcesz pobierać z http lub ftp z CSI, musisz zapłacić około 200 € miesięcznie. Przepraszam, ale to za drogie.
davidxxx

@davidh, CSI Unfair Advantage ma API ActiveX, w którym możesz automatycznie eksportować wszystkie dane swojej subskrypcji. Napisanie solidnego narzędzia do eksportowania zajmuje około jednego dnia ... Jeśli znasz tańszą alternatywę o takiej samej jakości jak CSI, opublikuj alternatywę!
lukebuehler

Uwaga na temat QuantQuote: sprawdzają / przetwarzają twoje zamówienie w ciągu 48 godzin od zakupu. Na wypadek gdybyś myślał, że będziesz mieć natychmiastowy dostęp.
fionbio

94

ODPOWIEDŹ JUŻ NIE JEST DŁUŻSZA, JEŻELI WYKONANO PASZĘ YAHOO

Stosując powyższe podejście CSV Yahoo, możesz również uzyskać dane historyczne! Możesz odtworzyć następujący przykład:

http://ichart.finance.yahoo.com/table.csv?s=YHOO&d=0&e=28&f=2010&g=d&a=3&b=12&c=1996&ignore=.csv

Głównie:

sn = TICKER
a = fromMonth-1
b = fromDay (two digits)
c = fromYear
d = toMonth-1
e = toDay (two digits)
f = toYear
g = d for day, m for month, y for yearly

Pełna lista parametrów:

a   Ask
a2  Average Daily Volume
a5  Ask Size
b   Bid
b2  Ask (Real-time)
b3  Bid (Real-time)
b4  Book Value
b6  Bid Size
c   Change & Percent Change
c1  Change
c3  Commission
c6  Change (Real-time)
c8  After Hours Change (Real-time)
d   Dividend/Share
d1  Last Trade Date
d2  Trade Date
e   Earnings/Share
e1  Error Indication (returned for symbol changed / invalid)
e7  EPS Estimate Current Year
e8  EPS Estimate Next Year
e9  EPS Estimate Next Quarter
f6  Float Shares
g   Day's Low
h   Day's High
j   52-week Low
k   52-week High
g1  Holdings Gain Percent
g3  Annualized Gain
g4  Holdings Gain
g5  Holdings Gain Percent (Real-time)
g6  Holdings Gain (Real-time)
i   More Info
i5  Order Book (Real-time)
j1  Market Capitalization
j3  Market Cap (Real-time)
j4  EBITDA
j5  Change From 52-week Low
j6  Percent Change From 52-week Low
k1  Last Trade (Real-time) With Time
k2  Change Percent (Real-time)
k3  Last Trade Size
k4  Change From 52-week High
k5  Percent Change From 52-week High
l   Last Trade (With Time)
l1  Last Trade (Price Only)
l2  High Limit
l3  Low Limit
m   Day's Range
m2  Day's Range (Real-time)
m3  50-day Moving Average
m4  200-day Moving Average
m5  Change From 200-day Moving Average
m6  Percent Change From 200-day Moving Average
m7  Change From 50-day Moving Average
m8  Percent Change From 50-day Moving Average
n   Name
n4  Notes
o   Open
p   Previous Close
p1  Price Paid
p2  Change in Percent
p5  Price/Sales
p6  Price/Book
q   Ex-Dividend Date
r   P/E Ratio
r1  Dividend Pay Date
r2  P/E Ratio (Real-time)
r5  PEG Ratio
r6  Price/EPS Estimate Current Year
r7  Price/EPS Estimate Next Year
s   Symbol
s1  Shares Owned
s7  Short Ratio
t1  Last Trade Time
t6  Trade Links
t7  Ticker Trend
t8  1 yr Target Price
v   Volume
v1  Holdings Value
v7  Holdings Value (Real-time)
w   52-week Range
w1  Day's Value Change
w4  Day's Value Change (Real-time)
x   Stock Exchange
y   Dividend Yield

Ta strona zawiera specjalne tagi tabeli, których można użyć w adresie URL.
user443854

9
Dużym problemem z uzyskaniem danych z Yahoo lub jakiejkolwiek usługi online jest to, że nie dostajesz zapasów z zapasów, więc szybko wpadniesz w stronniczość przetrwania. Lepiej postępuj zgodnie z radą Erica H. lub moją i przejdź bezpośrednio do CSI.
lukebuehler

Ta strona zawierała specjalne tagi tabeli, których można używać w adresie URL ... ”Yahoo twierdzi, że korzystanie i dystrybucja narzędzia oraz treści znajdujących się w ... stanowi naruszenie sekcji 6, 12 i 18 Warunki świadczenia usług (między innymi postanowieniami), powodują nieuczciwą konkurencję i skłaniają innych do naruszenia Warunków świadczenia usług ... Zakłócając te stosunki umowne i biznesowe, potencjalnie szkodzisz zdolności innych użytkowników do uzyskania korzyści z usług świadczonych na stronie Yahoo Finance ”. Kciuk w dół na Yahoo
Mustapha George

Dodałem pozostałe przełączniki z moich notatek, które znajdowały się na tej stronie internetowej. Prezentowanie ich tutaj nie wydaje się naruszać ZO, które można znaleźć tutaj: policy.yahoo.com/us/en/yahoo/terms/product-atos/apiforydn/... Yahoo musiał być zdenerwowany z powodu narzędzia danych Excel, które również było dostępne na tej stronie.
Fredrik E

2
Tego pliku danych już nie ma.
MichaelICE

47

Wiem, że chciałeś „za darmo”, ale poważnie zastanowiłbym się nad uzyskaniem danych z csidata.com za około 300 USD rocznie, gdybym był tobą.

Właśnie tego używa Yahoo do dostarczania swoich danych.

Ma przyzwoity interfejs API, a dane są (o ile wiem) bardzo czyste.

Otrzymujesz 10 lat historii, kiedy subskrybujesz, a następnie co wieczór aktualizujesz.

Zajmują się także dla Ciebie wszelkimi nieprzyjemnymi rzeczami, takimi jak podziały i dywidendy. Jeśli jeszcze nie odkryłeś radości związanej z czyszczeniem danych, nie zdasz sobie sprawy, ile tego potrzebujesz, dopóki pierwszy raz ATS (Automated Trading System) nie uzna, że ​​niektóre zapasy są naprawdę naprawdę tanie, tylko dlatego, że dzielą 2 : 1 i nie zauważyłeś.


1
które języki są obsługiwane przez ich interfejs API?
user443854

1
mają interfejs API ActiveX, który można wywołać za pomocą kodu c ++ lub C # lub cokolwiek innego w systemie Windows, aby uzyskać dostęp do danych.
lukebuehler

1
Ciekawy. Czym różni się podział wypłat i dywidend od Yahoo?
Matthew Lock

1
@MatthewLock Nie chodzi mi o to w 100%, ale myślę, że Yahoo używa innego dostawcy danych „zdarzeń korporacyjnych”, a następnie po prostu używa surowych danych CSI skorygowanych przez zdarzenia korporacyjne. Ten nieco stary artykuł daje pewien wgląd: amibroker.org/userkb/2007/09/23/yahoos-data-providers
lukebuehler

2
CSI jest świetny, ale po prostu FYI, wycofane akcje są teraz usługą premium, nie są już zawarte w podstawowych pakietach. Po prostu dla ciebie.
Olie,

16

Zbiór danych każdego symbolu na NASDAQ i NYSE w odstępie sekundowym lub minutowym będzie ogromny .

Załóżmy, że na obu giełdach jest w sumie 4000 firm (prawdopodobnie jest to bardzo niska strona, ponieważ na NASDAQ jest zarejestrowanych ponad 3200 firm ). W przypadku danych w drugim przedziale, przy założeniu, że istnieje 6,5 godziny handlu dziennie, co dałoby 23400 punktów danych dziennie na firmę lub łącznie około 93.600.000 punktów danych za ten jeden dzień. Zakładając 200 dni handlowych w ciągu roku, to około 18 720 000 000 punktów danych w ciągu zaledwie jednego roku.

Może najpierw chcesz zacząć od mniejszego zestawu?


2
Działałem przy założeniu, że większość firm nie będzie handlowana co sekundę, więc liczba punktów danych byłaby znacznie mniejsza. może to złe założenie. wciąż przewidywałem 10 GB rocznie rocznie ...
rmeador 16.04.2009

Jeden miesięczny zapas danych dla około 10 symboli pojawił się na 3 płytach DVD. Dane były również skompresowane.
Alan

1
@rmeador to prawda, ale także niektóre akcje mają o wiele większy dzienny wolumen niż sekund w ciągu dnia, co oznacza, że ​​handlują więcej niż raz na sekundę - i nie wszystkie transakcje mają tę samą cenę. Musisz więc zdecydować, czy interesuje Cię cena w danym przedziale czasowym, czy handel
matt b

2
Jeśli chcesz wszystko, np. Notowania poziomu II wszystkich giełd itp., To kilka TB na rok w skompresowanym formacie suuuuper (około 5 GB dziennie). Jeśli przechowujesz tylko minimalne dane, to naprawdę niewiele, około 10 GB na 10 lat wszystkich zapasów ...
lukebuehler

16

Wprowadzenie:
z yahoo można uzyskać historyczne ceny EOD (na koniec dnia) lub ceny w czasie rzeczywistym. Ceny EOD są niezwykle proste do pobrania. Zobacz mój blog, aby uzyskać wyjaśnienia na temat uzyskiwania danych i przykłady kodu C #.

Jestem w trakcie pisania „silnika” kanału danych w czasie rzeczywistym, który pobiera i przechowuje ceny w czasie rzeczywistym w bazie danych. Silnik początkowo będzie mógł pobierać historyczne ceny od Yahoo i Interactive Brokers i będzie mógł przechowywać dane w wybranej przez Ciebie bazie danych: MS SQL, MySQL, SQLite itp. Jest to oprogramowanie typu open source, ale opublikuję więcej informacje na moim blogu, gdy zbliżę się do wydania (w ciągu kilku dni).

Inną opcją jest trader eclipse ... pozwala on rejestrować dane historyczne z ziarnistością już od 1 minuty i przechowuje ceny lokalnie w pliku tekstowym. Zasadniczo pobiera dane w czasie rzeczywistym z Yahoo z 15-minutowym opóźnieniem. Ponieważ chciałem bardziej niezawodnego rozwiązania i pracuję nad dużym szkolnym projektem, do którego potrzebujemy danych, postanowiłem napisać własny silnik przesyłania danych (o którym wspomniałem powyżej).

Przykładowy kod:
Oto przykładowy kod C #, który pokazuje, jak pobierać dane w czasie rzeczywistym:

public void Start()
{
    string url = "http://finance.yahoo.com/d/quotes.csv?s=MSFT+GOOG&f=snl1d1t1ohgdr";
    //Get page showing the table with the chosen indices
    HttpWebRequest request = null;
    IDatabase database =
        DatabaseFactory.CreateDatabase(
        DatabaseFactory.DatabaseType.SQLite);

    //csv content
    try
    {
        while (true)
        {
            using (Stream file = File.Create("quotes.csv"))
            {
                request = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url));
                request.Timeout = 30000;
                using (var response = (HttpWebResponse)request.GetResponse())
                using (Stream input = response.GetResponseStream())
                {
                    CopyStream(input, file);
                }
            }
            Console.WriteLine("------------------------------------------------");
            database.InsertData(Directory.GetCurrentDirectory() + "/quotes.csv");

            File.Delete("quotes.csv");
            Thread.Sleep(10000); // 10 seconds
        }
    }
    catch (Exception exc)
    {
        Console.WriteLine(exc.ToString());
        Console.ReadKey();
    }
}

Baza danych:
po stronie bazy danych używam OleDbpołączenia z plikiem CSV w celu wypełnienia a, DataSeta następnie aktualizuję moją rzeczywistą bazę danych za pomocą DataSet, w zasadzie umożliwia dopasowanie wszystkich kolumn z pliku CSV zwróconego z Yahoo bezpośrednio do bazy danych ( jeśli twoja baza danych nie obsługuje wstawiania wsadowego danych CSV, np. SQLite). W przeciwnym razie wstawianie danych jest jedno-liniowe ... wystarczy wsadowo wstawić CSV do bazy danych.

Możesz przeczytać więcej o formatowaniu adresu URL tutaj: http://www.gummy-stuff.org/Yahoo-data.htm


epickie szkoda, że ​​nie znalazłem tego wcześniej.
ojblass

Czy to faktycznie zapewnia dane w czasie rzeczywistym, jak sugerowałeś? Na stronie ma ten parametr „k1”, ale przy ostatnim sprawdzeniu nadal ma pewne opóźnienie.
Antony

@Antonia przez większość czasu występuje jakieś opóźnienie, więc zależy to tylko od tego, jak tolerancyjny jesteś na opóźnienia. Yahoo twierdzi, że dostarczają dane w czasie rzeczywistym, ale z pewnością nie dotyczy to wszystkich pasków. Zegary, które nie są w czasie rzeczywistym, są opóźnione o 15 minut. Nawet jeśli na giełdzie dostaniesz serwer znajdujący się w tym samym miejscu, nadal będzie „jakieś opóźnienie” . Jakiego rodzaju opóźnienie chcesz tolerować?
Kiril

To nie jest wiarygodne. Powiedz mi, dlaczego to teraz nie działa, na przykład: real-chart.finance.yahoo.com/... używane z finance.yahoo.com/q/…
mmm

9

NASDAQ oferuje 10 lat historycznych danych EOD dla każdego symbolu

http://www.nasdaq.com/aspx/historical_quotes.aspx?symbol=AAPL&selected=AAPL

Możesz zautomatyzować proces pobierania tych danych.


Ładne źródło. Zmienili system zgłoszeń, więc teraz wszystkie żądania są przetwarzane za pomocą JS (np. Nasdaq.com/symbol/aapl/historical ). Czy jest jakiś sposób na zautomatyzowanie go?
Anton Tarasenko

Tak, można to zautomatyzować. Musisz użyć sniffera, takiego jak Telerik i zobaczyć, w jaki sposób dane są uzyskiwane (za pomocą POST). Tak długo, jak prawidłowo przesyłasz zmienne pocztowe, powinieneś otrzymywać dane.
Nick_F,

1
Czy to jest w dalszym ciągu dostępne? Czy zawiera jakieś dane śróddzienne?
Lee,

8

Jeśli chodzi o dane wolne od uprzedzeń, jedynym wiarygodnym źródłem, które znalazłem, jest QuantQuote ( http://quantquote.com )

Dane są podawane w rozdzielczości minutowej, sekundowej lub podziałki, link do ich historycznych danych giełdowych .

Powyżej była sugestia dla kibota. Zrobiłbym szybkie wyszukiwanie w Google przed zakupem od nich, znajdziesz wiele takich postów z ostrzeżeniami o problemach z jakością danych Kibot. Mówi także, że ich przypuszczalnie przeżycie wolne od sp500 ma tylko 570 symboli przez 14 lat. To prawie niemożliwe, sp500 zmienia się o 1-2 symbole miesięcznie ....


3
kibot ma tylko 3 darmowe symbole. reszta musi zapłacić! po prostu robi reklamy
odbijając się

Bezpłatne dzienne dane quantquote są nieudokumentowane: w plikach csv nie ma nagłówków kolumn ani żadnych dokumentów.
user443854

istnieje dokumentacja, format jest zasadniczo taki sam, jak ich zestawy danych o minimalnej rozdzielczości.
user788171,

quantquote.com ma wiele błędów w danych
Ivelin

Od 1998 r. Oferują IBM bardzo bezpłatne dane. To było dla mnie wystarczająco dobre. Potrzebowałem tylko jednego symbolu do przetestowania kompresji: kibot.com/buy.aspx
Siergiej Rodionow

7

Niestety trudno jest uzyskać historyczne dane giełdowe, które są bezpłatne. Teraz, kiedy opentick nie żyje, nie znam żadnego innego dostawcy.

W poprzednim życiu pracowałem dla funduszu hedgingowego, który miał zautomatyzowany system transakcyjny, i obficie korzystaliśmy z danych historycznych.

Jako źródła wykorzystaliśmy TickData. Ich ceny były rozsądne, a dane miały rozdzielczość poniżej sekundy.


6

Kupiliśmy 12 lat danych w ciągu dnia z Kibot.com i jesteśmy bardzo zadowoleni z jakości.

Jeśli chodzi o wymagania dotyczące przechowywania: 12 lat 1-minutowych danych dla wszystkich akcji amerykańskich (ponad 8000 symboli) wynosi około 100 GB.

Z danymi tykającymi po tykaniu sytuacja jest trochę inna. Jeśli rejestrujesz tylko czas i sprzedaż, będzie to około 30 GB danych miesięcznie dla wszystkich akcji w USA. Jeśli chcesz przechowywać zmiany ofert / zapytań wraz z transakcjami, możesz spodziewać się około 150 GB miesięcznie.

Mam nadzieję, że to pomoże. Daj mi znać, jeśli mogę jeszcze w czymś pomóc.


1
Nadal jesteś zadowolony z KiBot @ boe100?
JaredBroad

@ boe100 Czy mają zarówno skorygowane, jak i nieskorygowane ceny? Czy mają bety i delty?
user443854

Dostępne są zarówno dostosowane, jak i nieskorygowane dane. Możliwe jest aktualizowanie danych za pomocą interfejsu API HTTP lub codzienne pobieranie nowych archiwów z serwera FTP. Żadne bety ani delty nie są obliczane.
boe100

@ boe100 czy możesz udostępnić swoje dane?
Tomasz Waszczyk

2
@Tomasz haha, twój komentarz sprawił, że mój dzień: D
Corneliu Maftuleac

6

Pozwól mi dodać źródło, które właśnie odkryłem, które znalazłem tutaj .

Ma wiele historycznych danych giełdowych w formacie csv i został zebrany przez Andy Pavlo, który według jego strony głównej jest „profesorem nadzwyczajnym na Wydziale Informatyki Uniwersytetu Carnegie Mellon”.


Jest to idealne rozwiązanie dla każdego, kto chce po prostu bawić się z wystarczająco dużym zestawem historycznych danych giełdowych.
Ciaran Gallagher

1
Strona nie
działa



4

Możesz użyć yahoo, aby uzyskać codzienne dane (znacznie łatwiejszy do zarządzania zestaw danych), ale musisz uporządkować adresy URL. Zobacz ten link . Nie wysyłasz wielu małych żądań, a mniej dużych. Wiele darmowego oprogramowania korzysta z tego, więc nie powinny cię zamykać.

EDYCJA: Ten facet to robi, może rzucisz okiem na wywołania jego oprogramowania.


na początku myślałem, że ten link wygląda obiecująco, ale nie mogę znaleźć sposobu na określenie danych historycznych ... wygląda na to, że wszystko dzieje się w czasie rzeczywistym. Czy coś brakuje?
rmeador 16.04.2009

masz rację. Dodałem kolejny link osoby z oprogramowaniem zajmującym się historią, więc wiem, że jest to możliwe. Może rzucisz okiem na połączenia wykonywane przez jego oprogramowanie.
jimconstable

4

Yahoo to najprostsza opcja uzyskania wstępnych bezpłatnych danych. Link opisany w odpowiedzi eckesicle może być łatwo wykorzystany w kodzie Pythona, ale najpierw potrzebujesz wszystkich pasków. W tym przykładzie użyłbym NYSE, ale można go również użyć do różnych wymian.

Użyłem tej strony wiki do pobrania wszystkich pasków firmowych za pomocą następującego skryptu (nie jestem bardzo utalentowanym Pythonistą, przepraszam, jeśli ten kod nie jest zbyt wydajny):

import string
import urllib2
from bs4 import BeautifulSoup

global f

def download_page(url):
    aurl = urllib2.urlopen(url)
    soup = BeautifulSoup(aurl.read())

    print url

    for row in soup('table')[1]('tr'):
        tds = row('td')
        if (len(tds) > 0):
            f.write(tds[1].string + '\n')


f = open('stock_names.txt', 'w')

url_part1 = 'http://en.wikipedia.org/wiki/Companies_listed_on_the_New_York_Stock_Exchange_'
url = url_part1 + '(0-9)'
download_page(url)

for letter in string.uppercase[:26]:
    url_part2 = letter
    url = url_part1 + '(' + letter + ')'

    download_page(url)

f.close()

Do pobrania każdego z pasków użyłem innego dość podobnego skryptu:

import string
import urllib2
from bs4 import BeautifulSoup


global f

url_part1 = 'http://ichart.finance.yahoo.com/table.csv?s='
url_part2 = '&d=0&e=28&f=2010&g=d&a=3&b=12&c=1996&ignore=.csv'

print "Starting"

f = open('stock_names.txt', 'r')
file_content = f.readlines()
count = 1;
print "About %d tickers will be downloaded" % len(file_content)

for ticker in file_content:
    ticker = ticker.strip()
    url = url_part1 + ticker + url_part2
    
    try:
        # This will cause exception on a 404
        response = urllib2.urlopen(url)

        print "Downloading ticker %s (%d out of %d)" % (ticker, count, len(file_content))

        count = count + 1
        history_file = open('C:\\Users\\Nitay\\Desktop\\Historical Data\\' + ticker + '.csv', 'w')
        history_file.write(response.read())
        history_file.close()

    except Exception, e:
        pass

f.close()

Zauważ, że główną wadą tej metody jest to, że różne dane są dostępne dla różnych firm - Firmy, które nie mają danych w wymaganych terminach (nowo wymienione) otrzymają stronę 404.

Pamiętaj również, że ta metoda jest przydatna tylko w przypadku wstępnych danych - jeśli naprawdę chcesz przetestować swój algorytm, powinieneś zapłacić trochę i skorzystać z zaufanego dostawcy danych, takiego jak CSIData lub inni


Umieszczenie globalnej deklaracji w globalnej przestrzeni nazw jest niepotrzebne, ale i tak dobra reakcja.
Luke Taylor,

1
Serwis w dół ...
Brethlosze,

3

Dlaczego nie modelować fałszywej giełdy za pomocą Brownian Motion?

Dużo zasobów do tego. Łatwy do wdrożenia.

http://introcs.cs.princeton.edu/java/98simulation/


1
:-), aby uczynić go bardziej realnym, musisz stworzyć ruch ułamkowy Browna, a nawet to nie jest całkiem realne, aby uzyskać najbardziej realistyczne fałszywe dane rynkowe, musisz mieć również wymiar czasu fraktalnego ... igły, żeby to powiedzieć robi się dość skomplikowane. Lepiej po prostu kup prawdziwe dane rynkowe ...
lukebuehler

To również nie pomaga, że ​​ruchy zapasów nie są logarytmiczne :)
Paul Milovanov

3

Korzystam z eodData.com. Jest całkiem przyzwoity cenowo. Za 30 dolarów miesięcznie dostajesz 30 dni 1,5 i 60 minutowych pasków dla wszystkich amerykańskich giełd i 1 rok danych EOD dla większości innych.


2

Zindeksowałbym finanse.google.com (dla cytatów) - lub finanse.yahoo.com.

Oba zwrócą strony HTML dla większości wymian na całym świecie, w tym historycznych. Następnie wystarczy przeanalizować kod HTML, aby wyodrębnić to, czego potrzebujesz.

Robiłem to w przeszłości, z wielkim sukcesem. Alternatywnie, jeśli nie masz nic przeciwko korzystaniu z Perla - istnieje kilka modułów CPAN, które wykonały tę pracę za Ciebie - tj. Wyodrębnianie ofert z Google / Yahoo.

Aby uzyskać więcej informacji, zobacz Historia wyceny


+1 przeciw modułom perla, sprawiają, że bardzo łatwo jest uzyskać dane
Matthew Lock,


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.