El valor de mercado mínimo de reservas n seleccionados, csv de salida

factor de pequeña capitalización es muy importante estrategia de selección de valores, el punto principal es que las acciones de pequeña capitalización aumentaron generalmente será relativamente grande. 
Los métodos específicos se pueden realizar: cada fin de semana (o al final de cada mes) capitalización de mercado mínimo de 10 acciones, comprar la próxima semana (o mes siguiente) capital medio, a la semana siguiente (o el mes que viene) y de vuelta 10, y así sucesivamente.
Esta sección de código puede generar todos los últimos datos de la transacción, clasificado por capitalización de mercado, también puede establecer el valor de mercado mínimo de reservas n seleccionados (excluyendo ya ST, placa de tope, la acción de salida).
Ideas: sitio web Sina arrastrándose partir de los datos recientes de comercio para todas las poblaciones, calificadas por capitalización de mercado, guardado como csv, para la compra y venta de referencia.
urllib.request de importación urlopen # python reptil propia biblioteca 
de importación PANDAS como Pd 
de fecha y hora de importación de fecha y hora 
de importación Tiempo 
de importación Re # biblioteca de expresiones regulares 
biblioteca de OS # sistema de importación 
de importación de base de datos JSON JSON que viene con Python # 
pd.set_option ( 'expand_frame_repr' , False) # cuando la columna no es demasiado envolver 
pd.set_option ( 'display.max_rows', 500) # pantalla hasta el número de filas de datos 

# ===== funciones: obtener los datos desde una página web, la página devuelta al arrastre contenido 
get_content_from_internet DEF (url, max_try_num = 10, sleep_time = 5): 
    "" " 
    el uso de Python viene función urlopen, los datos de agarre de una página web 
    : param url: URL para que aparezca datos rastreados 
    : param max_try_num: tratando de arrastrarse hasta número 
    sleep_time param:: después de cada error al obtener el tiempo de pausa 
    : vuelta: La vuelta al contenido de la web de rastreo 
    "" " 
    get_success = false # rastreo correcto al contenido 
    # rastreos
    i en para (max_try_num) la gama: 
        el intento: 
            contenido = urlopen (url = url, timeout = 15) .read () # construido utilizando la biblioteca de Python para obtener información de la red 
            get_success = true # contenido rastreado con éxito a 
            ROMPER 
        la excepción AS E Excepción: 
            print ( 'los datos de rastreo de errores, tiempos:', i + 1, 'contenido de error:', E) 
            del time.sleep (sleep_time) 

    # determinan rastreos de éxito 
    iF get_success: 
        contenido de retorno de 
    la persona: 
        el aumento de un ValueError ( 'utilizar urlopen arrastrarse constantemente el error de datos de la web, tratar de llegar al límite superior, detenga el programa, por favor, compruebe el problema tan pronto como sea posible') 

# ===== función: Obtiene el material especificado de Sina (disponible solamente, puede ser exponencial) las operaciones recientes días de datos, organizados en trama de datos determinado formato, vuelva a esta trama de datos 
DEF get_today_data_from_sinajs (code_list): 
    "" " 
    devuelva una cadena de los últimos datos relacionados con el comercio de acciones
    Obtener los datos de saldos desde esta dirección: http: //hq.sinajs.cn/list=sh600000,sz000002,sz300001 
    URL normales: HTTPS: //finance.sina.com.cn/realstock/company/sh600000/nc.shtml, 
    : PARAM code_list: lista de cadena stock símbolo, una pluralidad puede, por ejemplo [sh600000, sz000002, sz300001], 
    : vuelta: la vuelta de un depósito de datos almacenados trama de datos 
    "" " 
    # Construcción URL 
    URL =" http: //hq.sinajs. . cn / list = "+" , "join (code_list) # code_list primera coma en el elemento de conexión, precedido por otro HTTP: ...... 

    # obtener los datos 
    de contenido = get_content_from_internet (URL) 
    contenido = content.decode ( 'gbk') # gbk con la decodificación, la decodificación puede ser chino; antes de decodificar es dytes, se decodifica STR 

    # convertir los datos en trama de datos 
    de contenido = content.strip () # retira antes y después del espacio de texto, retorno de carro 
    data_line = contenido .split ( '\ n') # cada fila es un archivo de datos, genera una lista de
    data_line = [i.replace ( 'var hq_str_ ', '') .split ( '') para i en data_line] # retirado de la parte frontal de cada fila de los datos redundantes, y de nuevo dividida, formando dos capas del anuncio 
# df = pd. trama de datos (data_line, dtype = 'float ') # dtype = 'float' puede generar datos numéricos 
    df = pd.DataFrame (data_line) # donde sólo generan DF, gire en el siguiente flotador 

    # trama de datos para organizar 
    df [0] = df [0] .str.split ( '= ' ") # df [0] es tomar el" "la columna 0 
    DF [ 'stock_code'] = DF [0] .str [0] .str.strip () 
    DF [ ' stock_name '] = DF [0] .str [-1] .str.strip () 
    DF [' candle_end_time '] = DF [30] +' '+ DF [31 es] mercado # K-línea stock, es generalmente a cuando K-línea con un tiempo final llamado 
    DF [ 'candle_end_time'] = pd.to_datetime (DF [ 'candle_end_time']) 
    rename_dict = {1:. 'Open', 2: 'pre_close' ,. 3: 'Cerrar' ,. 4: ' alta '5:'bajo', 6: 'buy1', 7: 'sell1',
                   8: 'volumen', 9: 'cantidad', 32: 'status'} # sí mismos a los datos comparativos, no será nuevo descubrimiento; 10 a la quinta velocidad 29 está comercialización de datos de handicap 
    # femoral en el que la unidad de volumen, la unidad de cantidad meta 
    df.rename (columnas = rename_dict, InPlace = true) 
    # seleccionado columnas requieren transforman en un flotador 
    obtener datos recientes de comercio para todas las poblaciones de la URL del sitio web Sina, página por página 
    df [[ 'abierto', 'alto ', 'bajo', 'cerca', 'pre_close', 'cantidad', 'volumen', 'buy1', 'sell1']] \ 
    = Df [[ 'abierto', 'alto', 'bajo', 'cerca', 'pre_close', 'cantidad', 'volumen', 'buy1', 'sell1']]. Astype ( 'flotar' )
    df [ 'status'] = df [' status '] str.strip (' "; ') # en la columna de estado, remove redundante ''; 'carácter 

    df = df [[' stock_code '' stock_name', 'candle_end_time', 'Open', 'Alto', 'bajo', 'Cerrar', 'pre_close', 'cantidad', 
             'Volumen', 'buy1', 'sell1', 'Estado']] # redefinir el orden de las columnas 

    df retorno 

# ===== función: para obtener todos los datos de las acciones recientemente sus actividades comerciales de Sina, un retorno a DF 
DEF get_all_today_stock_data_from_sina_marketcenter (): 
    "" " 
    http://vip.stock.finance.sina.com.cn/mkt / # stock_hs_up 
    : retorno: el retorno de la trama de datos de almacenamiento de datos 
    " "" 

    === datos # URL 
    raw_url = 'http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php / Market_Center.getHQNodeData? page =% s'\ 
              '& num = 80 y Ordenar símbolo = y asc = 1 & nodo = hs_a símbolo & = & _ s_r_a = sort' 
    page_num = 1 

    trama de datos # === almacenar datos 
    all_df = pd.DataFrame () 

    # === Get reciente día de negociación de la fecha índice Shanghai . Este código hay vídeo en el plan de estudios, a continuación, forman en 
    df = get_today_data_from_sinajs (code_list = [ 'sh000001']) 
    sh_date = df.iloc [0] [ 'candle_end_time']. Date () en el índice compuesto de Shanghai recientemente el día de comercio # 

    # === página por página de recorrido, obtener datos de saldos 
    del while True: 
        # constructo url 
        url = raw_url% (page_num) 
        Imprimir ( 'para iniciar la extracción páginas:', page_num) 

        # obtener los datos 
        de contenido = get_content_from_internet (url) 
        contenido = contenido .decode ( 'GBK') 

        # determina si el número de páginas está vacía 
        si 'nulo' en contenido: 
            impresión ( 'páginas que debe rastrear hasta el final, se sale del bucle') 
            PAUSA 

        # expresiones regulares, unas frases clave 
        content = re.sub (r '(< = {| ?,) ([a-zA-Z ] [a-za-Z0-9] *) (? = :) 'R ^' "\. 1"', contenido) 
        convertir # dict los datos a formato de 
        contenido = json.loads (contenido) # en este momento, la conversión de contenido para la Lista, en la que el elemento es dict 

        # trama de datos convirtiendo los datos en el formato 
        DF = pd.DataFrame (contenido, DTYPE = 'un flotador') 
        # cotejo de datos 
        # cambio de nombre; el total de unidades de valor de mercado millón de unidades de valor en circulación Wan yuanes, unidad de volumen de acciones diarias, unidades de rotación de miembros cantidad 
        rename_dict = { 'símbolo': 'código de valores', 'nombre': 'nombre de archivo', 'abierta': 'precio de apertura', 'alto': ' el precio más alto '' bajo ':' más bajo '' comercio ':' precio de cierre', 
                       'Solución ':' antes de que el precio de cierre','Volumen': 'volumen', 'cantidad': 'rotación', 'mktcap': 'valor total de mercado', 'NMC': 'valor de caudal'}
        df.rename (columnas = rename_dict, inplace = True) # ninguna asignación de columnas, o para retener los nombres de columna originales, que no reduce el número de columnas 
# ajuste de parámetros === 
        # fecha de la transacción add 
        # df [ 'fecha de la operación'] = pd.to_datetime (datetime.now () .Fecha de cursos de vídeo # ()) usados en el código de banco 
        df [ 'fecha de la operación'] = pd.to_datetime (sh_date) # se utiliza en el curso está en la línea de código en el video, y ahora en la línea de código, el programa más robusto
        # Df en el campo, que comprende además: mktcap (valor de mercado total), NMC (valor de flujo), por (relación de PE, PE similar), Pb (PB), turnoverratio (volumen de negocios) 
        # columnas necesarias para tomar 
        df = df [[ 'ticker', 'nombre de recurso compartido', 'fecha de la operación', 'precio de apertura', 'precio más alto', 'precio más bajo', 'el precio de cierre', 
                 'precio de cierre anterior', 'volumen' 'volumen de negocios', 'valor de mercado total', 'valor de flujo']] 


        # datos combinados 
        all_df = all_df.append (Df, ignore_index = true) 

        # número de páginas hecho +1 
        el page_num +. 1 = 
        la time.sleep (. 1) 

    # == = el día de la placa de tope borrar, este código no está en el curso del vídeo, a continuación, hacer el 
    all_df = all_df [all_df [ 'precio de apertura'] - 0> 0,00001] 
    all_df.reset_index (gota = True,= True InPlace) 

    # === resultados de retorno 
    vuelven all_df 

# El siguiente programa principal 
select_stock_num = 10 # stock número 

# conseguir hoy en día todos los datos de saldos 
df = get_all_today_stock_data_from_sina_marketcenter ()
 
# función se ha eliminado desde el día en el plato stock parada, aquí y luego borrar el archivo de salida ST 
df = df [df [ 'Nombre de archivo' .str.contains] ( 'ST') == false] # delete ST de la 
gl = df [df [ 'nombre de papel'] .str.contains ( 'retirada') == false] # eliminar el saliente de la 

df [ 'ranking'] = df [ 'capitalización'] .rank () # ranking de mercado total 
df.to_csv (R'C: \ Users \ Lori \ Desktop \ stockinvest \ Project1 \ data \ djl_data \ basado en el valor de mercado actual de la población total de \ all_stock_rank.csv ' 
          encoding =' GBK 'el modo =' w 'índice =) falsos 
df.sort_values (de =' capitalización de mercado 'inplace = true) # acuerdo con la capitalización total de mercado de ordenar 

df_select = df [[' fecha de negociación '' Stock código '' nombre de archivo '' valor de mercado total '' valor de flujo '' ranking '' el precio de cierre ']] 
df_select df_select.iloc = [: select_stock_num] 
df_select.to_csv (R'C:\ Users \ Lori \ Desktop \ stockinvest \ Project1 \ data \ djl_data \ basado en el valor de mercado actual de la población total de \ select_stock.csv ' 
          encoding =' GBK 'MODE =' W', índice = false)

  

 

Supongo que te gusta

Origin www.cnblogs.com/djlbolgs/p/12541213.html
Recomendado
Clasificación