检查当今美国证券交易所是否开放交易的最简单方法是什么?
我希望避免的长期方法是通过创建例程来解析具有https://business.nasdaq.com/trade/US-Options/Holiday-Trading-Hours.html之类的日历信息的供稿
我更喜欢 Ruby ,但是即使使用 curl 进行简单的URL查找以产生对/错,或直到下一个市场开放的时间,也是很棒的。
可选
能够查找任意日期会更好,并且也可以解决此问题。
即甚至像curl google.com/search?q="Is the NYSE open on $(date +%Y-%m-%d)"
这样的东西。
答案 0 :(得分:1)
我正在外壳脚本中使用Tradier's API进行此操作,然后使用jq获取特定日期的状态。
date="your date"
month=$(date -d $date +%-m)
year=$(date -d $date +%Y)
calendar=$(curl -H "Authorization: Bearer "$tradierApi"" -H "Accept: application/json" "https://production-api.tradier.com/v1/markets/calendar?month="$month"&year="$year)
marketStatus=$(echo $calendar | ./jq-linux64 '.calendar.days.day[] | select(.date == "'$date'") | .status')
答案 1 :(得分:0)
在出现更优雅,更可靠的东西之前,我可能会使用
curl -s "https://www.isthemarketopen.com/" |grep -c "** Stock market is closed"
在今天的情况下(耶稣受难日)返回1,并且我可以直接在条件代码中使用它,但必须维护并定期检查URL的基础HTML源可能如何更改。
答案 2 :(得分:0)
我发现Google Calendar个美国市场假期,并在接下来的几年中进行了合理的更新。
我讨厌添加一个单独的答案,这比以前脆弱的URL页面文本搜索器要好得多(顺便说一句,两周后仍然返回“ **股票市场已关闭,耶稣受难日4 / 19/19”,而不仅仅是在某处设置“今天市场开放”。
首先输入代码:(带嵌入式Bash的Ruby)
$marketCal = %x'curl -s "https://www.googleapis.com/calendar/v3/calendars/2jpqg4chp4djba5ea99b22b838@group.calendar.google.com/events?key=[YOUR GOOGLE API KEY]&maxResults=1&timeMin=#{today=`date +%Y-%m-%d`.chomp}T00%3A00%3A01%2B00%3A00&timeMax=#{today}T23%3A59%3A59%2B00%3A00&"'
$isMarketOpenToday = $marketCal !~ /"status":/ # => true when there exists event "id":, etc.
由于存在资源限制,您需要在以下位置创建自己的免费API密钥 https://console.developers.google.com/apis/credentials?
如果今天没有市场假期,则全局变量 $ isMarketOpenToday 产生 true ,否则产生 false 。请注意,它不考虑星期几,因此在周末它可能仍然正确。因此,如果需要,只需进行另一个简单的测试即可。例如。 [[ $(date +%u) < 6 ]] && echo "Weekday, yay!"
编程标准可以改善很多;这样做的目的仅仅是用最少的代码行(从脚本外部的CLI)轻松地测试API来进行测试,无论多么讨厌。
答案 3 :(得分:0)
MSN报价中包含一个属性,用于指示股票上市市场是开放的还是封闭的:
https://www.msn.com/en-us/money/stockdetails/nas-aapl/fi-a1mou2?symbol=AAPL&form=PRMFPS
这是一个获取状态信息的python脚本...如果您担心他们更改其CSS,我想正则表达式可能更可靠,等等。
从bs4导入BeautifulSoup
导入请求
session = requests.session()
response = session.get('https://www.msn.com/en-us/money/stockdetails/nas-aapl/fi-a1mou2?symbol=AAPL&form=PRMFPS')
如果response.status_code == 200:
page = response.text
soup = BeautifulSoup(page, "lxml")
market = soup.find('span', attrs={'class': 'market-status-text'}).text
if market == 'US Markets Closed':
# do stuff
print('closed')
else:
print('open')
# do different stuff
答案 4 :(得分:0)
PowerShell:
function isMarketOpen(){
$url = "https://query2.finance.yahoo.com/v7/finance/quote?symbols=MSFT"
try{
$response = Invoke-RestMethod $url
#return $response.quoteResponse.result[0]
if($response.quoteResponse.result[0].marketState -eq 'CLOSED'){
return $false
}else{
return $true
}
}catch{
$_.exception | Write-Warning
return $null
}
}
isMarketOpen