Лекция по основам количественной торговли на Python

Python
Лекция по основам количественной торговли на Python

Вы заметилиPython Combat — построение системы количественной торговли на основе акций«Во вступлении к буклету есть картинка:

Далее мы научим вас рисовать рисунки, обозначающие циклы роста и падения Шанхайского сводного индекса. Это потребует использования сторонних библиотек Python, таких как matplotlib, pandas, tushare и numpy.

Первое использование tusharets.get_k_dataИнтерфейс получает ежедневные торговые данные Shanghai Composite Index с 2008 по 2019 год.

#获取上证综指2008年至2019的日交易数据
 sh=ts.get_k_data('sh',start='2008-1-1', end='2019-1-1')
print(sh.head())

           date     open    close     high      low      volume code
183  2008-10-06  2267.39  2173.74  2267.39  2172.57  60938100.0   sh
184  2008-10-07  2101.09  2157.84  2183.00  2072.90  56902600.0   sh
185  2008-10-08  2095.91  2092.22  2127.08  2059.09  50759500.0   sh
186  2008-10-09  2125.57  2074.58  2130.87  2063.41  45071000.0   sh
187  2008-10-10  1995.96  2000.57  2027.83  1963.18  54077500.0   sh

используя матплотлибplot()Функция отображает цену закрытия Shanghai Composite Index.

sh['close'].plot(figsize=(16,8))

Как видно из рисунка, бычий рынок, начавшийся в 2014 г., продолжался с июля 2014 г. по июнь 2015 г., а 11-месячный индекс фактически вырос с 2075,48 до 5178,19. Мы используем матплотлибannotate ()Функция отмечает на графике начало и конец бычьего рынка.

plt.annotate('牛市起点',
   xy=('2014-7-1',2054),
   xytext=('2014-3-1',2500),
   bbox = dict(boxstyle = 'round,pad=0.5',
   fc = 'yellow', alpha = 0.5),
   arrowprops=dict(facecolor='red',
   shrink=0.05),fontsize=12)

Далее используйте matplotlibaxhline()Функция устанавливает значение экспоненциальной медианы на горизонтальную опорную линию (горизонтальную), используя атрибут matplotlib.axvline()В качестве вертикальной опорной линии (vertical) функция устанавливает торговый день минимального значения индекса.

plt.axhline(y=sh['close'].median(), c='r', ls='--', lw=2)
plt.axvline(x=sh[sh['close'].values == sh['close'].min()].index, c='g', ls='-.', lw=2)

Далее используйте matplotlibaxhspan()Функция устанавливает начальную точку бычьего рынка параллельно оси x. Эталонная область (горизонтальная), с использованием библиотеки matplotlibaxvspan ()Функция устанавливает начальный торговый день бычьего рынка в эталонной области (вертикальной), параллельной оси Y.

plt.axhspan(ymin=2075.48, ymax=5178.19, facecolor='purple', alpha=0.3)
plt.axvspan(xmin='2014-7-1', xmax='2015-6-15', facecolor='g', alpha=0.3)

Далее мы настраиваем детали стиля диаграммы. Например, удалите границы в верхней и правой частях графика, задайте положение делений на оси координат и поместите деления внутри оси координат.

# 样式调整
# spines设置图表left\right\bottom\top边框,此处去掉图形上边和右侧的边框
for spine in plt.gca().spines.keys():
    print(spine)
    if spine == 'top' or spine == 'right':
        plt.gca().spines[spine].set_color('none')

# 设置坐标轴上的刻度线位置(其实这里的设置跟默认一样)
plt.gca().xaxis.set_ticks_position('bottom')
plt.gca().yaxis.set_ticks_position('left')

# 将刻度线放在坐标轴内侧
plt.tick_params(direction = 'in')

Чтобы получить полный код, вы можете присоединиться к группе обмена буклетами. Чтобы узнать больше о количественном трейдинге, подпишитесьбуклетчитать! !