Ref = = = gtTusare
Sistema: Ubuntu 15.04 Python: 2.7 Paquete de entorno: Anaconda, solo para entretenimiento. ...
Estoy aprendiendo el lenguaje Python recientemente y quiero aprender a operar con acciones. Entonces, después de adquirir algunos conocimientos básicos, planeo hacer algunos ejercicios de demostración relacionados con las acciones. El primer problema a resolver es, por supuesto, la recopilación de datos.
Busqué en línea y leí algunos fragmentos de código de mis amigos. Sé que el formato de los datos de solicitud de API es así: ',' ifeng': 'ifeng.com'}
Get_history_data.py
# -*-Encoding: utf-8 -*-
"""
Creado el jueves , 23 de julio de 2007 09:15:40 2015
@author:jet
"""
Importar constantes como tipos de contacto
Importar pandas como pd
Importar json
Importar urlopen desde urllib2, solicitud
def get_hist_data(código = Ninguno, inicio = Ninguno, fin = Ninguno, ktype = 'D '):
"""
Función:
Obtener datos históricos de transacciones de acciones individuales
-
Entrada:
-
Código: Cadena
Código de stock, por ejemplo: 601989.
Inicio: cadena
Formato de fecha de inicio: cuando AAAA-MM-DD está vacío, tome los datos de fecha más antiguos proporcionados por la API
Fin: cadena
Formato de fecha de finalización: cuando AAAA-MM-DD está vacío, toma los datos del último día de negociación
Ktipo: cadena (por defecto=D, la función unifica automáticamente a mayúsculas)
Tipo de datos D=diario Línea K, W=línea K semanal, M=línea K mensual, 5=5 minutos, 15=15 minutos
30=30 minutos, 60=60 minutos p>
¿Salida? :
-
Marco de datos
Fecha Fecha
Precio de apertura
Precio más alto
Precio de cierre
Precio más bajo
¿Sube o baja Chg?
Sube o baja P_chg
Precio promedio de cinco días de Ma5
p>Precio promedio de 10 días de Ma10
Precio promedio de 20 días de Ma20
Precio promedio de 5 días de VMA5
Promedio de 10 días de Vma
Vma20 promedio de 20 días
Tasa de rotación (este índice no tiene este elemento)
"""?
código = código _ a _ Código API(código . superior())
ktype = ktype.upper()
url=""?
url = get_url(ktipo, código)?
Imprimir(url)
js = json.loads(ping_API(url))
cols = []
if len( js['record'][0])== 14:
cols = ct.
index_day_price_column
En caso contrario:
cols = ct. Columna de precio diario
df = pd. DataFrame(js['record'], columns=cols)
Si ktype en ct. K_TYPE_KEY:
df = df . aplicar map(lambda x:x .replace(u ',',u ' '))
Para columna en columna[1:]:
df[col]=df[col]. astype (tipo de coma flotante)
Si el inicio no es Ninguno:
df = df[df date gt = start]
Si el final no es Ninguno. :
df = df[df . fecha lt;=end]
df = df.set_index('fecha ')
¿Devolver df?
def code_to_APIcode(código):
"""
Función:
Verificar si el código de stock ingresado es correcto. Si es correcto , Devuelve el código de stock utilizado por la API
"""
Imprimir(código)
El código if en ct. INDEX_KEY:
Devolución ct. INDEX _ LIST [código]
En caso contrario:
if len(código)! = 6:
Elevar IOError('¡Error de entrada de código!')
De lo contrario:
Si el código[:1] está en ['5',' 6 '] else 'szs'code, luego devuelve 'shs'code
def get_url(ktype, code):
"""
Función:
Verifique si el tipo de línea k de entrada es correcto. Si es correcto, devuelva la URL.
"""?
Si el tipo k en ct. K_TYPE_KEY:
url = ct. URL del precio diario. PAGE_TYPE['http'],ct. PAGE_DOMAIN['ifeng'],
ct. K_TYPE[ktype], código)
URL de retorno
elif ktype en el tipo de contacto. K_TYPE_MIN_KEY:
url = ct. URL de precio más bajo. PAGE_TYPE['http'],ct. PAGE_DOMAIN['ifeng'],
código,ktype)
url de retorno
de lo contrario:
raise IOError('ktype error de entrada ! ')
Definir ping_API(url):
"""
Función:
Enviar solicitud de datos a la API, si el enlace Si es normal, devuelva datos
"""
text = ' '
Pruebe:
req = request (url)
texto = urlopen(req, tiempo de espera=10).
leer()?
if len(text) lt;15:
¿Raise IOError('¡No hay datos!')?
La excepción es e:
Imprimir(e)
De lo contrario:
Devolver texto
#Test Portal
print(get _ hist _ data(' 601989 ', ' 2015-07-11 ', ' 2015-07-22 '))