/
Stormbery
/
CEX
Обзор
Документация
Войти
/
Stormbery
/
CEX
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
include/coin.h
102 строки
5 KB
stormbery
deleted plots objects
20 сен 2024, 21:17
20 сен 2024, 21:17
4e0e245
Код
Авторство
О чём код?
/** * \file Файл описания класса Coin * * Файл содержит определение класса для выполнения основных вычислений */ #ifndef COIN_H #define COIN_H #include <boost/circular_buffer.hpp> #include <boost/enable_shared_from_this.hpp> #include <boost/container/vector.hpp> #include <boost/json/monotonic_resource.hpp> #include <boost/filesystem.hpp> #include <boost/log/trivial.hpp> #include <boost/log/core.hpp> #include <boost/log/utility/setup/file.hpp> #include <boost/log/utility/setup/common_attributes.hpp> #include <boost/log/expressions.hpp> #include <liburing.h> #include <fcntl.h> #include "enums.h" #include <iostream> #include "websocketstream.h" using namespace boost; class Coin: public enable_shared_from_this<Coin> { Coin &operator = (const Coin &) = delete; Coin (const Coin &source) = delete; WebSocketStream m_websocketstream; std::string m_name; //std::string m_host = "stream-testnet.bybit.com"; std::string m_host = "stream.bybit.com"; std::string m_streamspot = "/v5/public/spot"; std::string m_subscription; std::string m_SideTaker; std::string m_fileOrder[MAX_NUMBER_FILES]; ///полные пути файлов для записи // std::string m_fileName[MAX_NUMBER_FILES] = {"/order.txt", "/order_cat.txt"}; ///имена файлов для записи std::string m_fileName[MAX_NUMBER_FILES] = {"/order.txt"}; ///имена файлов для записи std::string m_write_to_file; std::string m_write_to_file_old; std::string m_write_to_file_1; std::string m_write_to_file_2; bool m_BTPublicTrade; unsigned long long m_ts50, m_tsPublicTrade;///метка формирования запроса unsigned long long m_cts50,m_ctsPublicTrade;///метка генерации запроса unsigned long long m_u50;///метка Update ID запроса 20 мсек ( 50 data) (ID = 0 рестарт на CEX) unsigned long long m_seq50;///метка перекрстной последовательности запроса 20 мсек ( 50 data) double m_bid50_value;///сырой бид double m_ask50_value;///сырой аск double m_ValuePublicTrade;///сырой обЪем double m_PricePublicTrade;///сырая цена std::map <double, double, std::greater <double>> m_bid50;///биды 20 мсек ( 50 data) std::map <double, double> m_ask50;///аски 20 мсек ( 50 data) circular_buffer<std::map< double, double, std::greater <double>>> m_bid50_hyst{50};///биды исторические 200 мсек circular_buffer<std::map< double, double>> m_ask50_hyst{50};///аски исторические 200 мсек uint32_t outf[MAX_NUMBER_FILES];///дескриптор файла struct io_uring_params m_IO_uring_params;///конфигурация кольца struct io_uring m_IO_uring;///инстанс кольца struct io_uring_sqe *m_sqe[MAX_NUMBER_FILES];///очередь заданий struct io_uring_cqe *m_cqe[MAX_NUMBER_FILES];///очередь результатов std::string m_SideTaker_Str;/// Направление сделки Buy(+) или Sell(-) std::vector <double> m_ValuePublic;/// нормированный обЪем (фильт по мин. обЪему сделки) std::vector <double> m_PricePublic;/// нормированная цена ( фильт по мин. обЪему сделки) std::vector <double> m_PriceVecSmall;/// вспомогательный вектор для круговой записи m_PricePublic std::vector<double> m_time ;///нормированной значение меток времени (от 0 ... ITEM_REGRESS с шагом 1 ) std::vector<double> m_PricePublicRegress;///нормированная цена ( фильт по мин. обЪему сделки + регрессия) std::vector<double> m_ValueVecSmall; std::vector<double> m_Value_SellBuy_VecSmall; std::vector <double> m_Value_SellBuy;///нормированный обЪем (фильт по мин. обЪему сделки + m_PricePublic* (Buy(+) или Sell(-)) std::vector<double> m_Value_Accumulate_VecSmall; std::vector <double> m_Value_Accumulate;///нормированный обЪем (фильт по мин. обЪему сделки + Buy(+) или Sell(-)) double bid50_0_price, bid50_0_value,bid50_1_price, bid50_1_value, ask50_0_price, ask50_0_value,ask50_1_price, ask50_1_value; double m_Price_Old; double m_Value_Old; double m_Value_Temp; double m_Price_Old_Old; double m_Value_Old_Old; double m_ValuePublicToWrite; double m_Value_SellBuy_ToWrite; double m_Value_Accumulate_ToWrite; uint64_t m_count; void Initlog();///инициализация системы логирования void GetOrder50Value();/// вычисление обЪема bid50 ask50 std::vector<double> Regress(const std::vector<double> &x, const std::vector<double> &y, uint32_t count, uint32_t degree);///count - кол. элементов с конца degree -степень полинома public: Coin(std::string name); ~Coin(); void AddPublicStream(); void StopWebSocket(); void Show(); void ParsePublicStream(beast::flat_buffer buffer); void WebSocketLoggingError (std::string str); void WebSocketLoggingTrace (std::string str); }; #endif // COIN_H