¿Hay alguna forma de comprobar las tendencias de subida y bajada de los fondos de acciones híbridas en tiempo real? Lo mismo que los fondos indexados.
Utilizaré principalmente el código de acciones como ejemplo a continuación. También puedes cambiarlo a un código de fondo. ¡Presta atención en tiempo real!
Ref===>tushare
Sistema: Ubuntu 15.04 Python:2.7 Paquete de entorno: Anaconda, solo para entretenimiento...
Estoy aprendiendo Python Recientemente, quiero aprender a negociar con acciones, así que después de aprender algunos conocimientos básicos, planeo hacer algunas demostraciones relacionadas con las acciones para practicar. El primer problema a resolver es, por supuesto, la recopilación de datos.
Busqué en Internet y leí algunos fragmentos de código de amigos y descubrí que el formato para solicitar datos de la API es más o menos así: ', 'ifeng': 'ifeng.com'} p>
URL_ERROR_MSG = 'Error al obtener, verifique el estado de la red o la URL del puerto API no coincide. '
get_hist_data.py
# -*- codificación: utf-8 -*-
"""
Creado el jueves 23 de julio 09:15:40 2015
@autor: jet
"""
importar constante como ct
importar pandas como pd
importar json
desde urllib2 importar urlopen,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
--------
p>Entrada:
--------
código:cadena
Código de stock como: 601989
start:string
Formato de fecha de inicio: AAAA-MM-DD Si está vacío, obtenga los datos de fecha más antiguos proporcionados por la API
end:string.
Formato de fecha de finalización: AAAA-MM-DD. Si está vacío, obtiene los datos del último día de negociación
ktipo: cadena (predeterminado=D, unificado automáticamente a mayúsculas dentro de la función). )
Tipo de datos D = Línea K diaria, W= Línea K semanal, M= Línea K mensual, 5=5 minutos, 15=15 minutos
30=30 minutos, 60=60 minutos?
Salida:
--------
DataFrame
fecha fecha p>
precio de apertura abierto
precio más alto
precio de cierre de cierre
precio más bajo bajo
¿aumento o disminución de cambio?
p_chg aumentar o disminuir
ma5 precio promedio de 5 días
ma10 precio promedio de 10 días
ma20 precio promedio de 20 días
vma5 volumen promedio de 5 días
vma10 volumen promedio de 10 días
vma20 volumen promedio de 20 días
tasa de rotación de facturación ( el índice no tiene este elemento)
"""?
code = code_to_APIcode(code.upper())
ktype = ktype.upper()
url = ''?
url = get_url (ktipo, código)?
imprimir(url)
js = json. cargas(ping_API(url))
cols = []
if len(js['record'][0]) == 14:
cols = ct.INDEX_DAY_PRICE_COLS
else:
cols = ct.DAY_PRICE_COLS
df = pd.DataFrame(js['record'], columnas=cols)
si ktype en ct.K_TYPE_KEY:
df = df.applymap(lambda x:
x.replace(u',', u''))
for col in cols[1:]:
df[col]=df[col].astype(float )
si el inicio no es Ninguno:
df = df [df.date >= inicio]
si el final no es Ninguno:
df = df[df.date <= end]
df = df.set_index('fecha')
¿devolver df?
def code_to_APIcode( code):
"""
Función:
Verificar si el código de stock ingresado es correcto. Si es correcto, devolver el código de stock correspondiente a la API
"""
imprimir(código)
si código en ct.INDEX_KEY:
devolver ct.INDEX_LIST[código] p>
else:
if len(código) != 6:
raise IOError('¡error de entrada de código!')
else:
devuelve 'sh%s'%code si código[:1] en ['5', '6'] else 'sz%s'%code
def get_url(ktype, code) :
"""
Función:
Verificar si el tipo de línea K ingresado es correcto. Si es correcto, devolver la URL
"" "?
si ktype en ct.K_TYPE_KEY:
url = ct.DAY_PRICE_URL % (ct.PAGE_TYPE['http'], ct.PAGE_DOMAIN['ifeng '], p>
ct.K_TYPE[ktype], código)
url de retorno
elif ktype en ct.K_TYPE_MIN_KEY:
url = ct.MIN_PRICE_URL % (ct.PAGE_TYPE['http'], ct.PAGE_DOMAIN['ifeng'],
código, ktype)
URL de retorno
else:
p>raise IOError('¡error de entrada ktype!')
def ping_API(url):
"""
Función:
Enviar una solicitud de datos a la API y devolver datos si el enlace es normal
"""
text = ''
intenta:
req = Solicitud(url)
texto = urlopen(req,timeout=10).read()?
if len (texto) < 15:
raise IOError('¡no hay datos!')?
excepto excepción como e:
print(e)
else:
devolver texto
#Entrada de prueba
print(get_hist_data('601989','2015-07-11','2015- 07-22'))