首页 > 解决方案 > 股票市场机器人在应该运行时退出循环

问题描述

import requests
import schedule
import datetime
import time
from matplotlib import pyplot as plt

url = 'https://financialmodelingprep.com/api/v3/stock/real-time-price'
r = requests.get(url).json()

start_price = {'MSFT': 0, 'AAPL': 0,'AMZN': 0,'PYPL': 0,'GOOGL': 0,'TSLA': 0,'FB': 0,'DIS': 0,'TD': 0,'NVDA': 0,'V': 0,'NFLX': 0,'WMT': 0,'ADBE': 0,'CM': 0,'NKE': 0,'DELL': 0,'TWTR': 0,'NSU': 0,'KO': 0}
end_price = {'MSFT': 0, 'AAPL': 0,'AMZN': 0,'PYPL': 0,'GOOGL': 0,'TSLA': 0,'FB': 0,'DIS': 0,'TD': 0,'NVDA': 0,'V': 0,'NFLX': 0,'WMT': 0,'ADBE': 0,'CM': 0,'NKE': 0,'DELL': 0,'TWTR': 0,'NSU': 0,'KO': 0}

def check_stock_price():
    for x in r['stockList']:
        current_time = str(datetime.datetime.now())
        if current_time[11:16] == '09:30':
            if x['symbol'] == 'MSFT':
                start_price['MSFT'] = (x['price'])
            elif x['symbol'] == 'AAPL':
                start_price['AAPL'] = (x['price'])
            elif x['symbol'] == 'AMZN':
                start_price['AMZN'] = (x['price'])
            elif x['symbol'] == 'PYPL':
                start_price['PYPL'] = (x['price'])
            elif x['symbol'] == 'GOOGL':
                start_price['GOOGL'] = (x['price'])
            elif x['symbol'] == 'TSLA':
                start_price['TSLA'] = (x['price'])
            elif x['symbol'] == 'FB':
                start_price['FB'] = (x['price'])
            elif x['symbol'] == 'DIS':
                start_price['DIS'] = (x['price'])
            elif x['symbol'] == 'TD':
                start_price['TD'] = (x['price'])
            elif x['symbol'] == 'NVDA':
                start_price['NVDA'] = (x['price'])
            elif x['symbol'] == 'V':
                start_price['V'] = (x['price'])
            elif x['symbol'] == 'NFLX':
                start_price['NFLX'] = (x['price'])
            elif x['symbol'] == 'WMT':
                start_price['WMT'] = (x['price'])
            elif x['symbol'] == 'ADBE':
                start_price['ADBE'] = (x['price'])
            elif x['symbol'] == 'CM':
                start_price['CM'] = (x['price'])
            elif x['symbol'] == 'NKE':
                start_price['NKE'] = (x['price'])
            elif x['symbol'] == 'DELL':
                start_price['DELL'] = (x['price'])
            elif x['symbol'] == 'TWTR':
                start_price['TWTR'] = (x['price'])
            elif x['symbol'] == 'NSU':
                start_price['NSU'] = (x['price'])
            elif x['symbol'] == 'KO':
                start_price['KO'] = (x['price'])
        elif current_time[11:16] == '16:00':
            if x['symbol'] == 'MSFT':
                end_price['MSFT'] = (x['price'])
            elif x['symbol'] == 'AAPL':
                end_price['AAPL'] = (x['price'])
            elif x['symbol'] == 'AMZN':
                end_price['AMZN'] = (x['price'])
            elif x['symbol'] == 'PYPL':
                end_price['PYPL'] = (x['price'])
            elif x['symbol'] == 'GOOGL':
                end_price['GOOGL'] = (x['price'])
            elif x['symbol'] == 'TSLA':
                end_price['TSLA'] = (x['price'])
            elif x['symbol'] == 'FB':
                end_price['FB'] = (x['price'])
            elif x['symbol'] == 'DIS':
                end_price['DIS'] = (x['price'])
            elif x['symbol'] == 'TD':
                end_price['TD'] = (x['price'])
            elif x['symbol'] == 'NVDA':
                end_price['NVDA'] = (x['price'])
            elif x['symbol'] == 'V':
                end_price['V'] = (x['price'])
            elif x['symbol'] == 'NFLX':
                end_price['NFLX'] = (x['price'])
            elif x['symbol'] == 'WMT':
                end_price['WMT'] = (x['price'])
            elif x['symbol'] == 'ADBE':
                end_price['ADBE'] = (x['price'])
            elif x['symbol'] == 'CM':
                end_price['CM'] = (x['price'])
            elif x['symbol'] == 'NKE':
                end_price['NKE'] = (x['price'])
            elif x['symbol'] == 'DELL':
                end_price['DELL'] = (x['price'])
            elif x['symbol'] == 'TWTR':
                end_price['TWTR'] = (x['price'])
            elif x['symbol'] == 'NSU':
                end_price['NSU'] = (x['price'])
            elif x['symbol'] == 'KO':
                end_price['KO'] = (x['price'])
    print(start_price)
    print(end_price)

schedule.every().day.at("09:30").do(check_stock_price)
schedule.every().day.at("16:00").do(check_stock_price)

start_prices = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 
end_prices = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

while True == ((start_prices == [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) or (end_prices == [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])):
    schedule.run_pending()
    for x in start_price.values():
        start_prices.append(x)
    for y in end_price.values():
        end_prices.append(y)

    time.sleep(1)    

stock = input('Please enter stock NASDAQ name!')

基本上,当我在股市开盘和收盘时获得股票价格后停止运行的 while 循环不起作用。当我立即运行代码时,我不明白为什么退出 while 循环。当我运行我得到的代码时

“请输入纳斯达克股票名称!”

这是在while循环之后。我想要它做的是有两个我在 while 循环中使用的字典来检查是否添加了股票的价格。直到所有股票的起始价和收盘价都在那里,我想在价格出现后终止while循环,然后要求用户选择一只股票,这样我的程序就可以在何时显示该股票的价格市场开盘时以及市场收盘时

标签: pythonpython-3.x

解决方案


你为什么不打电话:

https://financialmodelingprep.com/api/v3/is-the-market-open

并寻找房产:isTheStockMarketOpen

如果它是真的,那么你循环。

所以如果 isTheStockMarketOpen 为真 -> 市场开放

他们在 API 中有它。


推荐阅读