2011-12-15 4 views
1

입니다. 그렇다고해서 다른 "어떻게 주식 데이터를 얻으실 수 있습니까?"라는 질문이 아닙니다.OHLC 역사적인 주식 시세를 캐싱하고 업데이트하는 일은

나는 이미 쉽게 사용할 수있는 소스를 많이 찾았으며 심지어 Google Finance, Yahoo, Finviz 등의 CSV 다운로드로 깔끔하게 내보냈습니다.

소프트웨어 필자는 YahooFinance 및 Dirk Eddelbuettel의 Beancounter를 포함한 편리한 도구를 적극적으로 사용합니다.

내 질문에, 특히 누군가가 익숙하지 않은 경우, 단일 재고의 일일 가격을 쿼리 할 때 어떻게 그 모든 기록 데이터가 캐시되는지 (예 : 로컬 텍스트 또는 sqlite 파일로) 확인할 수 있습니까?) 웹을 너무 많이 치는 것을 최소화하고 시간 프레임과 겹치는 반복 쿼리를 빠르게하려면?

현재 실시간 가격에 대한 네트워크 조회가 가능하다면 불가피합니다. 그 자체로 괜찮습니다. 내 pricehist.sh 스크립트는 OHLCV 가격을 N 일 전 재고와 결합합니다.이 또한 쉽게 예를 들어 쉽게 잡을 수 있습니다. 오른쪽 URL + 적절한 GET 변수로 wget하거나 컬하십시오. 에 내가 pricehist.sh 싶습니다 위의 예에서

$ ./pricehist.sh VQT 6 
VQT 2011-12-14 125.50 125.50 124.43 124.49 20360 
VQT 2011-12-13 128.00 128.00 125.28 125.39 24400 
VQT 2011-12-12 127.50 127.50 126.36 126.66 9100 
VQT 2011-12-09 128.00 128.31 127.82 128.14 12100 

:

  • 는 오늘 (있는 경우)에 대한 현재의 시장 데이터를 보면 그렇게 종가 세션하지 않을 경우 이상 실제로 마지막 가격입니다. DONE
  • 해당 시세표의 요청 된 내역이 아직 로컬에 저장되어 있지 않은지 확인하십시오. 그렇지 않은 경우 :
  • VQT 내역을 6 일 후 다시 조회하여 저장하고 완료된 표를 인쇄하십시오. 내 모든 검색에도 불구하고

일을 내가 beancounter을하는 방법을 아직 확실 해요 단순히 출력에 관계없이 포트폴리오의 ... NOT이 출력 한 주식의 OHLCV 테이블 : 대신 펄 금융 모듈을 사용

$ setup_beancounter -l beancounter.stockdata.sqlite 
$ beancounter addstock VQT ACPW 
$ beancounter backpopulate --prevdate '1 month ago' --date 'today' VQT ACPW 
    Adding VQT from 20111114 to 20111214 
    Adding ACPW from 20111114 to 20111214 

$ beancounter dayendreport --prevdate '1 month ago' --date 'today' VQT 
## ..... hoping for OHLCV table of VQT only but get this instead: 
=============================================================================== 
Profit/loss   from 12 Dec 2011 to 14 Dec 2011 abs, rel change 
------------------------------------------------------------------------------- 
Citigroup, Inc. N USD 2690.00 26.90 2605.00 26.05 -85.00 -3.16% 
Exxon Mobil Corpo USD 6039.75 80.53 5958.00 79.44 -81.75 -1.35% 
Google Inc.  USD 15640.75 625.63 15451.75 618.07 -189.00 -1.21% 
International Bus USD 9557.50 191.15 9436.00 188.72 -121.50 -1.27% 
------------------------------------------------------------------------------- 
Grand Total  USD 33928.00   33450.75   -477.25 -1.41% 
=============================================================================== 

, 나는 단지 캐싱을 활성화 할 위치를 보지 못했고 어떤 로컬 데이터 파일이 저장 장치에 사용될 것인가도 모른다. yahoofinance.rb를 호출 할 때마다 오징어 프록시 로그에 웹 트래픽이 표시됩니다. 내 엔진의 여러 처리 단계에서 종종 겹치는 수천 개의 EOD 쿼리가 이러한 웹 검색을 주요 병목 지점으로 만듭니다.

저는이 휠이 이미 발명 된 것으로 생각합니다. MySQL 클라이언트를 사용하여 Ruby, Perl 및 Bash 스크립트에 과세하더라도 모든 RDBMS 백엔드를 사용해야합니다.

비교해 보면, 약 700 개의 기호 각각에 대해 텍스트 파일 만 유지하고 grep, sed 및 awk 만 처리하는 폴란드 증권 거래소는 엄청나게 빠릅니다. 수천주기의 반복에도 불구하고 거의 즉시 반복됩니다. 스크립트 - 그래서 내 소프트웨어의 GPW 교환을위한 일일 판매 전 처리는 몇 시간 만에 완료됩니다.

답변

0

나는 뭔가를 다루고 있습니다.필요에 따라 내가 & 업데이트 주식을 추가 beancounter를 이용할 수 있도록 프로세스를 다시 것, 그래서 다음

Table: stockprices 
# |symbol|date |previous_close|day_open  |day_low   |day_high  |day_close|day_change|bid |ask |volume  
----+------+--------+--------------+----------------+----------------+----------------+---------+----------+------+------+---------- 
1 |C  |20111214|26.9   |26.45   |25.92   |27.19   |26.05 |-0.85  |  |  |68284528 
2 |IBM |20111214|191.15  |189.84   |188.0   |190.28   |188.72 |-2.43  |  |  |5031717 
3 |GOOG |20111214|625.63  |621.49   |612.49   |624.32   |618.07 |-7.56  |617.59|618.95|3892889 
31 |HD |20111214|39.51   |39.45   |38.84   |39.57   |39.14 |-0.37  |  |  |12021824 
32 |IBM |20111213|    |193.46   |190.64   |194.3   |191.15 |   |  |  |5008400 
33 |IBM |20111212|    |193.64   |191.22   |193.9   |192.18 |   |  |  |3796100 
34 |IBM |20111209|    |192.91   |192.4   |194.87   |194.56 |   |  |  |4847900 

, 그 EOD 데이터 이후 다음 SQLite는 파일 Beancounter 사용

이 OHLCV 매일 기록을 가진 테이블을 포함 보고가 부족하거나 나를 위해 일하지 않는, 나는 db에서 직접 당겨 적절한 sqlite 명령을 배우고, 필요한 경우 sed/awk로 출력을 마사지하고 여기에 다시 게시하십시오.

결국 나는 오늘의 라이브 가격 (해당되는 경우) + 캐시 역사적인 종말 기록을 결합한 간단한 pricehist.sh 쿼리가 있어야합니다.

관련 문제