기금넷 공식사이트 - 펀드 투자 - 하이브리드\주식 펀드의 상승 및 하락 추세를 실시간으로 확인할 수 있는 방법이 있나요? 인덱스 펀드와 동일합니다.
하이브리드\주식 펀드의 상승 및 하락 추세를 실시간으로 확인할 수 있는 방법이 있나요? 인덱스 펀드와 동일합니다.
아래 예시로는 주로 주식코드를 사용하겠습니다. 실시간으로 펀드코드로 변경도 가능하니 주의하세요!
Ref===>tushare
시스템: Ubuntu 15.04 Python:2.7 환경 패키지: Anaconda, 오락용...
Python을 배우고 있습니다. 최근에 주식 거래 방법을 배우고 싶어서 기본적인 지식을 익힌 후 주식 관련 데모를 해보고 가장 먼저 해결해야 할 문제는 물론 데이터 수집입니다.
인터넷을 검색하고 친구로부터 일부 코드 조각을 읽었으며 API에서 데이터를 요청하는 형식이 대략 다음과 같다는 것을 알게 되었습니다: ', 'ifeng': 'ifeng.com'} p>
URL_ERROR_MSG = '얻는데 실패했습니다. 네트워크 상태를 확인하세요. 혹은 API 포트 URL이 일치하지 않습니다! '
get_hist_data.py
# -*- 코딩: utf-8 -*-
"""
목에 생성됨 Jul 23 09:15:40 2015
@author: jet
"""
const를 ct로 가져오기
pandas를 다음으로 가져오기 pd
json 가져오기
from urllib2 import urlopen,Request
def get_hist_data(code = None, start = None, end = None, ktype = 'D' ):
"""
기능:
개별 주식의 과거 거래 데이터 가져오기
---------
p>입력:
---------
코드:문자열
예: 601989
start:string
시작 날짜 형식: YYYY-MM-DD. 비어 있으면 API에서 제공하는 가장 빠른 날짜 데이터를 가져옵니다.
end:string
종료 날짜 형식: YYYY-MM-DD. 비어 있으면 최신 거래일 데이터를 가져옵니다.
ktype: 문자열(기본값=D, 함수 내에서 자동으로 대문자로 통합됨) )
데이터 유형 D =일간 K라인, W=주간 K라인, M=월간 K라인, 5=5분, 15=15분
30=30 분, 60=60분?
출력:
---------
DataFrame
날짜 날짜
p>시초가
최고가
종가
최저가
상승 또는 감소?
p_chg 증가 또는 감소
ma5 5일 평균 가격
ma10 10일 평균 가격
ma20 20일 평균 가격
vma5 5일 평균 거래량
vma10 10일 평균 거래량
vma20 20일 평균 거래량
회전율( 색인에 이 항목이 없습니다)
"""?
code = code_to_APIcode(code.upper())
ktype = ktype.upper()
url = ''?
url = get_url (ktype, 코드)?
print(url)
js = json. load(ping_API(url))
cols = []
if len(js['record'][0]) == 14:
cols = ct.INDEX_DAY_PRICE_COLS
그 외:
cols = ct.DAY_PRICE_COLS
df = pd.DataFrame(js['record'], columns=cols)
ct.K_TYPE_KEY에 ktype이 있는 경우:
df = df.applymap(lambda x:x.replace(u',', u''))
for col in cols[1:]:
df[col]=df [col].astype(float)
start가 None이 아닌 경우:
df = df [df.date >= start]
end가 None이 아닌 경우:
df = df[df.date <= end]
df = df.set_index('date')
df를 반환하시겠습니까?
def code_to_APIcode(code):
"""
함수 :
입력한 주식 코드가 맞는지 확인하고, 맞으면 사용된 API에 해당하는 주식 코드를 반환합니다.
"""
print(code)
ct.INDEX_KEY에 코드가 있는 경우:
ct.INDEX_LIST [코드]를 반환합니다.
else:
if len(code) != 6:
IOError('코드 입력 오류!')
else:
코드[:1]인 경우 'sh%s'%code를 반환합니다. ['5', '6'] else 'sz%s'%code
def get_url(ktype, code):
"""
함수 :
입력한 K-line type이 맞는지 확인하고 맞으면 url을 반환
"""?
if ktype in ct .K_TYPE_KEY:
url = ct.DAY_PRICE_URL % (ct.PAGE_TYPE['http'], ct.PAGE_DOMAIN[ 'ifeng'],
ct.K_TYPE[ktype], 코드 )
URL 반환
ct.K_TYPE_MIN_KEY의 elif ktype:
url = ct.MIN_PRICE_URL % (ct.PAGE_TYPE['http'], ct.PAGE_DOMAIN ['ifeng'],
code, ktype)
URL 반환
else:
IOError('ktype 입력 오류 발생! ')
def ping_API(url):
"""
기능:
링크가 있는 경우 API에 데이터 요청 보내기 정상이면 데이터가 반환됩니다.
"""
text = ''
try:
req = Request(url )
text = urlopen(req,timeout=10).read()?
if len(text) < 15:
IOError('no data!')?
예외는 e:
print(e)
else:
텍스트 반환
으로 제외합니다.#테스트 입장
print(get_hist_data('601989','2015-07-11','2015-07-22' ))