Closed linoxoidunix closed 10 months ago
Hi,
Thanks for noticing this. It was documentation issue. (The README now suggests using the unstable channel -- this commit.)
Let me explain:
There are two sources for packages -- stable and unstable. The former is for the releases. The latter is "head".
Therefore, when installing packages from stable, you must select the roq-samples code for the latest release. Currently you would achieve it by git checkout 4a8008d
(release 0.9.8) and then rebuild.
Can you update roq-api, which is installed via conda, so that it is compatible with roq-samples sources?
Should be solved by updating the documentation suggesting that you download packages from unstable.
I also tried to build the roq-api library from source. This library compiled without problems. Then I tried to compile roq-samples using the roq-api library compiled from source code. As a result, I received other errors related to the lack of some *.h files
That's because other dependencies are closed source. You can find them listed in the main CMakeLists.txt file, e.g. roq-io, roq-utils, ...
Finally, if you try this again:
conda deactivate
(or simply open a new terminal)rm -rf opt/
and rm CMakeCache.txt
git pull origin HEAD:master
(fetch latest README.md)Alternatively, just try it all from scratch.
thank you for answering so quickly the problem was solved
Many thanks for the feedback!
Feel free to reach out if you need anything else.
Hello dear developers I encountered a problem building the roq-samples
home/linoxoidunix/Programming/C++/roq-samples/src/roq/samples/import/processor.cpp:115:7: error: 'roq::ReferenceData' has no non-static data member named 'exchange_time_utc' 115 | }, | ^ /home/linoxoidunix/Programming/C++/roq-samples/src/roq/samples/import/processor.cpp:127:7: error: 'roq::MarketStatus' has no non-static data member named 'exchange_time_utc' 127 | }, | ^
I looked at the ReferenceData which is stored in /home/linoxoidunix/conda/pkgs/roq-api-0.9.8-h666e512_0/include/roq/reference_data.hpp
*struct ROQ_PUBLIC ReferenceData final { uint16_t stream_id = {}; //!< Stream identifier std::string_view exchange; //!< Exchange std::string_view symbol; //!< Symbol std::string_view description; //!< Description SecurityType security_type = {}; //!< Security type std::string_view base_currency; //!< Base currency std::string_view quote_currency; //!< Quote currency std::string_view margin_currency; //!< Margin currency std::string_view commission_currency; //!< Commission currency double tick_size = NaN; //!< Minimum price increment double multiplier = NaN; //!< Multiplier (notional) double min_notional = NaN; //!< Minimum notional (price quantity) double min_trade_vol = NaN; //!< Minimum trade volume double max_trade_vol = NaN; //!< Maximum trade volume double trade_vol_step_size = NaN; //!< Trade volume step size OptionType option_type = {}; //!< Option type std::string_view strike_currency; //!< Strike currency double strike_price = NaN; //!< Strike price std::string_view underlying; //!< Underlying instrument std::string_view time_zone; //!< Time-zone std::chrono::days issue_date = {}; //!< Issue date std::chrono::days settlement_date = {}; //!< Settlement date std::chrono::seconds expiry_datetime = {}; //!< Expiry datetime std::chrono::seconds expiry_datetime_utc = {}; //!< Expiry datetime bool discard = false; //!< Discard market data updates? };**
this structure really does not have such fields as exchange_time_utc and other fields
here is the structure ReferenceData
*struct ROQ_PUBLIC ReferenceData final { uint16_t stream_id = {}; //!< Stream identifier std::string_view exchange; //!< Exchange std::string_view symbol; //!< Symbol std::string_view description; //!< Description SecurityType security_type = {}; //!< Security type std::string_view base_currency; //!< Base currency std::string_view quote_currency; //!< Quote currency std::string_view margin_currency; //!< Margin currency std::string_view commission_currency; //!< Commission currency double tick_size = NaN; //!< Minimum price increment double multiplier = NaN; //!< Multiplier (notional) double min_notional = NaN; //!< Minimum notional (price quantity) double min_trade_vol = NaN; //!< Minimum trade volume double max_trade_vol = NaN; //!< Maximum trade volume double trade_vol_step_size = NaN; //!< Trade volume step size OptionType option_type = {}; //!< Option type std::string_view strike_currency; //!< Strike currency double strike_price = NaN; //!< Strike price std::string_view underlying; //!< Underlying instrument std::string_view time_zone; //!< Time-zone std::chrono::days issue_date = {}; //!< Issue date std::chrono::days settlement_date = {}; //!< Settlement date std::chrono::seconds expiry_datetime = {}; //!< Expiry datetime std::chrono::seconds expiry_datetime_utc = {}; //!< Expiry datetime std::chrono::nanoseconds exchange_time_utc = {}; //!< Exchange timestamp, possibly from matching engine (UTC) uint64_t exchange_sequence = {}; //!< Exchange message sequence number std::chrono::nanoseconds sending_time_utc = {}; //!< Exchange sending timestamp (UTC) bool discard = false; //!< Discard market data updates? };** which is stored in /home/linoxoidunix/Programming/C++/roq-api/include/roq/reference_data.hpp
You may notice that in this structure there are fields like exchange_time_utc
Thus, the roq-samples sources (https://github.com/roq-trading/roq-samples) are not compatible with the roq-api package, which is installed via conda
Can you update roq-api, which is installed via conda, so that it is compatible with roq-samples sources?
I also tried to build the roq-api library from source. This library compiled without problems. Then I tried to compile roq-samples using the roq-api library compiled from source code. As a result, I received other errors related to the lack of some *.h files