2017-01-17 2 views
1
import time 
import argparse 
import pandas as pd 
from nsetools import Nse 

nse = Nse() 
t = time.time() 
FILE_LOCATION = '' # csv file, blank because path not relevant to others 
df = pd.read_csv(FILE_LOCATION) 

Contenu du fichier CSV:

Instrument,Qty,Avg buy price 
APLAPOLLO,3,949.95 
AVANTIFEED,6,554.55 
BALAMINES,9,337.72 
BALMLAWRIE,4,258.5 
BANCOINDIA,15,217 
DCMSHRIRAM,12,261.4 
GHCL,12,267.2 
GIPCL,27,101.95 
JAMNAAUTO,15,182.1 
JBCHEPHARM,15,344.85 
KEI,24,143.95 
KPRMILL,6,569.65 
KRBL,9,312 
MPHASIS,6,533.95 
SHEMAROO,2,413.25 

code:

# using argparse to provide options for obtaining closePrice or buyPrice1 
# of stocks 
parser = argparse.ArgumentParser(description='Stock Quote fetcher') 
parser.add_argument('-r', '--realtime', help='Obtain realtime stock\ 
        quotes', action='store_true') 
args = parser.parse_args() 


def get_closing(stock): 
    """Function to obtain closePrice or buyPrice1 of stocks""" 
    if args.realtime: 
     return nse.get_quote(stock)['buyPrice1'] 
    else: 
     return nse.get_quote(stock)['closePrice'] 


# calculating current value of investment 
current_value = sum(get_closing(row[0]) * row[1] for index, row in 
        df.iterrows()) 

print(current_value) 
print("Completed in ", time.time() - t) 

Actuellement, les cours des actions sont obtenues en utilisant successivement l'expression du générateur. Cela prend 18-25 secondes pour calculer la valeur actuelle de l'investissement. Existe-t-il un moyen d'obtenir ces prix tous ensemble en parallèle et de calculer la valeur actuelle de l'investissement?Obtenir les cours des actions en parallèle en utilisant nsetools à partir des données csv

+0

problème peut être 'nse' qui a besoin de temps pour obtenir des données. Peut-être qu'il peut obtenir beaucoup de stocks en une seule demande. – furas

+0

Fonctionnalités fournies par nsetools pour obtenir les prix de plusieurs stocks en une seule requête. – Dana

+0

Parallélisez le processus, ne savez pas combien de connexions pourriez-vous ouvrir avec nse. mais vous pouvez bifurquer dans le processus N qui ne demande qu'une seule chaussette et l'enregistrer dans la csv comme colonne supplémentaire, attendre que tout finisse, puis faire la somme. – Mquinteiro

Répondre

1

Je fourchue le dépôt here, où je travaille sur le déplacement de l'API nsetools à une approche fondée sur DataFrame et l'utilisation de threads pour réduire le temps qu'il faut pour aller chercher plusieurs citations.

La dernière version à ce jour v1.1.0 dispose actuellement de toutes ces fonctionnalités. Cependant, la compatibilité python2 n'est pas garantie. Si vous souhaitez demander d'autres fonctionnalités, assurez-vous de créer un nouveau problème. Je vais travailler dessus et continuer à mettre à jour le repo.