«Python Combat — построение системы количественной торговли на основе акций»Буклет в основном фокусируется на практическом объяснении Python, но содержит предварительные главы по дизайну контента, чтобы помочь читателям быстро освоить использование основных инструментов. В то же время мы продолжим обновлять некоторые расширенные статьи о Python и количественной оценке, чтобы помочь вам закрепить фундамент и дополнительные эффекты обучения. На данный момент опубликованы следующие статьи:
В буклете "Анализ биржевых данных: обычно используемые интерфейсы данных биржевых транзакций для дифференциального анализа" представлен метод получения данных фондового рынка на дневном уровне. Фактически самые примитивные данные - это данные транзакций, данные различных циклов рынок программного обеспечения.Все они формируются путем преобразования сегментированных данных по циклам.
В этой колонке мы представим методы сбора и обработки данных о транзакциях.
Во-первых, используйте интерфейс get_tick_data() библиотеки tushare, чтобы получить исторические тиковые данные сети Zhejiang University Network New 2019-08-08, как показано ниже:
df = ts.get_tick_data('600797',date='2019-08-08',src='tt')
print(df.head(10))
"""
time price change volume amount type
0 09:25:05 7.89 0.09 385 303765 卖盘
1 09:30:03 7.90 0.01 591 466402 买盘
2 09:30:06 7.90 0.00 371 292885 卖盘
3 09:30:08 7.91 0.01 96 75837 买盘
4 09:30:12 7.92 0.01 43 34021 买盘
5 09:30:15 7.90 -0.02 1 790 卖盘
6 09:30:18 7.90 0.00 61 48143 买盘
7 09:30:21 7.91 0.01 15 11860 买盘
8 09:30:24 7.91 0.00 5 3955 买盘
9 09:30:27 7.90 -0.01 10 7900 卖盘
"""
В возвращаемом значении, времени, цене транзакции, изменении цены, лоте объема транзакции, сумме транзакции (юани), введите тип транзакции [ордер на покупку, ордер на продажу, нейтральный ордер].
Преобразуйте индекс строки разделенных данных во временной ряд следующим образом:
df_tick.index = pd.to_datetime(df_tick.time)
df_tick.drop(axis=1, columns='time', inplace=True)
print(df_tick.head(10))
"""
price change volume amount type
time
2019-08-10 09:25:05 7.89 0.09 385 303765 卖盘
2019-08-10 09:30:03 7.90 0.01 591 466402 买盘
2019-08-10 09:30:06 7.90 0.00 371 292885 卖盘
2019-08-10 09:30:08 7.91 0.01 96 75837 买盘
2019-08-10 09:30:12 7.92 0.01 43 34021 买盘
2019-08-10 09:30:15 7.90 -0.02 1 790 卖盘
2019-08-10 09:30:18 7.90 0.00 61 48143 买盘
2019-08-10 09:30:21 7.91 0.01 15 11860 买盘
2019-08-10 09:30:24 7.91 0.00 5 3955 买盘
2019-08-10 09:30:27 7.90 -0.01 10 7900 卖盘
"""
Метод resample() предоставляется в Pandas для повторной выборки временного ряда, где полученные тиковые данные синтезируются в одноминутные данные. Следующим образом:
print(df_tick.price.resample('1min', closed='left', label='left').ohlc().head(20))
"""
open high low close
time
2019-08-10 09:25:00 7.89 7.89 7.89 7.89
2019-08-10 09:26:00 NaN NaN NaN NaN
2019-08-10 09:27:00 NaN NaN NaN NaN
2019-08-10 09:28:00 NaN NaN NaN NaN
2019-08-10 09:29:00 NaN NaN NaN NaN
2019-08-10 09:30:00 7.90 7.92 7.90 7.92
2019-08-10 09:31:00 7.91 7.92 7.90 7.91
2019-08-10 09:32:00 7.90 7.91 7.89 7.90
2019-08-10 09:33:00 7.89 7.91 7.89 7.90
2019-08-10 09:34:00 7.91 7.92 7.90 7.92
2019-08-10 09:35:00 7.92 7.94 7.91 7.93
2019-08-10 09:36:00 7.93 7.93 7.92 7.92
2019-08-10 09:37:00 7.93 7.93 7.91 7.91
2019-08-10 09:38:00 7.90 7.91 7.90 7.90
2019-08-10 09:39:00 7.90 7.90 7.89 7.90
2019-08-10 09:40:00 7.89 7.90 7.89 7.90
2019-08-10 09:41:00 7.90 7.90 7.89 7.89
2019-08-10 09:42:00 7.89 7.90 7.88 7.89
2019-08-10 09:43:00 7.89 7.89 7.88 7.89
2019-08-10 09:44:00 7.88 7.89 7.86 7.86
"""
Чтобы обрабатывать данные NaN для нетранзакционных периодов времени, удалите строки, в которых все столбцы имеют значение NaN, следующим образом:
df_min_ohlc = df_min_ohlc.dropna(axis=0,how='all') # NAN值删除 所有值都为缺失值时才删除该行
print(df_min_ohlc.head())
"""
open high low close
time
2019-08-10 09:25:00 7.89 7.89 7.89 7.89
2019-08-10 09:30:00 7.90 7.92 7.90 7.92
2019-08-10 09:31:00 7.91 7.92 7.90 7.91
2019-08-10 09:32:00 7.90 7.91 7.89 7.90
2019-08-10 09:33:00 7.89 7.91 7.89 7.90
"""
Затем мы можем вызвать код буклета «Визуализация биржевых данных: настроить версию интерфейса фондового рынка Matplotlib», чтобы нарисовать график K-линии и нарисовать график K-линии на 1-минутном и 15-минутном уровнях соответственно, как показано на следующем рисунке:
Кроме того, tushare также предоставляет другие интерфейсы, связанные с данными транзакций с разделением времени, такие как: Интерфейс get_sina_dd() получает данные транзакции крупного ордера.Значение по умолчанию больше или равно 400 лотам.Вы также можете указать данные транзакции определенного объема транзакции через параметр vol, как показано ниже:
# 获取大单交易数据,默认为大于等于400手,数据来源于新浪财经。
data=ts.get_sina_dd('600797',date = '2019-08-08')
print(data.head(10))
"""
code name time price volume preprice type
0 600797 浙大网新 15:00:00 8.01 253542 8.01 买盘
1 600797 浙大网新 14:56:18 8.01 45700 8.01 卖盘
2 600797 浙大网新 14:54:39 8.01 116400 8.01 买盘
3 600797 浙大网新 14:18:18 8.00 50000 8.00 买盘
4 600797 浙大网新 13:35:57 8.02 53100 8.01 卖盘
5 600797 浙大网新 13:33:57 8.03 42200 8.03 买盘
6 600797 浙大网新 13:25:18 8.01 64100 8.01 买盘
7 600797 浙大网新 13:25:15 8.01 41800 8.01 买盘
8 600797 浙大网新 13:22:57 8.04 135500 8.03 买盘
9 600797 浙大网新 13:22:00 8.01 44600 8.01 买盘
"""
Интерфейс get_today_ticks() получает подробные данные тика, сгенерированного в текущий торговый день, но их нужно использовать во время сделки.
get_realtime_quotes() получает тиковые данные в реальном времени и может получать текущую котировку акций и информацию о транзакциях в режиме реального времени.Один из сценариев - написать программу синхронизации на python для вызова этого интерфейса (она может выполняться раз в две или три секунды). , и производительность в основном такая же, как у рыночного программного обеспечения), затем мониторинг транзакций осуществляется посредством матричного расчета DataFrame, который может отслеживать изменения объема и цены транзакций в режиме реального времени.
get_today_all() получает рыночные данные обо всех акциях, торгуемых в настоящее время одновременно (если это выходной день, это предыдущий торговый день, и результат показывает, что скорость зависит от скорости интернета). Следующим образом:
data=ts.get_today_all()
print(data)
"""
[Getting data:]############################################################ code name ... mktcap nmc
0 688388 嘉元科技 ... 1.470680e+06 3.365835e+05
1 688333 铂力特 ... 7.000000e+05 1.571451e+05
2 688188 柏楚电子 ... 2.425100e+06 5.555751e+05
3 688122 西部超导 ... 2.370954e+06 2.133204e+05
4 688099 晶晨股份 ... 6.166800e+06 5.598821e+05
5 688088 虹软科技 ... 2.791250e+06 2.612927e+05
6 688066 航天宏图 ... 1.011336e+06 2.293842e+05
7 688033 天宜上佳 ... 2.216313e+06 2.145303e+05
8 688029 南微医学 ... 1.628215e+06 3.735600e+05
... ... ... ... ... ...
3743 600234 *ST山水 ... 1.447488e+05 1.447488e+05
3744 600228 ST昌九 ... 1.607191e+05 1.607191e+05
3745 600217 中再资环 ... 7.179371e+05 6.818769e+05
3746 600209 ST罗顿 ... 1.290693e+05 1.290693e+05
3747 600193 ST创兴 ... 1.552611e+05 1.552611e+05
3748 600186 *ST莲花 ... 1.741720e+05 1.741720e+05
3749 600179 ST安通 ... 3.836408e+05 1.737990e+05
3750 600163 中闽能源 ... 3.568091e+05 3.568091e+05
3751 600149 ST坊展 ... 1.927411e+05 1.927411e+05
[3752 rows x 15 columns]
"""
其中返回值包括code代码、name名称、changepercent涨跌幅、trade现价、open开盘价、high最高价、low最低价、settlement昨日收盘价、volume成交量、turnoverratio换手率、amount成交金额、per市盈率、pb市净率、mktcap总市值、nmc流通市值。
Полный код можно получить, присоединившись к группе обмена брошюрами. Чтобы узнать больше о количественном трейдинге, подпишитесьбуклетчитать