Преобразование блокнота Python в интерактивное веб-приложение: инструменты, советы и рекомендации
17 февраля 2023 г.Привет. Эта статья была подготовлена для проведения технического анализа финансовых данных с помощью языка Python и преобразования кода, который мы написали, в интерактивное веб-приложение.
Технический анализ — это самый простой способ понять финансовые данные об акциях, валютах или различных типах данных финансовых временных рядов. Большинство программистов или специалистов по данным используют язык Python для базового анализа финансовых данных, поскольку он очень прост в использовании.
В дополнение к коду финансового анализа я хочу показать вам, как легко преобразовать блокнот Python в веб-приложение. Это может быть полезно для тех, кто не умеет программировать в вашей команде. Все будут хорошо использовать ваше приложение Python, если код вашего блокнота Python можно преобразовать в интерактивное веб-приложение. Таким образом, в этом посте объясняется, как визуализировать код Python и упростить его использование.
:::информация Это не инвестиционный совет. Я просто хочу проиллюстрировать, как можно просматривать финансовые данные с помощью популярных технических индикаторов в Python.
:::
Mercury — это мощный инструмент для достижения наших целей по конверсии.
В этой статье я создам приложение для анализа финансовых данных, используя финансовые индикаторы на ноутбуке Python, и преобразую его в веб-приложение с помощью Mercury. Затем я разверну его на Dyno-сервисе Heroku для использования в Интернете. Я думаю, что этот инструмент будет очень полезен разработчикам Python или всем, кто знает язык Python и работает с темами, связанными с наукой о данных, — он ускорит процесс анализа. Когда мы закончим, у вас будет информационная панель, которую вы сможете показать всем, даже тем, у кого нет никаких знаний в области программирования.
Вы также узнаете, как:
* рассчитать некоторые технические индикаторы и визуализировать их для финансовых данных на языке python, * создать панель инструментов в Jupyter Notebook или расширении Visual Studio Code Jupyter, * преобразовать блокнот в динамическое веб-приложение с помощью Mercury, * разверните приложение панели мониторинга на основе ноутбука в Heroku dyno.
Технический анализ и индикаторы
Скользящие средние (MA)
В финансах скользящие средние (MA) — это технический индикатор, обычно используемый для технического анализа. Расчет скользящей средней акции помогает сгладить данные о ценах, создавая постоянно обновляемые средние цены. Он дает последовательные обновления о тенденциях роста и снижения цен. На языке Python простое скользящее среднее можно рассчитать, как показано в приведенном ниже коде.
Это также часть моего блокнота Python.
## calculate 7days, 14days, 21days moving averages
techAnalysis=finData[["Close"]]
if ma_7d:
techAnalysis["ma_7d"]=techAnalysis["Close"].rolling(5).mean()
if ma_14d:
techAnalysis["ma_14d"]=techAnalysis["Close"].rolling(14).mean()
if ma_21d:
techAnalysis["ma_21d"]=techAnalysis["Close"].rolling(21).mean()
В этом коде 7-дневные, 14-дневные и 21-дневные скользящие средние рассчитываются по данным "Close".
MACD
Индикатор MACD — это индикатор импульса тренда, который наблюдается с точки зрения двух различных вариантов цен. Он получается путем вычитания 26-дневной экспоненциальной скользящей средней из 12-дневной экспоненциальной скользящей средней. Сигнал в индикаторе MACD используется как триггер для покупки и продажи. На языке python индикатор MACD можно рассчитать, как показано в коде ниже. Я использовал этот метод в своем ртутном приложении.
# calculate MACD
if "MACD" in indicators:
k = techAnalysis['Close'].ewm(span=12, adjust=False, min_periods=12).mean()
d = techAnalysis['Close'].ewm(span=26, adjust=False, min_periods=26).mean()
macd=k-d
macd_s = macd.ewm(span=9, adjust=False, min_periods=9).mean()
macd_h = macd - macd_s
techAnalysis['macd_h'] = techAnalysis.index.map(macd_h)
techAnalysis['macd_s'] = techAnalysis.index.map(macd_s)
В этом коде мы рассчитали индикатор MACD, сигнал MACD и гистограммы MACD и сохранили их во фрейме данных techAnalysis
.
RSI (индекс относительной силы)
Индекс относительной (относительной) силы (RSI) — это индикатор, который дает прогнозы о направлении краткосрочных и среднесрочных трендов, рассчитываемых путем сравнения значений закрытия соответствующего периода с предыдущими значениями закрытия периода. Это может быть очень полезно для понимания того, когда инвесторы будут продавать или покупать. п
В этом коде я использовал модуль pandas_ta
для расчета RSI.
## RSI calculate
if "RSI" in indicators:
import pandas_ta as pta
techAnalysis["RSI"]=pta.rsi(techAnalysis["Close"],lenght="14")
Теперь у нас есть столбец «RSI» во фрейме данных techAnalysis
.
Громкость
Данные об объеме можно использовать в качестве индикатора. Он показывает, сколько акций на рынках перешли из рук в руки за определенный период. Данные об объемах обычно используются инвесторами для интерпретации и подтверждения ценовых движений. п
В этом приложении данные об объемах добавляются к последнему графику, чтобы информировать инвесторов о ценах.
Создание среды Python & Установить Меркурий
Если вы хотите работать в чистой среде, я предлагаю вам создать виртуальную среду Python и работать с ней. Я использую пакет python virtualenv
для создания виртуальной среды python.
python3 -m pip install virtualenv
Теперь давайте создадим виртуальную среду для этого проекта.
python -m venv my_env
У нас есть среда, и мы должны активировать ее, чтобы использовать приведенный ниже код.
cd my_env
source bin/activate
my_env
активирован.
Чтобы использовать используемые функции и модули Python, необходимо установить указанные ниже необходимые пакеты. Это будет содержимое файла requirements.txt
matplotlib
pandas
pandas-ta
numpy
pandas_datareader
requests
mplfinance
beautifulsoup4
mljar-mercury
Вы можете скопировать все и вставить в файл requirements.txt
. Затем вы можете запустить приведенную ниже команду и легко установить все необходимые пакеты.
pip install -r requirements.text
Управление сервером Mercury
Теперь давайте быстро начнем управлять сервером Mercury. Для этого достаточно простой команды.
mercury runserver - — runworker
Давайте проверим адрес https:127.0.0.1/8000
в вашем веб-браузере. Если вы видите страницу ниже, вы сделали это успешно.
Для кодирования вы можете использовать блокнот Jupyter или расширение vs code Jupyter. Следует отметить, что при использовании блокнота Jupyter или vscode следует выбирать ядро Jupyter my_env
.
Если вы не видите my_env, вы должны добавить виртуальное ядро к ядрам Jupyter. Для этого вы установите пакет Jupyter через pip и добавите ядро через пакет ipykernel
. В каталоге my_env
вы должны выполнить приведенные ниже команды или прочитать документы в общем ссылка.
python3 -m pip install jupyter ipykernel
python -m ipykernel install --user --name myenv"
Вы можете проверить установленные ядра Jupyter с помощью приведенной ниже команды.
Jupyter kernelspec list
Если вы видите ядро через другие ядра, вы можете убедиться, что оно установлено в код.
Большой! Теперь давайте просмотрим мой код и легко конвертируем его в веб-приложение!!
Создание блокнота Python для финансового анализа
Финансы Yahoo
Yahoo Finance – удобный веб-сайт для сбора точных финансовых данных. Вы можете получить исторические данные бесплатно здесь.
Я использую приведенный ниже код для сбора финансовых данных из Yahoo Finance с помощью Python.
import pandas_datareader as dr
## date yyyy-dd-mm
start_date= "2015-01-01"
end_date=date.today()
finData=dr.data.get_data_yahoo(ticket,start=start_date,end=end_date)
Модуль pandas_datareader
содержит функцию get_data_yahoo
, и мы можем легко собирать исторические данные.
Анализ финансовых данных
В этом приложении некоторые скользящие средние, индикаторы MACD, RSI и данные об объемах используются для простого технического анализа любых финансовых данных. Я построил график свечей за последние N дней для данных открытия-закрытия-максимума-минимума и этих индикаторов на одном графике. Все коды были отправлены в мой репозиторий GitHub, и вы можете просмотреть код здесь.
Преобразование блокнота Python в веб-приложение
Шаг 1. Добавьте ячейку YAML — фреймворк Mercury позволяет определить виджеты для блокнота. добавив заголовок YAML в начало блокнота.
Во-первых, вы должны добавить пустую ячейку вверху блокнота Python и изменить тип ячейки на, пожалуйста.
n
Он находится ниже файла YAML, который я использовал для приложения finAnalyzer-mercury. Он будет создавать виджеты в веб-приложении. Его можно использовать во многих типах виджетов с mercury, таких как выбор, текст, ползунок, диапазон, флажок и т. д.
---
title: FinAnalyzer
author: noah
description: Technical analysis application for financial data
show-code: False
params:
ticket:
input: text
label: yahoo finance ticket
value: "^GSPC"
row: 1
year:
input: range
label: Select data range of year
value: [2020,2022]
min: 2017
max: 2022
lastndays:
input: slider
label: Select last n days for candlestick chart
value: 30
min: 7
max: 200
ma_7d:
label: 7 days Moving averages
input: checkbox
value: true
ma_14d:
label: 14 days Moving averages
input: checkbox
value: true
ma_21d:
label: 21 days Moving averages
input: checkbox
value: true
indicators:
label: Select financial indicators
input: select
value: [MACD,RSI]
choices: [MACD,RSI,Volume]
multi: True
---
Необработанная ячейка создаст виджеты ниже.
Шаг 2. Назначить переменную — Мы должны создать одноименные переменные с нашей ячейкой YAML и присвоить первые значения. В своем коде я присвоил первые значения ячейке YAML.
ticket = "^GSPC"
year= [2020,2022]
ma_7d=True
ma_14d=True
ma_21d=True
indicators=["MACD","RSI"]
lastndays=30
Шаг 3. Тест — Для теста мы можем использовать локальный сервер Mercury. Запустите приведенный ниже код и откройте <https://127.0.0.1:8000 ](https://127.0.0.1:8000) в своем веб-браузере. Вы можете показать, что приложение работает на локальном сервере Mercury.
Каждый раз, когда вы обновляете блокнот, он будет автоматически обновляться в Mercury.
Шаг 4. Развертывание в Heroku Dyno — «Панель инструментов готова, поэтому давайте развернем ее на Heroku.
Я предполагаю, что у вас есть учетная запись Heroku и установлен инструмент командной строки Heroku (CLI). Но если вы его не устанавливали, вы можете проверить документы.
Давайте войдем в инструмент Heroku-CLI:
heroku login
Экран входа в Heroku будет открыт в вашем браузере по умолчанию, и вы должны войти в систему таким образом.
После этого давайте создадим приложение Heroku, запустив:
heroku create finAnalzer-mercury
В каталоге проекта вы должны использовать другое имя проекта в команде создания, потому что я получил это имя.
Нам нужно будет добавить Procfile
в наш проект:
web: mercury runserver 0.0.0.0:$PORT --runworker
Давайте установим необходимые переменные среды (.env) в dyno:
heroku config:set ALLOWED_HOSTS=fin-analyzer-mercury.herokuapp.com
heroku config:set SERVE_STATIC=True
heroku config:set NOTEBOOKS=*.ipynb
Давайте создадим файл setup.sh и установим переменные среды с помощью команды ниже:
heroku config:set $(cat .env | sed ‘/^$/d; /#[[:print:]]*$/d’)
Мой репозиторий GitHub — пример для вас. После этого вы готовы развернуть приложение, выполнив:
git push heroku main
И теперь у меня есть веб-приложение.
<цитата>Важно: к сожалению, бесплатные сервисы динамометрии Heroku больше не доступны. Из-за этого dyno-сервисы могут быть платными. В качестве альтернативы вы можете использовать веб-сервис рендеринга, а не heroku dyno. Оба шага очень похожи, и я скоро добавлю конфиги в конец этого поста.
Кстати, если вы отправляете коды в свой репозиторий GitHub, но не должны отправлять файл .env
. В файле только Heroku dyno. Вы можете легко добавить свой файл .gitignore
.
Заключение
Мы использовали Python, чтобы получить представление о финансовых данных с некоторыми индикаторами технического анализа. Затем мы использовали платформу Mercury, чтобы преобразовать ее в веб-приложение в этом посте.
Люди используют множество технических индикаторов, чтобы узнать о тенденциях, и мы использовали некоторые индикаторы, чтобы получить знания для интерпретации данных, таких как скользящие средние, MACD, RSI и объем здесь. Я думаю, что использование интерактивного веб-приложения может быть очень простым способом просмотра финансовых данных, и в этом посте мы узнали, как создать веб-приложение, написав код на блокноте Python.
Если в вашей команде есть друзья, которые не знают программирование на Python, вы можете использовать для них этот метод. Они смогут легко использовать ваше приложение для анализа данных.
Мои коды и файлы Heroku доступны здесь.
Также опубликовано здесь.< /p>
Оригинал