Как создать автоматизированную систему бумажной торговли за 5 минут
Table Of Content
- **Сделай это за 5 секунд!**
- **Избавьтесь от скучных задач с помощью Python (часть 1)**
- Часть 1 — Введите код акции и сумму, которую вы хотите торговать, в текстовый файл.
- **Часть 2 — Как самостоятельно осуществлять парсинг веб-страниц, полный путь**
- Часть 3— Очистка данных
- **Часть 4** — Вывод результата в файл csv или excel.
- Заключительные мысли
- О авторе
- Low Wei Hong - Средний
- Читайте записи Low Wei Hong на Medium. Data Scientist в Shopee. Каждый день Low Wei Hong и тысячи других...
Сделай это за 5 секунд!
Избавьтесь от скучных задач с помощью Python (часть 1)
Вам надоело делать одно и то же? Чувствуете, что ваша жизнь состоит в том, чтобы делать одно и то же снова и снова?
Вот что, сегодня я собираюсь представить вам инструмент для автоматизации ваших СКУЧНЫХ задач - Python. Python, возможно, самый простой язык для изучения. Благодаря вашим навыкам в Python вы сможете не только увеличить свою производительность, но и сосредоточиться на работе, которая вам будет интересна.
Избавьтесь от скучных задач с помощью Python - это серия, поэтому перейдите по этой ссылке, чтобы просмотреть всю серию!
Давайте начнем!
Я буду использовать пример бумажной торговли на бирже Сингапура в качестве иллюстрации того, как можно автоматизировать процесс. Бумажная торговля позволяет вам практиковаться в инвестировании или торговле с использованием виртуальных денег, прежде чем вы реально вложите реальные деньги. Это хороший способ начать, чтобы проверить, работает ли ваша стратегия.
Вот повестка дня, которую я собираюсь представить:
Часть 1 - Введите код акции и сумму, которую вы хотите торговать, в текстовый файл.
Часть 2 - Как самостоятельно делать парсинг веб-страниц, полное путешествие.
Часть 3 - Очистка и табулирование данных.
Часть 4 - Вывод результата в файл csv или excel.
Следуйте всему путешествию, и вы заметите, насколько просто автоматизировать ваши скучные задачи и обновлять цены ЗА 5 секунд.
Часть 1 — Введите код акции и сумму, которую вы хотите торговать, в текстовый файл.
Запустите новый текстовый файл, введите код акции и цену, по которой вы будете покупать данную акцию, разделенные запятой.
Запустите новый текстовый файл, введите код акции и цену, по которой вы будете покупать данную акцию, разделенные запятой, как показано ниже.
Часть 2 — Как самостоятельно осуществлять парсинг веб-страниц, полный путь
Это снимок сайта SGX.
Я собираюсь показать, как собрать всю информацию о торгах, содержащуюся в этой таблице. Откройте Google Chrome, щелкните правой кнопкой мыши на веб-сайте и вы увидите следующий снимок экрана.
Нажмите кнопку "Инспектировать", затем перейдите на вкладку "Сеть" (в правом верхнем углу на следующем снимке экрана, выделенном фиолетовой рамкой).
Затем щелкните на строке, выделенной фиолетовым прямоугольником, а затем выберите "Предварительный просмотр", как показано на выделенном зеленым прямоугольником снимке экрана 4 ниже.
Теперь вы можете видеть, что все данные содержатся в формате JSON. Затем щелкните на фиолетовом прямоугольнике (Заголовки) на снимке экрана 5.
Теперь я проверяю, какие элементы я должен использовать для сбора данных с этой страницы. Из снимка экрана 5 вы можете увидеть URL запроса, который вы должны использовать в части запроса позже. Из-за проблем с кодировкой, "%2c" в URL запроса будет закодировано в ",". Если вас интересует кодировка, просмотрите эту ссылку для получения дополнительной информации.
Теперь давайте подготовим необходимую информацию для отправки правильного запроса на сервер.
Часть 1 URL запроса
После замены всех "%2c" на ",", URL запроса будет выглядеть следующим образом.
[https://api.sgx.com/securities/v1.1?excludetypes=bonds¶ms=nc,adjusted-vwap,b,bv,p,c,change_vs_pc,change_vs_pc_percentage,cx,cn,dp,dpc,du,ed,fn,h,iiv,iopv,lt,l,o,p_,pv,ptd,s,sv,trading_time,v_,v,vl,vwap,vwap-currency](https://api.sgx.com/securities/v1.1?excludetypes=bonds¶ms=nc%2Cadjusted-vwap%2Cb%2Cbv%2Cp%2Cc%2Cchange_vs_pc%2Cchange_vs_pc_percentage%2Ccx%2Ccn%2Cdp%2Cdpc%2Cdu%2Ced%2Cfn%2Ch%2Ciiv%2Ciopv%2Clt%2Cl%2Co%2Cp_%2Cpv%2Cptd%2Cs%2Csv%2Ctrading_time%2Cv_%2Cv%2Cvl%2Cvwap%2Cvwap-currency)
Часть 2 Заголовки
Заголовок запроса - это часть сетевого пакета, отправляемого браузером или клиентом на сервер для запроса определенной страницы или данных на веб-сервере.
Ссылаясь на фиолетовый прямоугольник на снимке экрана 6, это часть заголовка, которую вы должны использовать при парсинге веб-сайта.
{"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36",
"Origin": "[https://www2.sgx.com](https://www2.sgx.com)",
"Referer": "[https://www2.sgx.com/securities/securities-prices](https://www2.sgx.com/securities/securities-prices)"}
Теперь давайте объединим все вместе, как показано в следующем коде.
Часть 3— Очистка данных
До этого у вас должен быть ответ в формате JSON. Мы будем использовать библиотеку Python pandas для очистки данных.
Сначала загрузите код акций, который вы ранее заполнили, и очистите его.
with open('selected.txt') as f:
selected_sc = f.readlines()
selected_sc = [x.replace('\n', '') for x in selected_sc]
portfolio = {x.split(',')[0]: float(x.split(',')[1]) for x in selected_sc}
Затем загрузите полученные данные в объект JSON, а затем преобразуйте его в объект pandas Python.
data = json.loads(req.text)['data']
df = pd.DataFrame(data['prices'])
Затем переименуйте названия столбцов, чтобы они были более понятными.
df = df.rename(
columns={'b': 'Покупка',
'lt': 'Последняя',
'bv': 'Объем покупки',
'c': 'Изменение',
'sv': 'Объем продажи',
'h': 'Максимум',
'l': 'Минимум',
'o': 'Открытие',
'p': 'Изменение в процентах',
's': 'Продажа',
'vl': 'Объем',
'nc': 'Код акции'})
Наконец, отфильтруйте интересующий вас код акций, в которые вы хотите инвестировать или торговать, а затем рассчитайте разницу в цене.
df = df[df['Код акции'].isin(portfolio.keys())][['Код акции', 'Последняя']] df['Цена покупки'] = df['Код акции'].map(portfolio) df['Процентное изменение'] = (df['Последняя'] - df['Цена покупки'])*100 df['Процентное изменение'] = df['Процентное изменение'].apply( lambda x: '{0:.2f}%'.format(x))
Часть 4 — Вывод результата в файл csv или excel.
Сохраните данные в файл csv и 🎉МЫ ЗАВЕРШИЛИ! 🎉
df.to_csv('reseult.csv', index=False)
Ниже приведен снимок экрана файла csv:
Полный код можно найти здесь.
Счастливого кодирования!
Заключительные мысли
На данный момент я работаю в качестве специалиста по обработке данных, и могу сказать вам, что парсинг по-прежнему очень важен.
Спасибо за прочтение этого поста. Не стесняйтесь оставлять комментарии ниже по темам, которые вас могут заинтересовать. В будущем я буду публиковать больше постов о своем опыте и проектах.
О авторе
Low Wei Hong - Data Scientist в Shopee. Его опыт включает в себя скрапинг веб-сайтов, создание конвейеров данных и реализацию моделей машинного обучения для решения бизнес-задач.
Он предоставляет услуги парсинга, которые позволяют получить точные и очищенные данные, которые вам нужны. Вы можете посетить этот веб-сайт, чтобы просмотреть его портфолио и связаться с ним для получения услуг парсинга.
Вы можете связаться с ним через LinkedIn и Medium.
Low Wei Hong - Средний
Читайте записи Low Wei Hong на Medium. Data Scientist в Shopee. Каждый день Low Wei Hong и тысячи других...
medium.com