источник исторических данных запаса [закрывается]

Не используйте строки c, используйте std :: string. Не используйте массивы, используйте std :: array или std :: vector или аналогичный контейнер. Это наверняка решит вашу проблему.

class SportShoe  {
private:
    struct nodeSport {
        int ShoeIDList;
        std::string BrandShoeList; 
        float PriceShoeList; 
        nodeSport *last;
    };
    nodeSport *first = NULL; 

    struct Shoe  {
        int ShoeID;
        std::string BrandShoe; 
        float PriceShoe; 
    };
    std::array<Shoe, SIZE> MySepatu;

public:
    void AddSportShoe();
};

void SportShoe::AddSportShoe() {   
    std::array<SportShoe, SIZE> MySepatu;
    int numOfShoe = 0;
    nodeSport *tempShoe1; 

    while (numOfShoe < SIZE){
        cout << "Please enter the Shoe ID : (eg. 23210) " << endl;
        cin >> SportShoe::MySepatu[numOfShoe].ShoeID;

        cout << "Please enter the Shoe Brand: (eg. Adidas) " << endl;
        cin.sync();
        std::getline(cin, SportShoe::MySepatu[numOfShoe].BrandShoe); 

        cout << "Please enter the price of the Shoe : (eg. RM123.22) " << endl;
        cin >> SportShoe::MySepatu[numOfShoe].PriceShoe;
        cout << endl;

    //passing the value from 'MySepatu' to 'tempShoe'
        SportShoe::MySepatu[numOfShoe].ShoeID = tempShoe1->ShoeIDList;
        SportShoe::MySepatu[numOfShoe].BrandShoe = tempShoe1->BrandShoeList;
        SportShoe::MySepatu[numOfShoe].PriceShoe = tempShoe1->PriceShoeList;

   //i do some dummy to see what stored in tempShoe1
       cout << "ID =>> " << tempShoe1->ShoeIDList << endl;
       cout << "Brand =>> " << tempShoe1->BrandShoeList << endl;
       cout << "Price =>> " << tempShoe1->PriceShoeList << endl;
    }

    while (numOfShoe >= SIZE-1){
       cout << ">> List is already full !! <<"; 
       system("PAUSE");
       MenuSportShoe();
    }
}
238
задан Community 23 May 2017 в 01:55
поделиться

9 ответов

Вы можете использовать Yahoo для получения ежедневных данных (гораздо более управляемый набор данных), но вы должны структурировать URL-адреса. Смотрите эту ссылку . Вы не делаете много маленьких запросов, вы делаете меньше больших запросов. Многие бесплатные программы используют это, чтобы они не закрывали вас.

РЕДАКТИРОВАТЬ: Этот парень делает это, может быть, вы можете посмотреть на звонки, которые делает его программное обеспечение.

4
ответ дан jimconstable 23 November 2019 в 03:22
поделиться

К сожалению, бесплатные исторические данные о тикерах трудно найти. Теперь, когда opentick мертв, я не знаю ни одного другого провайдера.

В прошлой жизни я работал в хедж-фонде, который имел автоматизированную торговую систему, и мы широко использовали исторические данные.

Мы использовали TickData для нашего источника. Их цены были разумными, и данные имели второе разрешение.

7
ответ дан Alan 23 November 2019 в 03:22
поделиться

A набор данных по каждому символу на NASDAQ и NYSE за второй или минутный интервал будет огромным .

Предположим, что на обеих биржах есть в общей сложности 4000 компаний (это, вероятно, на очень низкая сторона, поскольку на NASDAQ есть более 3200 компаний . Для данных с вторым интервалом, если предположить, что в день торгуют 6,5 часов, это даст вам 23400 точек данных в день на компанию, или около 93 600 000 точек данных в целом за этот один день. Предполагая 200 торговых дней в году, это около 18 720 000,

16
ответ дан matt b 23 November 2019 в 03:22
поделиться

Я бы просканировал financial.google.com (цитаты) или financial.yahoo.com.

Оба они будут возвращать html-страницы для большинства бирж по всему миру, включая исторические. Затем остается лишь разобрать HTML, чтобы извлечь то, что вам нужно.

Я делал это в прошлом с большим успехом. В качестве альтернативы, если вы не против использования Perl - на CPAN есть несколько модулей, которые проделали эту работу за вас, то есть извлекли цитаты из Google / Yahoo.

Подробнее см. История цитат

2
ответ дан 23 November 2019 в 03:22
поделиться

Я знаю, что вы хотели "бесплатно", но я бы серьезно подумал о получении данных с csidata.com примерно за 300 долларов в год, если бы я был вами.

Это то, что yahoo использует для предоставления своих данных.

Он поставляется с приличным API, и данные (насколько я могу судить) очень чистые.

Вы получаете 10-летнюю историю, когда подписываетесь, а затем потом - еженощные обновления.

Они также позаботятся о всевозможных неприятных вещах, таких как сплиты и дивиденды. Если вы еще не открыли для себя радость очистки данных, вы не поймете, насколько она вам нужна, пока в первый раз ваша ATS (автоматизированная торговая система) не решит, что некоторые акции действительно очень дешевы, только потому, что они разделились на 2 : 1 и вы не заметили.

45
ответ дан 23 November 2019 в 03:22
поделиться

Мой бывший проект собирался использовать бесплатно загружаемые данные из EODData .

1
ответ дан 23 November 2019 в 03:22
поделиться

Мы приобрели внутридневные данные за 12 лет у Kibot.com и вполне довольны качеством.

Что касается требований к хранению: 12 лет 1-минутных данных для всех акций США (более 8000 символов) составляет около 100 ГБ.

При использовании данных по тикам ситуация мало чем отличается. Если фиксировать только время и продажи, то это будет около 30 ГБ данных в месяц для всех акций США. Если вы хотите хранить изменения бид / аск вместе со сделками, вы можете ожидать около 150 ГБ в месяц.

Надеюсь, это поможет. Пожалуйста, дайте мне знать, если я могу ещё чем-нибудь помочь.

.
6
ответ дан 23 November 2019 в 03:22
поделиться

Этот ответ больше не точен, поскольку подача Yahoo перестала существовать

, используя подход CSV Yahoo, вы также можете получить исторические данные! Вы можете обратить вспять инженер следующего примера:

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

По сути:

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

полный список параметров:

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
94
ответ дан 23 November 2019 в 03:22
поделиться

Введение:
На Yahoo вы можете получить исторические цены EOD (конец дня) или цены в реальном времени. Цены на EOD удивительно просто скачать. См. мой блог для объяснения того, как получить данные, и примеров кода C #.

Я занимаюсь написанием «механизма» подачи данных в реальном времени, который загружает и хранит цены в реальном времени в базе данных. Первоначально движок сможет загружать исторические цены из Yahoo и Interactive Brokers, и он сможет хранить данные в базе данных по вашему выбору: MS SQL, MySQL, SQLite и т. Д. Это открытый исходный код, но я опубликую больше информация в моем блоге, когда я буду приближаться к его выпуску (в течение пары дней).

Другой вариант - eclipse trader ... он позволяет записывать исторические данные с точностью до 1 минуты и сохраняет цены локально в текстовом файле. Он в основном загружает данные в реальном времени из Yahoo с 15-минутной задержкой. Поскольку мне нужно было более надежное решение, и я работаю над большим школьным проектом, для которого нам нужны данные, я решил написать свой собственный механизм подачи данных (о котором я упоминал выше).

Пример кода:
Вот пример кода C #, который демонстрирует, как загружать данные в реальном времени:

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

База данных:
На стороне базы данных я использую подключение OleDb к CSV файл для заполнения DataSet , а затем я обновляю свою фактическую базу данных с помощью DataSet , это в основном позволяет сопоставить все столбцы из CSV-файла, возвращенного Yahoo, непосредственно в вашу базу данных (если ваша база данных не поддерживает пакетную вставку данных CSV, например SQLite).В противном случае вставка данных является однострочным ... просто пакетно вставьте CSV в свою базу данных.

Подробнее о форматировании URL-адреса можно прочитать здесь: http://www.gummy-stuff.org/Yahoo-data.htm

16
ответ дан 23 November 2019 в 03:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: