0
votes

Stockage des valeurs à partir d'une liste et d'un dictionnaire

J'ai un problème avec les trois dernières lignes de mon code. J'ai une liste filtrée de l'API d'alpaga (Effectable_Marginable_Assets). J'ai ensuite un dictionnaire existant de tickers (symbol_list) et souhaitez stocker uniquement les tickers qui sont dans la liste filtrée et le dictionnaire.

[Asset({   'class': 'us_equity',
    'easy_to_borrow': True,
    'exchange': 'NASDAQ',
    'id': '8ccae427-5dd0-45b3-b5fe-7ba5e422c766',
    'marginable': True,
    'name': 'Tesla, Inc. Common Stock',
    'shortable': True,
    'status': 'active',
    'symbol': 'TSLA',
    'tradable': True})]
[Asset({   'class': 'us_equity',
    'easy_to_borrow': True,
    'exchange': 'NYSE',
    'id': '81f61b55-adee-402e-87d4-7b49579e2338',
    'marginable': True,
    'name': 'Norwegian Cruise Line Holdings Ltd. Ordinary Shares',
    'shortable': True,
    'status': 'active',
    'symbol': 'NCLH',
    'tradable': True})]
[]
[]
etc.


2 commentaires

Qu'est-ce que final_universe_tickers contient? ['TSLA', 'NCLH' ...] ?


Oui, absolument correct


3 Réponses :


0
votes

Vous devez déplacer le pour actif dans final_universe code> dans le symbole pour le symbole dans symbole_list code> comme vous ne vous bougeez actuellement que sur le dernier em> final_universe code>.

final_universe_tickers = []

for symbol in symbol_list:
    # Filter the assets which have passed all vola and price filters and are shortable based on Alpaca API
    final_universe = [a for a in shortable_marginable_assets if a.symbol == symbol]
    print(final_universe)
    for asset in final_universe:
        final_universe_tickers.append(asset["symbol"])


2 commentaires

OK, je devais faire un petit ajustement à votre code: Asset.Symbol au lieu d'actif ["Symbole"] dans la dernière ligne. Alors ça a fonctionné.


@ FM2020 Désolé je n'ai jamais utilisé cette bibliothèque avant que je ne connaissais pas. Je suis content que vous ayez réussi à le réparer! :RÉ



0
votes

merci. Maintenant, il est écrit: TypeError: l'objet 'Asset' n'est pas syndicalable

Ceci est la sortie de la console dans l'IDE Spyder. Ci-dessous une capture d'écran pour les types de variables.  Entrez la description de l'image ici xxx


0 commentaires

0
votes

envisager de tirer le dictionnaire de l'objet d'actif; Je ne sais pas pourquoi l'alpaga doit présenter les données qu'ils voient. Je préfère travailler des dictionnaires plutôt que comment Alpaca le présente.

import alpaca_trade_api as tradeapi
api = tradeapi.REST(key_id=API_KEY,
                    secret_key=SECRET_KEY,
                    base_url='https://api.alpaca.markets',
                    api_version='v2',
                    oauth=None)

a = api.get_asset('NFLX')
print(a._raw)
print(a._raw['symbol'])

side note: if you do dir(response) you'll see a bunch of options you have with object. I chose _raw.
['__class__',
 '__delattr__',
 '__dict__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattr__',
 '__getattribute__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__le__',
 '__lt__',
 '__module__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__weakref__',
 '_raw']


0 commentaires