geçmiş stok verilerinin kaynağı [kapalı]


239

Bir borsa simülatörü yapmaya çalışıyorum (belki de sonunda tahmini bir yapay zekaya dönüşüyorum), ancak kullanılacak verileri bulmakta sorun yaşıyorum. Tarihsel borsa verileri için (umarım ücretsiz) bir kaynak arıyorum.

İdeal olarak, NASDAQ ve NYSE'deki her sembolün fiyatı ve hacmi (ve belki de maceraperest olursam) çok ince taneli (ikinci veya dakika aralığı) bir veri kümesi olacaktır. Herkes böyle bir bilgi için bir kaynak biliyor mu?

Yahoo'nun CSV biçiminde geçmiş veriler sunduğunu gösteren bu soruyu buldum , ancak sitenin bağlantılı bir incelemede nasıl elde edileceğini bulamadım.

Ayrıca CSV dosyalarındaki parçalı verileri indirme fikrinden de hoşlanmıyorum ... Yahoo'nun ilk birkaç bin istekden sonra üzüleceğini ve beni kapatacağını hayal ediyorum.

Ayrıca ikramiyeyi vuracağımı düşündüren başka bir soru da keşfettim , ancak ne yazık ki OpenTick sitesi kapılarını kapatmış gibi görünüyor ... çünkü tam olarak istediğim gibi olduklarını düşünüyorum.

Ayrıca her gün sadece her sembolün fiyatını ve hacmini aç / kapa eden verileri kullanabilecektim, ancak alabilirsem tüm verileri tercih ederim. Başka öneriniz var mı?


4
@rmeador, Yahoo, ne kadar istekte bulunursanız olun sizi kapatmayacak, ancak Google sizi kapatacak. Yahoo'dan yaklaşık 4GB EOD geçmiş fiyatlarını yaklaşık 5-6 saat içinde kapanmadan indirebildim. Bu, piyasaya katıldıklarından beri tüm EOD tarihi fiyatlarıyla yaklaşık 7.000 hisse senedi. Daha fazla bilgi ve örnek kaynak kodu için cevabıma bakın.
Kiril

EOD verilerinin yeterince bilgilendirici olmadığını düşünüyorum. Tick -by-tick tırnak ve esnaf istiyorsanız , polygon.io en ucuz olduğuna inanıyorum .
Quinton Pike

Yanıtlar:


226

2 ¢ ekleyeyim, bir hedge fonu için iyi ve temiz veriler elde etmek benim işim, oldukça fazla veri feed'i ve geçmiş veri sağlayıcıları gördüm. Bu esas olarak ABD hisse senedi verileriyle ilgilidir.

Başlangıç ​​olarak, paranız varsa Yahoo'dan veri indirmekle uğraşmayın, gün sonu verilerini doğrudan CSI verilerinden alın , burası Yahoo'nun EOD verilerini de AFAIK'i alır. Verileri istediğiniz biçime çıkarabileceğiniz bir API'ya sahiptirler. Veriler için yıllık abonelik birkaç 100 $ dolar olduğunu düşünüyorum.

Ücretsiz bir hizmetten veri indirmeyle ilgili temel sorun, sadece mevcut stokları almanızdır , buna Survivorship Bias denir ve birçok hisse senedine bakarsanız size yanlış sonuçlar verebilir, çünkü sadece bunu yapanları dahil edersiniz uzak ve listelenmemiş olanları değil.

IQFeed'e bakacağım bazı gün içi verilerle oynamak için, temel olarak gerçek zamanlı yayınlar için bir kıyafet olmasına rağmen, geçmiş verileri çıkarmak için çeşitli API'ler sağlarlar. Ancak burada birkaç seçenek var, bazı brokerler API'ları aracılığıyla geçmiş veri indirmeleri bile sağlıyor, bu yüzden sadece zehirinizi seçin.

AMA genellikle bu verilerin hepsi çok temiz değildir, gerçekten teste başladığınızda, belirli stokların eksik olduğunu veya iki farklı sembol olarak göründüğünü veya stok bölünmelerinin doğru bir şekilde hesaba katılmadığını vb. Görürsünüz. temettü verisine de ihtiyaç vardır ve böylece 100 farklı veri kaynağından veri yamalama vb. Bu yüzden bir "indirim" veri feed'i ile başlayacaktır, ancak daha kapsamlı backtestler çalıştırdığınızda ne yaptığınıza bağlı olarak sorunlarla karşılaşabilirsiniz. Sadece bakarsanız, S&P 500 stoklarının bu kadar da bir sorun olmayacağını ve "ucuz" gün içi beslemenin yapıldığını varsayalım.

Bulamayacağınız şey gün içi verileridir. Demek istediğim bazı örnekler bulabilirsiniz, eminim 5 yıllık bir MSFT kene verisi var, ama bu sizi çok ileri götürmeyecek.

Sonra, gerçek şeylere ihtiyacınız varsa (seviye II sipariş defteri, tüm borsalarda olduğu gibi tüm keneler) bir "uygun fiyatlı", ancak mükemmel bir seçenek Nanex . Aslında size terabayt veri içeren bir sürücü gönderecekler. Doğru hatırlıyorsam yıllık yaklaşık 3k-4K dolar. Ama bana güvenin, gün içinde iyi veri elde etmenin ne kadar zor olduğunu anladıktan sonra, bunun çok fazla para olduğunu düşünmezsiniz.

Sizi caydırmak değil, iyi veri elde etmek zor, o kadar zor ki, birçok hedge fonu ve banka güvenebilecekleri verileri almak için ayda yüz binlerce dolar harcıyor . Yine, bir yerden başlayıp oradan gidebilirsiniz ama biraz bağlamda görmek güzel.


Edit: Yukarıdaki cevap kendi deneyimlerime dayanmaktadır. Caltech'in mevcut veri feed'leri hakkındaki bu yazımı daha fazla bilgi verecektir ve özellikle QuantQuote'u önermektedir .


18
3 veri düzeyini (geçmiş, intra, seviye II) işaret etmek ve başkalarının cevapları (veri setlerinin bütünlüğü, temizliği, depolama boyutu, ...) hakkında içgörülü yorumlar için +1
Peter Host

2
CSI harika, ancak sadece FYI, delinmiş stoklar artık temel paketlere dahil olmayan birinci sınıf bir hizmet. Sadece FYI.
Olie

1
CSI harika ama fiyatı pahalı. Haksız Avantaj kullanırsanız, uygulamalarına bağlı olursunuz. Geçmişinizi güncellemek için her gün kullanmak sıkıcıdır. CSI ile http veya ftp'den indirmek istiyorsanız, ayda yaklaşık 200 € ödemeniz gerekir. Üzgünüm, ama çok pahalı.
davidxxx

@davidh, CSI Unfair Advantage aboneliğinizin tüm verilerini otomatik olarak aktarabileceğiniz bir ActiveX API'sine sahiptir. Güçlü bir ihracatçı aracı yazmak yaklaşık bir gün sürer ... CSI ile aynı kalitede daha ucuz bir alternatif biliyorsanız, bir alternatif yayınlamaktan çekinmeyin!
lukebuehler

QuantQuote hakkında not: Satın alma işleminden sonra 48 saat içinde siparişinizi inceler / işlerler. Anında erişiminizin olacağını düşündüğünüzde.
fionbio

94

YAHOO YEMİ VAR OLMASI İÇİN BU CEVAP ARTIK YAYINDA DEĞİL

Yahoo'nun yukarıdaki CSV yaklaşımını kullanarak geçmiş verileri de elde edebilirsiniz! Aşağıdaki örneği tersine mühendislik uygulayabilirsiniz:

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

esasen:

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

Parametrelerin tam listesi:

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

Bu sayfada , URL'de kullanılabilecek bir tablo özel etiketleri var.
user443854

9
Yahoo'dan veya çevrimiçi hizmetten herhangi bir şekilde veri almayla ilgili büyük bir sorun, hisse senedine sahip olmamanızdır, bu yüzden hızlı bir şekilde hayatta kalma yanlılığına girersiniz. Eric H. ya da benim tavsiyem daha iyi ve doğrudan CSI gidin.
lukebuehler

Bu sayfa, URL'de kullanılabilecek bir tablo özel etiketine sahipti ... "Yahoo, aracın ve bulunan içeriğin kullanımınızın ve dağıtımınızın ... 6, 12 ve 18 bölümlerinin ihlali anlamına geldiğini iddia ediyor. Hizmet Şartları (diğer hükümlerin yanı sıra) haksız rekabete yol açar ve diğerlerini Hizmet Şartlarını ihlal etmeye teşvik eder ... Bu sözleşme ve ticari ilişkilere müdahale ederek, potansiyel olarak diğer kullanıcıların msgstr "Yahoo Finans sitesinde sunulan hizmetlerin avantajları". Başparmak aşağı Yahoo
Mustapha George

Notlarımdan, o web sayfasında bulunan diğer anahtarları ekledim. Bunları burada sunmak, burada bulunan ToS'yi ihlal ediyor gibi görünmüyor: policies.yahoo.com/us/en/yahoo/terms/product-atos/apiforydn/… Yahoo, aynı zamanda Excel veri aracı için de üzülmüş olmalı bu sitede kullanılabilir.
Fredrik E

2
Bu veri akışı artık yok.
MichaelICE

47

"Ücretsiz" istediğinizi biliyorum, ancak csidata.com'dan veri almayı ciddi olarak düşünürdüm yılda 300 dolara .

Yahoo'nun verilerini sağlamak için kullandığı şey budur.

İyi bir API ile geliyor ve veriler (anlayabildiğim kadarıyla) çok temiz.

Abone olduğunuzda 10 yıllık bir geçmişe ve ardından gece güncellemelerine sahip olursunuz.

Onlar da sizin için böler ve temettüler gibi kötü şeyler her türlü ilgilenir. Veri temizleme sevincini henüz keşfetmediyseniz, ATS'nizin (Otomatik Ticaret Sistemi) ilk kez bazı hisse senetlerinin gerçekten ucuz olduğunu düşünene kadar, buna ne kadar ihtiyacınız olduğunu anlamayacaksınız. : 1 ve sen fark etmedin.


1
hangi diller API'ları tarafından destekleniyor?
user443854

1
verilerinize ulaşmak için c ++ kodu veya C # veya Windows'da ne varsa arayabileceğiniz bir ActiveX API'sine sahiptir.
lukebuehler

1
İlginç. Bölünmeler ve temettü işlemleri Yahoo'dan nasıl farklıdır?
Matthew Lock

1
@MatthewLock Ben bu konuda% 100 değilim ama Yahoo farklı bir "kurumsal etkinlikler" veri sağlayıcı kullanır ve daha sonra sadece kurumsal etkinlikler tarafından ayarlanmış ham CSI verilerini kullanır düşünüyorum. Bu biraz eski makale biraz fikir veriyor: amibroker.org/userkb/2007/09/23/yahoos-data-providers
lukebuehler

2
CSI harika, ancak sadece FYI, delinmiş stoklar artık temel paketlere dahil olmayan birinci sınıf bir hizmet. Sadece FYI.
Olie

16

İkinci veya dakika aralıklarla NASDAQ ve NYSE üzerindeki her sembolün bir veri seti büyük olacaktır .

Her iki borsada da toplam 4000 şirket listelendiğini varsayalım ( NASDAQ'da 3200'den fazla şirket listelendiği için bu muhtemelen çok düşük taraftadır ). İkinci bir aralıktaki veriler için, günde 6,5 işlem saati olduğu varsayılarak, şirket başına günde 23400 veri noktası veya bir gün için toplam yaklaşık 93.600.000 veri noktası verileceği varsayılır. Yılda 200 işlem günü olduğu varsayıldığında, sadece bir yıl için yaklaşık 18.720.000.000 veri noktası.

Belki önce daha küçük bir setle başlamak istersiniz?


2
Şirketlerin çoğunun her saniyede işlem görmeyeceği varsayımı altında çalışıyordum, bu nedenle veri noktalarının sayısı önemli ölçüde daha az olacaktı. belki de bu kötü bir varsayımdır. yine de, yılda 10 GB GB tahmin
ediyordum

Yaklaşık 10 sembol için birkaç aylık stok verileri 3 DVD'ye geldi. Veriler de sıkıştırılmış metindi.
Alan

1
@rmeador bu doğru, ama aynı zamanda bazı hisse senetlerinin günde birkaç saniyeden daha fazla günlük hacmi var, yani saniyede bir defadan fazla işlem yapıyorlar - ve tüm işlemlerin aynı fiyatta olacağı garanti edilmiyor. Bu nedenle, bir aralıkta veya ticarette fiyatla ilgilenip ilgilenmediğinize karar vermeniz gerekir
matt b

2
Her şeyi istiyorsanız, örneğin, tüm borsaların seviye II kotasyonları vb. Bir yıl boyunca bir suuuuper sıkıştırılmış formatta (işlem günü başına yaklaşık 5GB) birkaç TB. Eğer sadece çok az veri depolarsanız, gerçekten çok az, 10 yıl boyunca tüm stokların
10GBs

16

Giriş:
Yahoo'dan EOD (gün sonu) geçmiş fiyatları veya gerçek zamanlı fiyatlar alabilirsiniz. EOD fiyatlarını indirmek inanılmaz derecede basit. Verilerin nasıl alınacağıyla ilgili açıklamalar ve C # kodu örnekleri için bloguma bakın .

Bir veritabanında gerçek zamanlı fiyatları indiren ve depolayan gerçek zamanlı bir veri feed'i "motoru" yazma sürecindeyim. Motor başlangıçta Yahoo ve Interactive Brokers'tan geçmiş fiyatları indirebilecek ve verileri seçtiğiniz bir veritabanında saklayabilecektir: MS SQL, MySQL, SQLite, vb. Açık kaynak, ancak daha fazla yayınlayacağım (birkaç gün içinde) yayınlamaya yaklaştığımda blogumdaki bilgiler.

Başka bir seçenek tutulması tüccar olduğunu ... 1 dakika gibi kısa bir ayrıntı ile tarihsel verileri kaydetmek için izin verir ve fiyatları yerel olarak bir metin dosyasında saklar. Temel olarak Yahoo'dan gerçek zamanlı verileri 15 dakikalık bir gecikmeyle indirir. Daha sağlam bir çözüm istediğimden ve verilere ihtiyacımız olan büyük bir okul projesi üzerinde çalıştığım için, kendi veri besleme motorumu yazmaya karar verdim (yukarıda bahsettiğim).

Örnek Kod:
Gerçek zamanlı verilerin nasıl indirileceğini gösteren örnek C # kodu:

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

Veritabanı:
Veritabanı tarafında bir OleDbdoldurmak için CSV dosyasına bir bağlantı kullanıyorum DataSetve sonra gerçek veritabanımı ile güncelliyorum DataSet, temelde Yahoo'dan döndürülen CSV dosyasındaki tüm sütunları doğrudan veritabanınıza ( veritabanınız SQLite gibi CSV verilerinin toplu olarak eklenmesini desteklemiyorsa). Aksi takdirde, verilerin eklenmesi tek astarlıdır ... CSV'yi veritabanınıza toplu olarak ekleyin.

URL'nin biçimlendirilmesi hakkında daha fazla bilgiyi şu adreste bulabilirsiniz: http://www.gummy-stuff.org/Yahoo-data.htm


keşke bunu daha önce bulsaydım.
ojblass

Bu aslında önerdiğiniz gibi gerçek zamanlı veriler sağlıyor mu? Sayfada, bu parametre "k1" var, ama son kontrol ettiğimde hala biraz gecikme var.
Antony

@ Çoğu zaman bir çeşit gecikme var, bu yüzden gecikmelere ne kadar toleranslı olduğunuza bağlı. Yahoo, gerçek zamanlı veri sağladıklarını söylüyor, ancak kesinlikle tüm işaretçiler için değil. Gerçek zamanlı olmayan bantlar 15 dakikaya kadar ertelenir. Borsada ortak bir sunucu alsanız bile, STILL "biraz gecikme" olacaktır . Peki, ne tür bir gecikmeye tahammül etmek istersiniz?
Kiril

Güvenilir değil. Söylesene, neden mesela şu anda bu işi yapmaz: real-chart.finance.yahoo.com/... dan kullanılan finance.yahoo.com/q/...
mmm

9

NASDAQ, her sembol için 10 yıllık geçmiş EOD verileri sunar

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

Bu verileri indirme işlemini otomatikleştirebilirsiniz.


Güzel bir kaynak. İstek sistemini değiştirdiler, bu yüzden şimdi tüm talepler JS ile işleniyor (örn. Nasdaq.com/symbol/aapl/historical ). Otomatikleştirmenin bir yolu var mı?
Anton Tarasenko

Evet, otomatikleştirmek mümkündür. Telerik gibi bir dinleyicisi kullanmanız ve verilerin nasıl elde edildiğini görmeniz gerekir (POST aracılığıyla). Gönderi değişkenlerini doğru gönderdiğiniz sürece verileri almalısınız.
Nick_F

1
Bu hala mevcut mu? Gün içi veri içeriyor mu?
Lee

8

Hayatta kalma önyargısız veriler için bulduğum tek güvenilir kaynak QuantQuote'tur ( http://quantquote.com )

Veriler, geçmiş stok verilerine bağlanan dakika, saniye veya kene çözünürlüğünde gelir .

Yukarıda kibot için bir öneri vardı. Onlardan satın almadan önce hızlı bir google arama yapardım, kibot veri kalitesi sorunları hakkında uyarılarla bunun gibi birçok yayın bulacaksınız . Aynı zamanda hayatta kaldıkları varsayılan önyargısız sp500'ün 14 yıl boyunca sadece 570 sembolü olduğunu söylüyor. Bu neredeyse imkansız, sp500 ayda 1-2 sembolle değişiyor ....


3
kibot'un sadece 3 ücretsiz sembolü vardır. gerisi ödemek zorunda! o sadece reklam yapıyor
sıçrayanHippo

quantquote'un ücretsiz günlük verileri belgelenmemiştir: csv dosyalarında sütun başlığı ve herhangi bir belge yoktur.
kullanıcı443854

belgeler var, biçim temelde dakika çözünürlük veri kümeleriyle aynı.
kullanıcı788171

quantquote.com verilerinde birçok hata var
Ivelin

1998'den beri IBM için ücretsiz veri sunuyorlar. Benim için yeterince iyiydi. Sıkıştırmayı test etmek için sadece bir sembole ihtiyacım vardı: kibot.com/buy.aspx
Sergei Rodionov

7

Ne yazık ki, ücretsiz olan tarihi senedi verilerinin gelmesi zordur. Artık opentick öldü, başka bir sağlayıcı bilmiyorum.

Daha önceki bir yaşamda, otomatik bir ticaret sistemine sahip bir hedgefund için çalıştım ve geçmiş verilerini bolca kullandık.

Kaynağımız için TickData kullandık. Fiyatları makul ve veriler ikinci saniyenin altında bir çözüme sahipti.


6

Kibot.com'dan 12 yıllık gün içi verileri satın aldık ve kaliteden oldukça memnun kaldık .

Depolama gereksinimleri için: Tüm ABD hisse senetleri için 12 yıllık 1 dakikalık veri (8000'den fazla sembol) yaklaşık 100 GB'dir.

Tick-by-tick veri durumu ile biraz farklıdır. Yalnızca zaman ve satış kaydederseniz, bu tüm ABD hisse senetleri için ayda yaklaşık 30 GB veri olur. Alış / satış değişikliklerini işlemlerle birlikte depolamak istiyorsanız, ayda yaklaşık 150 GB bekleyebilirsiniz.

Umarım bu yardımcı olur. Size yardımcı olabileceğim başka bir şey varsa lütfen bize bildirin.


1
KiBot @ boe100'den hala memnun musunuz?
JaredBroad

@ boe100 Hem düzeltilmiş hem de düzeltilmemiş fiyatları var mı? Beta ve deltaları var mı?
user443854

Hem düzeltilmiş hem de düzeltilmemiş veriler mevcuttur. Verilerinizi bir HTTP API kullanarak güncellemek veya günlük olarak FTP sunucusundan yeni arşivler indirmek mümkündür. Hiçbir beta veya delta hesaplanmaz.
boe100

@ boe100 verilerinizi paylaşabilir misiniz?
Tomasz Waszczyk

2
@Tomasz haha, yorumunuz benim günümü yaptı: D
Corneliu Maftuleac

6

Burada bulduğum, bulduğum bir kaynağı ekleyeyim .

CSV formatında birçok tarihsel stok verisi vardır ve ana sayfasına göre "Carnegie Mellon Üniversitesi Bilgisayar Bilimleri Bölümü'nde Yardımcı Doçent" olan Andy Pavlo tarafından toplanmıştır.


Bu, yeterince geniş bir geçmiş borsa verileri setiyle uğraşmak isteyen herkes için harika.
Ciaran Gallagher

1
Web sayfası aşağı ...
Brethlosze



4

Günlük verileri (çok daha yönetilebilir bir veri kümesi) almak için yahoo kullanabilirsiniz, ancak URL'leri yapılandırmanız gerekir. Bu bağlantıya bakın . Daha az sayıda büyük istekte bulunduğunuz çok sayıda küçük istekte bulunmuyorsunuz. Birçok özgür yazılım bunu kullanır, böylece sizi kapatmamalılar.

EDIT: Bu adam yapar, belki onun yazılım yaptığı aramalara bir göz atabilirsiniz.


ilk başta bu bağlantının umut verici göründüğünü düşündüm, ancak tarihsel verilerin nasıl belirtileceğini bulamıyorum ... hepsi gerçek zamanlı gibi görünüyor. Bir şey mi kaçırıyorum?
rmeador

Haklısın. Ben tarihsel şeyleri yapan yazılım olan birinin başka bir bağlantı ekledim, bu yüzden mümkün olduğunu biliyorum. Belki de yazılımının yaptığı çağrılara bir göz atın.
jimconstable

4

Yahoo, ön ücretsiz verileri almak için en basit seçenektir. Ueckesicle'ın cevabında açıklanan bağlantı bir python kodunda kolayca kullanılabilir, ancak önce tüm işaretleyicilere ihtiyacınız vardır. Bu örnek için NYSE kullanırdım, ancak bu farklı borsalar için de kullanılabilir.

Aşağıdaki komut dosyasıyla tüm şirket kodlarını indirmek için bu wiki sayfasını kullandım (çok yetenekli bir Pythonist değilim, bu kod çok verimli değilse özür dilerim):

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

Her bir senedi indirmek için oldukça benzer bir komut dosyası kullandım:

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

Bu yöntemin en büyük dezavantajının farklı şirketler için farklı verilerin mevcut olduğuna dikkat edin - İstenen tarihlerde (yeni listelenen) mevcut verileri olmayan şirketler size bir 404 sayfası gönderir.

Ayrıca, bu yöntemin yalnızca ön veriler için iyi olduğunu unutmayın - Eğer algoritmanızı gerçekten test etmek istiyorsanız, biraz ödemeniz ve CSIData veya diğerleri gibi güvenilir bir veri tedarikçisi kullanmanız gerekir.


Yine de, küresel isim alanının içine küresel bir açıklama koymak gereksizdir, yine de iyi bir yanıttır.
Luke Taylor

1
Hizmet indir ...
Brethlosze

3

Neden sahte bir borsa Brownian Motion ile modellenmiyor?

Bunu yapmak için bol miktarda kaynak. Uygulaması kolaydır.

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


1
:-) Daha gerçekçi hale getirmek için, Kesirli Brown hareketi yaratmanız gerekir ve bu da gerçek değil, en gerçekçi sahte piyasa verileri için de fraktal zaman boyutuna sahip olmanız gerekir ... bunu söylemek için iğneler oldukça karmaşıklaşıyor. Daha iyi sadece gerçek piyasa verileri satın al ...
lukebuehler

Ayrıca stok hareketinin lognormal olmaması da yardımcı olmuyor :)
Paul Milovanov

3

EodData.com kullanıyorum. Onun oldukça terbiyeli fiyat. Ayda 30 dolar için, tüm ABD borsaları için 30 gün 1,5 ve 60 dakikalık çubuk ve diğerlerinin çoğu için 1 yıllık EOD verileri alırsınız.


2

Finans.google.com'u (tırnak işaretleri için) - veya finans.yahoo.com'u tararım.

Her ikisi de tarihsel dahil olmak üzere dünyadaki çoğu exchange için html sayfaları döndürür. Daha sonra, ihtiyacınız olanı çıkarmak için HTML'yi ayrıştırma meselesi.

Bunu geçmişte büyük bir başarıyla yaptım. Alternatif olarak, Perl'i kullanmayı düşünmezseniz - CPAN'da bu işi sizin için yapan birkaç modül vardır - Google / Yahoo'dan alıntılar çıkarmak.

Daha fazla bilgi için Fiyat Teklifi Geçmişine bakın


Perl modüllerinin düşmanı 1, süper kolay veri elde yapmak
Matthew Lock


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.