программно проверить, является ли сегодня торговый день открытия рынка - PullRequest
0 голосов
/ 19 апреля 2019

Какой может быть самый простой способ проверить, открыты ли сегодня биржи США для торговли?

Надежный способ, которого я надеюсь избежать, заключается в создании подпрограмм для анализа канала с информацией календаря, например https://business.nasdaq.com/trade/US-Options/Holiday-Trading-Hours.html

Я предпочитаю Ruby , но даже простой поиск URL-адреса с curl для получения значения true / false или времени до следующего открытия рынка был бы отличным.

ДОПОЛНИТЕЛЬНО

Было бы лучше найти любую произвольную дату, и решить это тоже.
То есть Даже что-то вроде curl google.com/search?q="Is the NYSE open on $(date +%Y-%m-%d)" из оболочки.

Ответы [ 3 ]

1 голос
/ 17 июня 2019

Я использую 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')
0 голосов
/ 02 мая 2019

Я нашел Календарь Google рыночных выходных в США, который разумно обновляется в течение следующих нескольких лет.

Как бы мне не хотелось добавлять отдельный ответ, это оченьлучшее решение, чем хрупкий URL-адрес страницы для поиска текста (который, кстати, две недели спустя все еще возвращает «** Фондовый рынок закрыт Страстная пятница 19/19/19» вместо простого «где-то сегодня рынок открыт»).

Сначала код: (Ruby с встроенным Bash)

$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 в противном случае.Обратите внимание, что он не учитывает день недели, поэтому в выходные дни он все еще может давать значение true.Так что просто сделайте еще один простой тест, если вам нужно.Например.[[ $(date +%u) < 6 ]] && echo "Weekday, yay!"

Многое можно улучшить с помощью стандартов программирования;цель здесь состояла в том, чтобы просто протестировать API с минимальными строками кода, легко проверяемыми из CLI вне скрипта, как бы это ни было неприятно.

0 голосов
/ 19 апреля 2019

Пока не появится что-то более элегантное и надежное, я мог бы использовать

curl -s "https://www.isthemarketopen.com/" |grep -c "** Stock market is closed"

, который возвращает 1 в сегодняшнем случае (Страстная пятница) - и я могу напрямую использовать его в условном коде - но должен периодически поддерживаться и проверяться, как базовый источник HTML этого URL мог измениться.

...