sumber data stok historis [ditutup]

239

Saya mencoba membuat simulator pasar saham (mungkin akhirnya tumbuh menjadi AI yang memprediksi), tetapi saya kesulitan menemukan data untuk digunakan. Saya mencari sumber data pasar saham historis (semoga gratis).

Idealnya, itu akan menjadi set data yang sangat halus (interval kedua atau menit) dengan harga dan volume setiap simbol pada NASDAQ dan NYSE (dan mungkin yang lain jika saya suka bertualang). Adakah yang tahu sumber untuk info seperti itu?

Saya menemukan pertanyaan ini yang menunjukkan Yahoo menawarkan data historis dalam format CSV, tetapi saya tidak dapat menemukan cara mendapatkannya dalam pemeriksaan sepintas tentang situs yang ditautkan.

Saya juga tidak suka gagasan mengunduh sedikit demi sedikit data dalam file CSV ... Saya membayangkan Yahoo akan marah dan mematikan saya setelah beberapa ribu permintaan pertama.

Saya juga menemukan pertanyaan lain yang membuat saya berpikir saya akan mendapatkan jackpot, tapi sayangnya situs OpenTick tampaknya telah menutup pintu ... terlalu buruk, karena saya pikir mereka persis seperti yang saya inginkan.

Saya juga bisa menggunakan data yang hanya buka / tutup harga dan volume setiap simbol setiap hari, tetapi saya lebih suka semua data jika saya bisa mendapatkannya. Ada saran lain?

rmeador
sumber
4
@rmeador, Yahoo tidak akan mematikan Anda tidak peduli berapa banyak permintaan yang Anda buat, tetapi Google akan mematikan Anda. Saya sudah bisa mengunduh sekitar 4GB harga historis EOD dari Yahoo dalam waktu sekitar 5-6 jam tanpa dimatikan. Itu sekitar 7.000 saham dengan semua harga historis EOD mereka sejak mereka bergabung dengan pasar. Lihat jawaban saya untuk informasi lebih lanjut dan contoh kode sumber.
Kiril
Saya merasa seperti data EOD tidak cukup informatif. Jika Anda ingin tick-by-tick dan perdagangan, saya percaya polygon.io adalah yang termurah.
Quinton Pike

Jawaban:

226

Biarkan saya menambahkan 2 ¢ saya, itu tugas saya untuk mendapatkan data yang baik dan bersih untuk dana lindung nilai, saya telah melihat cukup banyak feed data dan penyedia data historis. Ini terutama tentang data stok AS.

Untuk mulai dengan, jika Anda memiliki uang jangan repot-repot dengan mengunduh data dari Yahoo, dapatkan data akhir hari langsung dari data CSI , ini adalah di mana Yahoo mendapatkan data EOD mereka juga AFAIK. Mereka memiliki API tempat Anda dapat mengekstrak data ke format apa pun yang Anda inginkan. Saya pikir berlangganan data tahunan adalah beberapa $ 100 dolar.

Masalah utama dengan mengunduh data dari layanan gratis adalah Anda hanya mendapatkan stok yang masih ada, ini disebut Survivorship Bias dan dapat memberi Anda hasil yang salah jika Anda melihat banyak stok, karena Anda hanya akan memasukkan yang membuatnya begitu jauh dan bukan yang tidak terdaftar.

Untuk bermain-main dengan beberapa data intraday saya akan melihat ke IQFeed , mereka menyediakan beberapa API untuk mengekstrak data historis, meskipun mereka terutama pakaian untuk feed real-time. Tetapi di sini ada beberapa opsi, beberapa broker bahkan menyediakan unduhan data historis melalui API mereka, jadi pilih saja racun Anda.

TAPI biasanya semua data ini tidak terlalu bersih, setelah Anda benar-benar mulai menguji kembali Anda akan melihat bahwa stok tertentu hilang atau muncul sebagai dua simbol yang berbeda, atau stock split tidak diperhitungkan dengan benar, dll. Dan kemudian Anda menyadari bahwa historis data dividen juga diperlukan dan Anda mulai berjalan dalam lingkaran, menambal data bersama dari 100 sumber data yang berbeda dan seterusnya. Jadi untuk memulai dengan umpan data "diskon" akan dilakukan, tetapi segera setelah Anda menjalankan backtests yang lebih komprehensif Anda mungkin mengalami masalah tergantung pada apa yang Anda lakukan. Jika Anda hanya melihat, katakanlah, saham S&P 500 ini tidak akan menjadi masalah dan feed intraday "murah" akan berlaku.

Apa yang tidak akan Anda temukan adalah data intraday gratis. Maksud saya Anda mungkin menemukan beberapa contoh, saya yakin ada 5 tahun data kutu MSFT beredar tetapi itu tidak akan membuat Anda terlalu jauh.

Kemudian, jika Anda membutuhkan barang nyata (buku pesanan level II, semua kutu seperti yang terjadi di semua bursa) satu "terjangkau", namun pilihan yang sangat baik adalah Nanex . Mereka benar-benar akan mengirimkan Anda sebuah drive dengan data terabyte. Jika saya ingat benar tentang data sekitar $ 3k-4K per tahun. Tapi percayalah, setelah Anda memahami betapa sulitnya mendapatkan data intraday yang baik, Anda tidak akan berpikir ini adalah uang yang sangat banyak.

Bukan untuk mengecilkan hati Anda tetapi untuk mendapatkan data yang baik itu sulit, begitu sulit bahkan banyak hedge-fund dan bank menghabiskan ratusan ribu dolar per bulan untuk mendapatkan data yang dapat mereka percayai. Sekali lagi, Anda dapat mulai di suatu tempat dan kemudian pergi dari sana tetapi ada baiknya melihatnya sedikit dalam konteks.


Sunting: Jawaban di atas adalah dari pengalaman saya sendiri. Artikel ini dari Caltech tentang umpan data yang tersedia akan memberikan lebih banyak wawasan, dan terutama merekomendasikan QuantQuote .

lukebuehler
sumber
18
+1 untuk menunjukkan 3 level data (hist, intra, level II) dan untuk komentar mendalam tentang jawaban orang lain (kelengkapan, kebersihan, ukuran penyimpanan, set data ...)
Peter Host
2
CSI hebat tetapi, hanya FYI, stok delisting sekarang merupakan layanan premium, tidak lagi termasuk dalam paket dasar. Hanya FYI.
Olie
1
CSI bagus tapi harganya mahal. Jika Anda menggunakan Unfair Advantage, Anda terikat pada aplikasi mereka. Membosankan menggunakannya setiap hari untuk memperbarui riwayat Anda. Jika Anda ingin mengunduh dari http atau ftp dengan CSI, Anda harus membayar sekitar € 200 sebulan. Maaf, tapi ini terlalu mahal.
davidxxx
@davidh, CSI Unfair Advantage memiliki ActiveX API tempat Anda dapat mengekspor semua data langganan Anda secara otomatis. Dibutuhkan sekitar satu hari untuk menulis alat eksportir yang kuat ... Jika Anda tahu alternatif yang lebih murah dengan kualitas yang sama dengan CSI, jangan ragu untuk mengirim alternatif!
lukebuehler
Catatan tentang QuantQuote: mereka meninjau / memproses pesanan Anda dalam waktu 48 jam setelah pembelian. Jika Anda pikir Anda akan memiliki akses langsung.
fionbio
94

JAWABAN INI TIDAK TEPAT AKURAT SEPERTI PAKAN YAHOO TELAH CEPAT

Dengan menggunakan pendekatan CSV Yahoo di atas, Anda juga bisa mendapatkan data historis! Anda dapat merekayasa balik contoh berikut:

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

Pada dasarnya:

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

Daftar lengkap parameter:

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
Fredrik E
sumber
Halaman ini memiliki tabel tag khusus yang dapat digunakan dalam URL.
user443854
9
Masalah besar dengan mendapatkan data dari Yahoo, atau layanan online apa pun, adalah Anda tidak mendapatkan saham yang dihapuskan dari daftar, sehingga Anda akan dengan cepat mengalami bias survivorship. Pengikut yang lebih baik, Eric H., atau saran saya, dan langsung ke CSI.
lukebuehler
Halaman ini dulunya memiliki tabel tag khusus yang dapat digunakan dalam URL ... "Yahoo berpendapat bahwa penggunaan dan distribusi alat dan konten yang terletak di ... merupakan pelanggaran bagian 6, 12, dan 18 dari Ketentuan Layanan (antara ketentuan lainnya), menimbulkan persaingan tidak sehat, dan mendorong orang lain untuk melanggar Ketentuan Layanan. ... Dengan mengganggu hubungan kontrak dan bisnis ini, Anda berpotensi membahayakan kemampuan pengguna lain untuk mendapatkan manfaat layanan yang disediakan di situs Yahoo Finance ". Jempol ke bawah di Yahoo
Mustapha George
Saya menambahkan switch yang tersisa dari catatan saya, yang dulu ditemukan di halaman web itu. Menyajikan ini di sini tampaknya tidak melanggar ToS yang ditemukan di sini: policy.yahoo.com/id/en/yahoo/terms/product-atos/apiforydn/... Yahoo pasti kesal dengan alat data Excel yang juga tersedia di situs itu.
Fredrik E
2
Umpan data ini tidak ada lagi.
MichaelICE
47

Saya tahu Anda ingin "gratis", tetapi saya serius mempertimbangkan untuk mendapatkan data dari csidata.com sekitar $ 300 / tahun, jika saya adalah Anda.

Itu yang yahoo gunakan untuk memasok data mereka.

Muncul dengan API yang layak, dan data (sejauh yang saya tahu) sangat bersih.

Anda mendapatkan 10 tahun sejarah saat berlangganan, dan kemudian pembaruan malam sesudahnya.

Mereka juga mengurus segala macam hal buruk seperti perpecahan dan dividen untuk Anda. Jika Anda belum menemukan kegembiraan pembersihan data, Anda tidak akan menyadari betapa Anda sangat membutuhkan ini, sampai pertama kali ATS Anda (Automated Trading System) berpikir beberapa saham benar-benar sangat murah, hanya karena ia membagi 2 : 1 dan Anda tidak menyadarinya.

Eric H.
sumber
1
bahasa apa yang didukung oleh API mereka?
user443854
1
mereka memiliki ActiveX API yang dapat Anda panggil dengan kode c ++ atau C # atau apa pun di windows untuk mendapatkan data Anda.
lukebuehler
1
Menarik. Bagaimana perbedaan pembagian dan pembagian penanganan dari Yahoo?
Matthew Lock
1
@ MatthewLock Saya tidak 100% tentang ini tapi saya pikir Yahoo menggunakan penyedia data "acara perusahaan" yang berbeda dan kemudian hanya menggunakan data CSI mentah yang disesuaikan dengan acara perusahaan. Artikel yang agak lama ini memberikan beberapa wawasan: amibroker.org/userkb/2007/09/23/yahoos-data-providers
lukebuehler
2
CSI hebat tetapi, hanya FYI, stok delisting sekarang merupakan layanan premium, tidak lagi termasuk dalam paket dasar. Hanya FYI.
Olie
16

Kumpulan data dari setiap simbol pada NASDAQ dan NYSE pada interval detik atau menit akan menjadi masif .

Katakanlah ada total 4000 perusahaan yang terdaftar di kedua bursa (ini mungkin berada di sisi yang sangat rendah karena ada lebih dari 3.200 perusahaan yang terdaftar di NASDAQ). Untuk data pada interval kedua, dengan asumsi ada 6,5 ​​jam perdagangan dalam sehari, yang akan memberi Anda 2.300 poin data per hari per perusahaan, atau sekitar 93.600.000 titik data total untuk satu hari itu. Dengan asumsi 200 hari perdagangan dalam setahun, itu sekitar 18.720.000.000 poin data hanya dalam satu tahun.

Mungkin Anda ingin memulai dengan set yang lebih kecil dulu?

matt b
sumber
2
Saya beroperasi dengan asumsi bahwa sebagian besar perusahaan tidak akan diperdagangkan setiap detik, sehingga jumlah titik data akan jauh lebih sedikit. mungkin itu asumsi yang buruk. masih, saya memprediksi pada urutan 10-an GB per tahun ...
rmeador
Satu dua bulan data stok untuk 10 simbol muncul dalam 3 DVD. Data juga dikompresi teks.
Alan
1
@rmeador itu benar, tetapi juga beberapa saham memiliki volume harian jauh lebih banyak daripada detik dalam sehari, yang berarti mereka berdagang lebih dari satu kali per detik - dan tidak semua perdagangan dijamin dengan harga yang sama. Jadi, Anda harus memutuskan apakah Anda tertarik pada harga pada suatu interval, atau pada perdagangan
matt b
2
Jika Anda menginginkan semuanya, misalnya, kutipan tingkat II dari semua bursa dll adalah beberapa TB selama setahun dalam format terkompresi suuuuper (sekitar 5GB per hari perdagangan). Jika Anda hanya menyimpan data sangat kecil, sekitar 10GB selama 10 tahun dari semua saham ...
lukebuehler
16

Intro:
Dari yahoo Anda bisa mendapatkan harga historis EOD (akhir hari), atau harga real-time. Harga EOD luar biasa sederhana untuk diunduh. Lihat blog saya untuk penjelasan tentang cara mendapatkan data dan untuk contoh kode C #.

Saya sedang dalam proses menulis data feed real-time "mesin" yang mengunduh dan menyimpan harga real-time dalam database. Mesin awalnya akan dapat mengunduh harga historis dari Yahoo dan Broker Interaktif dan akan dapat menyimpan data dalam database pilihan Anda: MS SQL, MySQL, SQLite, dll. Ini open source, tapi saya akan memposting lebih banyak informasi di blog saya ketika saya semakin dekat untuk merilisnya (dalam beberapa hari).

Pilihan lain adalah eclipse trader ... ini memungkinkan Anda untuk merekam data historis dengan rincian serendah 1 menit dan menyimpan harga secara lokal dalam file teks. Ini pada dasarnya mengunduh data real-time dari Yahoo dengan penundaan 15 menit. Karena saya menginginkan solusi yang lebih kuat dan saya sedang mengerjakan proyek sekolah besar yang memerlukan data, saya memutuskan untuk menulis mesin pengumpanan data saya sendiri (yang saya sebutkan di atas).

Kode Sampel:
Berikut adalah kode sampel C # yang menunjukkan cara mengunduh data waktu-nyata:

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();
    }
}

Basis Data:
Di sisi basis data saya menggunakan OleDbkoneksi ke file CSV untuk mengisi DataSetdan kemudian saya memperbarui basis data saya yang sebenarnya DataSet, itu pada dasarnya memungkinkan untuk mencocokkan semua kolom dari file CSV yang dikembalikan dari Yahoo langsung ke basis data Anda ( jika database Anda tidak mendukung batch menyisipkan data CSV, seperti SQLite). Jika tidak, memasukkan data hanya satu baris ... cukup masukkan CSV ke dalam basis data Anda.

Anda dapat membaca lebih lanjut tentang pemformatan url di sini: http://www.gummy-stuff.org/Yahoo-data.htm

Kiril
sumber
epik saya berharap saya menemukan ini sebelumnya.
ojblass
Apakah itu benar-benar memberikan data waktu nyata seperti yang Anda sarankan? Dari halaman, ia memang memiliki parameter ini "k1", tetapi terakhir kali saya memeriksa, masih ada beberapa keterlambatan.
Antony
@Antony sebagian besar waktu ada penundaan semacam, jadi itu hanya tergantung pada seberapa toleran Anda terhadap penundaan. Yahoo memang mengatakan bahwa mereka menyediakan data waktu nyata, tetapi tentu saja tidak untuk semua ticker. Ticker yang bukan real time tertunda hingga 15 menit. Bahkan jika Anda mendapatkan server yang terletak di bursa, masih akan ada "penundaan" . Jadi, penundaan seperti apa yang bersedia Anda toleransi?
Kiril
Itu tidak bisa diandalkan. Katakan padaku, mengapa ini tidak berfungsi sekarang misalnya: real-chart.finance.yahoo.com/... digunakan dari finance.yahoo.com/q/…
mmm
9

NASDAQ menawarkan 10 tahun data EOD historis untuk setiap simbol

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

Anda dapat mengotomatiskan proses mengunduh data ini.

Navi
sumber
Sumber yang bagus. Mereka mengubah sistem permintaan, jadi sekarang semua permintaan diproses dengan JS (mis. Nasdaq.com/symbol/aapl/historical ). Apakah ada cara untuk mengotomatiskannya?
Anton Tarasenko
Ya, dimungkinkan untuk mengotomatiskannya. Anda perlu menggunakan sniffer seperti Telerik dan melihat bagaimana data diperoleh (melalui POST). Selama Anda mengirim variabel posting dengan benar, Anda harus mendapatkan data.
Nick_F
1
Apakah ini masih tersedia? Apakah ini berisi data intraday?
Lee
8

Untuk data bebas bias penyintas, satu-satunya sumber terpercaya yang saya temukan adalah QuantQuote ( http://quantquote.com )

Data datang dalam resolusi menit, detik, atau centang, tautan ke data stok historis mereka .

Ada saran untuk kibot di atas. Saya akan melakukan pencarian google cepat sebelum membeli dari mereka, Anda akan menemukan banyak posting seperti ini dengan peringatan tentang masalah kualitas data kibot. Ia juga mengatakan bahwa sp500 mereka yang seharusnya bertahan bias hanya memiliki 570 simbol selama 14 tahun. Itu sangat tidak mungkin, perubahan sp500 dengan 1-2 simbol per bulan ....

pengguna788171
sumber
3
kibot hanya memiliki 3 simbol gratis. sisanya harus bayar! dia hanya melakukan iklan
bouncingHippo
Data harian gratis quantquote tidak berdokumen: tidak ada tajuk kolom dalam file csv, dan tidak ada dokumen apa pun.
user443854
ada dokumentasi, formatnya pada dasarnya sama dengan dataset resolusi menit mereka.
user788171
quantquote.com memiliki banyak kesalahan dalam data
Ivelin
Mereka menawarkan data cermat gratis untuk IBM sejak 1998. Itu cukup baik bagi saya. Saya hanya perlu satu simbol untuk menguji kompresi: kibot.com/buy.aspx
Sergei Rodionov
7

Sayangnya data ticker historis yang gratis sulit didapat. Sekarang opentick sudah mati, saya tidak tahu penyedia lain.

Dalam kehidupan sebelumnya saya bekerja untuk hedgefund yang memiliki sistem perdagangan otomatis, dan kami menggunakan data historis sebanyak-banyaknya.

Kami menggunakan TickData untuk sumber kami. Harga mereka masuk akal, dan data memiliki resolusi kedua.

Alan
sumber
6

Kami telah membeli data intraday 12 tahun dari Kibot.com dan cukup puas dengan kualitasnya.

Adapun persyaratan penyimpanan: 12 tahun data 1 menit untuk semua ekuitas USA (lebih dari 8000 simbol) adalah sekitar 100GB.

Dengan situasi data tick-by-tick sedikit berbeda. Jika Anda mencatat waktu dan penjualan saja, itu akan menjadi sekitar 30GB data per bulan untuk semua ekuitas USA. Jika Anda ingin menyimpan tawaran / meminta perubahan bersama dengan transaksi, Anda dapat mengharapkan sekitar 150GB per bulan.

Saya harap ini membantu. Tolong beri tahu saya jika ada hal lain yang dapat saya bantu.

boe100
sumber
1
Masih puas dengan KiBot @ boe100?
JaredBroad
@ boe100 Apakah mereka memiliki harga yang disesuaikan dan tidak disesuaikan? Apakah mereka memiliki betas dan delta?
user443854
Data yang disesuaikan dan tidak disesuaikan tersedia. Dimungkinkan untuk memperbarui data Anda menggunakan API HTTP atau mengunduh arsip baru dari server FTP setiap hari. Tidak ada betas atau delta yang dihitung.
boe100
@ boe100 dapatkah Anda membagikan data Anda?
Tomasz Waszczyk
2
@Tomasz haha, komentar Anda membuat hari saya: D
Corneliu Maftuleac
6

Biarkan saya menambahkan sumber yang baru saya temukan, ditemukan di sini .

Ini memiliki banyak data stok historis dalam format csv dan dikumpulkan oleh Andy Pavlo, yang menurut homepage-nya adalah "Asisten Profesor di Departemen Ilmu Komputer di Universitas Carnegie Mellon".

Noam
sumber
Ini bagus untuk siapa pun yang hanya ingin bermain-main dengan set data historis pasar saham yang cukup besar.
Ciaran Gallagher
1
Webpage down ...
Brethlosze
5

Mathematica nowoadays juga menawarkan akses ke harga saham saat ini dan historis, lihat http://reference.wolfram.com/mathematica/ref/FinancialData.html , jika Anda memiliki salinannya.

Tom Wenseleers
sumber
5
langkah waktu terkecil adalahday
kirill_igum
ha terima kasih telah memberi tahu saya - itu memang tidak terlalu bagus ...
Tom Wenseleers
4

Anda dapat menggunakan yahoo untuk mendapatkan data harian (set data yang jauh lebih mudah dikelola) tetapi Anda harus menyusun url. Lihat tautan ini . Anda tidak membuat banyak permintaan kecil, Anda membuat permintaan besar lebih sedikit. Banyak perangkat lunak bebas menggunakan ini sehingga mereka tidak harus mematikan Anda.

EDIT: Orang ini yang melakukannya, mungkin Anda bisa melihat panggilan dari perangkat lunaknya.

jimconstable
sumber
pada awalnya saya pikir tautan itu tampak menjanjikan, tetapi sepertinya saya tidak bisa menemukan cara untuk menentukan data historis ... sepertinya semuanya real-time. Apakah saya melewatkan sesuatu?
rmeador
kamu benar. Saya telah menambahkan tautan lain dari seseorang dengan perangkat lunak yang melakukan hal-hal historis sehingga saya tahu itu mungkin. Mungkin kita bisa melihat panggilan yang dibuat oleh perangkat lunaknya.
jimconstable
4

Yahoo adalah pilihan paling sederhana untuk mendapatkan data gratis awal. Tautan yang dijelaskan dalam jawaban eckesicle dapat dengan mudah digunakan dalam kode python, tetapi Anda pertama-tama membutuhkan semua tickers. Saya akan menggunakan NYSE untuk contoh ini, tetapi ini dapat digunakan untuk pertukaran yang berbeda juga.

Saya menggunakan halaman wiki ini untuk mengunduh semua tickers perusahaan dengan skrip berikut (Saya bukan Pythonist yang sangat berbakat, maaf jika kode ini tidak terlalu efisien):

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()

Untuk mengunduh setiap ticker saya menggunakan skrip lain yang mirip:

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()

Perhatikan bahwa kerugian utama dari metode ini adalah bahwa data yang berbeda tersedia untuk perusahaan yang berbeda - Perusahaan yang tidak memiliki data pada tanggal yang diminta (baru terdaftar) akan memberi Anda halaman 404.

Juga perlu diingat bahwa metode ini hanya baik untuk data awal - Jika Anda benar-benar ingin menguji algoritma Anda, Anda harus membayar sedikit dan menggunakan pemasok data tepercaya seperti CSIData atau yang lain

Nitay
sumber
Menempatkan deklarasi global di dalam namespace global tidak perlu, bagaimanapun respon yang baik.
Luke Taylor
1
Layanan turun ...
Brethlosze
3

Mengapa tidak memodelkan pasar saham palsu dengan Brownian Motion?

Banyak sumber daya untuk melakukannya. Mudah diimplementasikan.

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

Michael Thamm
sumber
1
:-) untuk membuatnya lebih nyata, Anda harus membuat gerakan Pecahan Brown dan bahkan itu tidak terlalu nyata, untuk data pasar palsu yang paling realistis Anda harus memiliki juga dimensi waktu fraktal ... jarum untuk mengatakannya menjadi sangat rumit. Lebih baik beli saja data pasar riil ...
lukebuehler
Ini juga tidak membantu bahwa pergerakan stok tidak masuk akal :)
Paul Milovanov
3

Saya menggunakan eodData.com. Cukup murah. Untuk 30 dolar sebulan Anda mendapatkan 30 hari bar 1,5 dan 60 menit untuk semua pertukaran AS dan 1 tahun data EOD untuk sebagian besar lainnya.

Dez Udezue
sumber
2

Saya akan menjelajah finance.google.com (untuk kutipan) - atau finance.yahoo.com.

Keduanya akan menghasilkan halaman html untuk sebagian besar pertukaran di seluruh dunia, termasuk historis. Lalu, tinggal menguraikan HTML untuk mengekstrak apa yang Anda butuhkan.

Saya telah melakukan ini di masa lalu, dengan sukses besar. Atau, jika Anda tidak keberatan menggunakan Perl - ada beberapa modul di CPAN yang telah melakukan pekerjaan ini untuk Anda - yaitu mengekstraksi kutipan dari Google / Yahoo.

Untuk lebih lanjut, lihat Sejarah Penawaran

Kekacauan
sumber
+1 melawan modul perl, mereka membuat mendapatkan data sangat mudah
Matthew Lock
1

Proyek saya yang terdahulu akan menggunakan data yang dapat diunduh secara bebas dari EODData .

Katak Shaggy
sumber