🎨 Как Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ свСчи Π² Python: пошаговоС руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Как Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ свСчи Π² Python?

Для отрисовки свСчных Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² Π² Python, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ matplotlib ΠΈ plotly. Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования ΠΎΠ±Π΅ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ:

ИспользованиС matplotlib:

Π’ΠΎΡ‚ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ рисуСт свСчной Π³Ρ€Π°Ρ„ΠΈΠΊ с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ matplotlib:


import matplotlib.pyplot as plt

# Π”Π°Π½Π½Ρ‹Π΅ свСчного Π³Ρ€Π°Ρ„ΠΈΠΊΠ°
open_prices = [100, 110, 105, 120]
high_prices = [120, 130, 115, 125]
low_prices = [90, 100, 95, 110]
close_prices = [115, 125, 110, 118]

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ свСчного Π³Ρ€Π°Ρ„ΠΈΠΊΠ°
plt.plot([], [])
plt.boxplot([open_prices, high_prices, low_prices, close_prices], vert=False, widths=0.6, patch_artist=True, showfliers=False)
plt.title('Π‘Π²Π΅Ρ‡Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊ')
plt.xlabel('Π¦Π΅Π½Ρ‹')
plt.ylabel('ΠŸΠ΅Ρ€ΠΈΠΎΠ΄Ρ‹')
plt.show()
    

ИспользованиС plotly:

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ plotly для отрисовки свСчного Π³Ρ€Π°Ρ„ΠΈΠΊΠ°:


import plotly.graph_objects as go

# Π”Π°Π½Π½Ρ‹Π΅ свСчного Π³Ρ€Π°Ρ„ΠΈΠΊΠ°
open_prices = [100, 110, 105, 120]
high_prices = [120, 130, 115, 125]
low_prices = [90, 100, 95, 110]
close_prices = [115, 125, 110, 118]

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ свСчного Π³Ρ€Π°Ρ„ΠΈΠΊΠ°
fig = go.Figure(data=[go.Candlestick(x=list(range(len(open_prices))),
                open=open_prices,
                high=high_prices,
                low=low_prices,
                close=close_prices)])

fig.show()
    

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ matplotlib, Π»ΠΈΠ±ΠΎ plotly для рисования свСчных Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² Π² Python. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΊΠΎΠ΄Π° ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π°ΠΌ большС нравится ΠΈΠ»ΠΈ Π»ΡƒΡ‡ΡˆΠ΅ соотвСтствуСт вашим потрСбностям.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Π΄ΠΎΡ€ΠΎΠ³ΠΎΠΉ студСнт! БСгодня я Ρ…ΠΎΡ‡Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚Π΅Π±Π΅, ΠΊΠ°ΠΊ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ свСчи Π² Python. РисованиС свСчСй - это ваТная Ρ‡Π°ΡΡ‚ΡŒ Π°Π½Π°Π»ΠΈΠ·Π° финансовых Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ‚ΠΎΡ€Π³ΠΎΠ²Π»ΠΈ Π½Π° финансовых Ρ€Ρ‹Π½ΠΊΠ°Ρ…. Когда ΠΌΡ‹ рисуСм свСчи, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ измСнСния Ρ†Π΅Π½ ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€Π΅Π½Π΄Ρ‹ Π½Π° Ρ€Ρ‹Π½ΠΊΠ΅.

Для рисования свСчСй Π² Python ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Matplotlib. Она позволяСт Π½Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ свСчныС Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ.

Π”Π°Π²Π°ΠΉ Π½Π°Ρ‡Π½Π΅ΠΌ с создания простого свСчного Π³Ρ€Π°Ρ„ΠΈΠΊΠ°. Нам понадобятся Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Ρ†Π΅Π½Π΅ открытия, Ρ†Π΅Π½Π΅ закрытия, минимальной ΠΈ максимальной Ρ†Π΅Π½Π΅ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° возьмСм Π΄Π°Π½Π½Ρ‹Π΅ Π·Π° ΠΎΠ΄ΠΈΠ½ дСнь.


import matplotlib.pyplot as plt
import mpl_finance as mpf

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ массив Π΄Π°Π½Π½Ρ‹Ρ… для свСчСй
data = [(1, 2, 0.5, 1.5), (2, 3, 1, 2.5), (1.5, 2.5, 0.5, 2), (2.5, 3.5, 2, 3)]

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ
fig, ax = plt.subplots()

# РисуСм свСчи
mpf.candlestick_ochl(ax, data, width=0.4, colorup='green', colordown='red')

# НастраиваСм оси
ax.set_xlim(0, len(data))
ax.set_ylim(min([d[2] for d in data]) - 0.5, max([d[3] for d in data]) + 0.5)

# ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π³Ρ€Π°Ρ„ΠΈΠΊ
plt.show()
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм массив Π΄Π°Π½Π½Ρ‹Ρ… с Ρ†Π΅Π½Π°ΠΌΠΈ открытия, закрытия, минимальной ΠΈ максимальной Ρ†Π΅Π½ΠΎΠΉ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ свСчи. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ создаСм Π½ΠΎΠ²ΡƒΡŽ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ ΠΈ оси для нашСго Π³Ρ€Π°Ρ„ΠΈΠΊΠ°. ПослС этого ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ `mpf.candlestick_ochl()` ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ mpl_finance, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ свСчи Π½Π° нашСм Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ настраиваСм оси, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ отобраТалися ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ большС Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ свСчному Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΈ стили для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ….


import matplotlib.pyplot as plt
import mpl_finance as mpf

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ массив Π΄Π°Π½Π½Ρ‹Ρ… для свСчСй
data = [(1, 2, 0.5, 1.5), (2, 3, 1, 2.5), (1.5, 2.5, 0.5, 2), (2.5, 3.5, 2, 3)]

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ ΠΈ оси
fig, ax = plt.subplots(2, sharex=True, gridspec_kw={'height_ratios': [3, 1]})

# РисуСм свСчи
mpf.candlestick_ochl(ax[0], data, width=0.4, colorup='green', colordown='red')

# ДобавляСм ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹
ax[0].plot([d[0] + 0.2 for d in data], [d[1] + 0.1 for d in data], color='blue', label='High')
ax[0].plot([d[0] + 0.2 for d in data], [d[2] - 0.1 for d in data], color='purple', label='Low')
ax[0].legend()

# ДобавляСм объСм Ρ‚ΠΎΡ€Π³ΠΎΠ²
ax[1].bar([d[0] + 0.2 for d in data], [d[1] - d[2] for d in data], color='orange')

# НастраиваСм оси
ax[0].set_xlim(0, len(data))
ax[0].set_ylim(min([d[2] for d in data]) - 0.5, max([d[3] for d in data]) + 0.5)
ax[1].set_ylim(0, max([d[1] - d[2] for d in data]) + 0.5)

# ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π³Ρ€Π°Ρ„ΠΈΠΊ
plt.show()
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ добавляСм ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ High ΠΈ Low ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ свСчному Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ добавляСм гистограмму для отобраТСния объСма Ρ‚ΠΎΡ€Π³ΠΎΠ². ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ `plot()` для рисования Π»ΠΈΠ½ΠΈΠΉ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ `bar()` для рисования гистограммы. Наши ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΈ гистограмма Π΄ΠΎΠΏΠΎΠ»Π½ΡΡŽΡ‚ основной Π³Ρ€Π°Ρ„ΠΈΠΊ свСчСй ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π°ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ большС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π΄Π°Π½Π½Ρ‹Ρ….

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ тСбя Π΅ΡΡ‚ΡŒ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ инструмСнты для рисования свСчСй Π² Python. Π’Ρ‹ моТСшь ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π² своСм финансовом Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΈΠ»ΠΈ Ρ‚ΠΎΡ€Π³ΠΎΠ²Π»Π΅ Π½Π° Ρ€Ρ‹Π½ΠΊΠ΅. Π£Π΄Π°Ρ‡ΠΈ Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ Python ΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ финансовых Π΄Π°Π½Π½Ρ‹Ρ…!

Π­Ρ‚Ρƒ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΏΡ€Π°Π²Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ для дальнСйшСго изучСния ΠΈ экспСримСнтов с рисованиСм свСчСй Π² Python. Помни, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° - Π»ΡƒΡ‡ΡˆΠΈΠΉ способ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ свои Π½Π°Π²Ρ‹ΠΊΠΈ. Π£Π΄Π°Ρ‡ΠΈ Π² Ρ‚Π²ΠΎΠΈΡ… ΡƒΡ‡Π΅Π±Π½Ρ‹Ρ… достиТСниях!

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Π‘Π²Π΅Ρ‡Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊ Акций Π½Π° Python

Python РисуСм Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Π°ΠΊΡ†ΠΈΠΉ

КАК Π Π˜Π‘ΠžΠ’ΠΠ’Π¬ ΠŸΠ›ΠΠœΠ― Π‘Π’Π•Π§Π˜ ΠΈΠ»ΠΈ ΠžΠ“ΠžΠΠ¬ красками ΠΈΠ»ΠΈ ΠΊΠ°Ρ€Π°Π½Π΄Π°ΡˆΠΎΠΌ / основныС ошибки

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸ”’ Как вывСсти сумму чисСл списка Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅? πŸ’» ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ способ с ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΌ объяснСниСм πŸ“š

πŸ”₯ Как ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ врСмя Π² Python: Π»Π΅Π³ΠΊΠΈΠΉ Π³ΠΈΠ΄ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…!

πŸ” Как вывСсти ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт списка Π² Π½ΠΎΠ²ΠΎΠΉ строкС python

🎨 Как Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ свСчи Π² Python: пошаговоС руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Как Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ послСдний элСмСнт массива Python? 🐍πŸ”₯ ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ способ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…!

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ строки Π² Python? 🐍 ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ ΠΎΠ±Π·ΠΎΡ€ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для Π°Π½Π΄Ρ€ΠΎΠΈΠ΄ Π½Π° python с Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ? πŸ“±πŸ