Преобразование блокнота Python в интерактивное веб-приложение: инструменты, советы и рекомендации

Преобразование блокнота 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 is activated on zsh (fino theme) — Image by author

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 в вашем веб-браузере. Если вы видите страницу ниже, вы сделали это успешно.

mercury server welcome page — Image by author

Для кодирования вы можете использовать блокнот Jupyter или расширение vs code Jupyter. Следует отметить, что при использовании блокнота Jupyter или vscode следует выбирать ядро ​​Jupyter my_env.

select Jupyter kernel as a my_env(in red area) — Image by author

Если вы не видите 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 и изменить тип ячейки на, пожалуйста.

vscode Jupyter extension- первый тип ячейки должен быть необработанным для заголовка YAML  — 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
---

Необработанная ячейка создаст виджеты ниже.

Widgets on web application — Image by author

Шаг 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.

finAnalyzer-mercury notebook on local mercury server — Image by author

Каждый раз, когда вы обновляете блокнот, он будет автоматически обновляться в 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. Оба шага очень похожи, и я скоро добавлю конфиги в конец этого поста.

the application on Heroku dyno — Image by author

Кстати, если вы отправляете коды в свой репозиторий GitHub, но не должны отправлять файл .env. В файле только Heroku dyno. Вы можете легко добавить свой файл .gitignore.

Заключение

Мы использовали Python, чтобы получить представление о финансовых данных с некоторыми индикаторами технического анализа. Затем мы использовали платформу Mercury, чтобы преобразовать ее в веб-приложение в этом посте.

Люди используют множество технических индикаторов, чтобы узнать о тенденциях, и мы использовали некоторые индикаторы, чтобы получить знания для интерпретации данных, таких как скользящие средние, MACD, RSI и объем здесь. Я думаю, что использование интерактивного веб-приложения может быть очень простым способом просмотра финансовых данных, и в этом посте мы узнали, как создать веб-приложение, написав код на блокноте Python.

Если в вашей команде есть друзья, которые не знают программирование на Python, вы можете использовать для них этот метод. Они смогут легко использовать ваше приложение для анализа данных.

Мои коды и файлы Heroku доступны здесь.


Также опубликовано здесь.< /p>


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE