

Очень простая, многопоточная серверная и клиентская библиотека Named Pipe, реализованная с использованием C++11. Проект был проверен на компиляторе mingw 7.3.0 x64. Папка code_blocks содержит примеры для IDE Code::Blocks. Не забудьте в проектах указать свой компилятор, иначе проект не соберется. Сделал либу только сегодня, так что в ней могут быть ошибочки.
#include <iostream>
#include "named-pipe-server.hpp"
int main() {
/* в конструкторе сервера можно также задать размер буфера */
SimpleNamedPipe::NamedPipeServer server("my_server");
/* обработчики событий */
server.on_open = [&](SimpleNamedPipe::NamedPipeServer::Connection* connection) {
std::cout << "open, handle: " << connection->get_handle() << std::endl;
};
server.on_message = [&](SimpleNamedPipe::NamedPipeServer::Connection* connection,
const std::string &in_message) {
/* обрабатываем входящие сообщения */
std::cout << "message " << in_message << ", handle: " << connection->get_handle() << std::endl;
connection->send("ok");
};
server.on_close = [&](SimpleNamedPipe::NamedPipeServer::Connection* connection) {
std::cout << "close, handle: " << connection->get_handle() << std::endl;
};
server.on_error = [&](SimpleNamedPipe::NamedPipeServer::Connection* connection, const std::error_code &ec) {
std::cout << "error, handle: " << connection->get_handle() << ", what " << ec.value() << std::endl;
};
/* запускаем сервер */
server.start();
std::system("pause");
/* останавливаем сервер
* (деструктор класса сам выполнит остановку, вызывать не обязательно)
*/
server.stop();
std::cout << "close program" << std::endl;
return EXIT_SUCCESS;
}Доброго времени суток!
Прошу помощи, не могу найти биржевые котировки на сырье, а именно: уксусная кислота (acetic acid), муравьиная кислота (formic acid) и гидроксид калия (potassium hydroxide).
Подскажите, знающие люди, где можно посмотреть?
Всем хороших выходных!
Не вдохновлено ссылками ниже, но напомнило о выкладывании в публичный доступ.
smart-lab.ru/blog/620330.php
smart-lab.ru/blog/616708.php
Всем привет!
В ходе тестов калькулятора портфелей
github.com/Oppositus/CalculatorAA
возникло понимание, что его внутренние инструменты импорта котировок уже не работают. Так давайте напишем скрипт, который будет получать их через MOEX ISS API. Вывод скрипта-CSV файл.
Репозиторий github.com/helpau/MOEX_ETFs/blob/master/main.py
Тот же код:
tickers=["FXGD","FXUS","FXIT","SBSP","FXRL","FXRB","FXRU","SBCB","SBGB","SBRB"]
import requests
import apimoex
import pandas as pd
df=pd.DataFrame()
for ticker in tickers:
with requests.Session() as session:
data = apimoex.get_board_history(session, ticker,board="TQTF")
df1 = pd.DataFrame(data)
df1.set_index('TRADEDATE', inplace=True)
df.info()
df[ticker]=df1["CLOSE"]
df.to_csv("your_table.csv",sep=";")
P.S. Касательно самого калькулятора портфелей-полученный файл необходимо дополнительно обработать, чтобы на 1 год для 1 ETF было 12 записей. Особо пытливые могут исследовать, в какой день лучше проводить ребалансировку.
Навеяло этим постом от очередного энтузиаста: https://smart-lab.ru/blog/620330.php
Коллеги! Предлагается помнить, что нас довольно много, и ответственно относиться к предоставляемым возможностям бесплатно забирать данные с бирж и добрых брокеров.
Ну вставляйте вы вызовы sleep() в циклы, это же не ХФТ у вас!
С той стороны тоже могут сидеть не вполне пряморукие товарищи, которым может быть проще прикрыть эту всю халяву, чем делать так чтобы она всегда работала, кто бы какой своей поделкой в неё не долбил. Опять же чуть что начнёте возмущаться.
И если вы не в состоянии корректно написать закачивалку данных, то может вообще не стоит заниматься алготорговлей, это же минимум в сто раз сложнее!
Всем привет!
Вдохновился данным постом ( https://smart-lab.ru/blog/616708.php ) и решил немного подпилить код, пока карантин делать нечего.
Кто не знал как скачивать котировки по одной компании вручную — сайт для скачивания котировок по одному тикеру (финам):
www.finam.ru/profile/moex-akcii/gazprom/export/
Тут через питон скачиваем котировки из текстового файла, в который вносим желаемые тикеры компаний:

Сайт для скачивания среды программирования Python (PyCharm), пойдет обычная версия:
www.jetbrains.com/ru-ru/pycharm/download/#section=windows
Файлы из видео, в том числе и со списком тикеров:
yadi.sk/d/R3BSbFjV3Pfydg
Код программы:
import requests
import datetime
import pathlib
import apimoex
import pandas as pd
board = 'TQBR'
with open("C:/PYEX/TICK.txt", "r") as TICKs:
TICKs = [line.rstrip() for line in TICKs]
pathlib.Path("C:/PYEX/Database/{}".format(board)).mkdir(parents=True, exist_ok=True)
process = 0
with requests.Session() as session:
for TICK in TICKs:
process = process + 1
print((process / len(TICKs)) * 100, ' %')
data = apimoex.get_board_history(session, TICK, board=board)
if data == []:
continue
df = pd.DataFrame(data)
df = df[['TRADEDATE','CLOSE']]
df.to_excel("C:/PYEX/Database/{}/{}.xlsx".format(board,TICK), index=False)import requests
import datetime
import pathlib
SECIDs = ["GAZP", "BANEP", "LKOH"]
DISK = "E"
for SECID in SECIDs:
from_date = "2020-05-04"
to_date = "2005-01-03"
while str(to_date) != from_date:
to_date = str(to_date)
to_date = to_date.split('-')
a = datetime.date(int(to_date[0]), int(to_date[1]), int(to_date[2]))
b = datetime.timedelta(days=140)
to_date = a + b
pathlib.Path("{}:/{}/{}".format(DISK, "Database_MOEX", SECID)).mkdir(parents=True, exist_ok=True)
filename = SECID + "_" + str(to_date) + ".csv"
with requests.get("http://iss.moex.com/iss/history/engines/stock/markets/shares/boards/tqbr/securities/{}.csv?date={}".format(SECID, to_date)) as response:
with open("{}:/Database_MOEX/{}/{}".format(DISK, SECID, filename), 'wb') as f:
for chunk in response.iter_content():
f.write(chunk)Для начала пройдемся по его плюсам и минусам. Самый главный минус, что этот парсер качает только определенный период, который уникален для каждой акции, судя по всему для увеличения этого периода надо кинуть бирже на лапу:), и то что информация предоставляется за день, теперь перейдем к плюсам: можно выкачивать историю за определенный период для нескольких инструментов сразу (их количество ограничивается лишь количеством инструментов на мосбиржи), есть возможность назначать диск для сохранения информации, быстрота выгрузки данных.