# - CryptoStruct Trading System ## Getting Started - [CryptoStruct Trading Platform](https://docs.cryptostruct.com/getting-started/welcome.md): CryptoStruct is a high-frequency trading platform for institutional crypto desks, running into the billions of orders per day across venues that each bring their own API, data formats, and failure modes. - [System Architecture](https://docs.cryptostruct.com/getting-started/system.md): CryptoStruct is built to run thousands of strategies across multiple exchanges. Two constraints shape the architecture: strategies typically need to live close to the exchanges they trade against (latency dominates everything else), and a single firm typically operates in more than one region. ## Strategy Development - [SDK Setup](https://docs.cryptostruct.com/strategy-development/sdk-setup.md): The Strategy SDK is what you use to build CryptoStruct strategies. This page covers the contents of the distribution, the toolchain you need, and how to install it on Windows or Linux. - [Strategy Development](https://docs.cryptostruct.com/strategy-development/basics.md): This page covers the development patterns you use most often when building strategies with the Strategy SDK: declaring parameters, placing orders, handling market-data callbacks, handling order-entry callbacks, and reading rate-limit load. - [Message Channels](https://docs.cryptostruct.com/strategy-development/message-channels.md): A message channel is a named subscription-based broadcast bus. A strategy publishes to a channel by name, and every subscriber on that channel receives the message. - [Testing](https://docs.cryptostruct.com/strategy-development/testing.md): A backtest replays previously recorded market data to drive a simulated market. Your strategy connects to that simulation, receives market updates, and places orders. - [Advanced SDK Features](https://docs.cryptostruct.com/strategy-development/advanced.md): Beyond the basics in Basics, the Strategy SDK has four features worth their own page: dynamic instruments, margin trading, trigger orders, and rate-limit load. ## Strategy Server - [Strategy Server Overview](https://docs.cryptostruct.com/strategy-execution/strategy-server.md): The Strategy Server is the runtime that hosts user-developed trading strategies. It loads the strategy JARs, manages the lifecycle of every strategy instance, distributes market data and order events to those instances, and enforces risk limits before any order leaves the process. - [Strategy Server API](https://docs.cryptostruct.com/strategy-execution/strategy-server-api.md): The Strategy Server exposes two HTTP-based APIs: a REST API for managing strategies and reading metrics, and a WebSocket API for real-time access to message channels. ## Market Data API - [Accessing Market Data](https://docs.cryptostruct.com/market-data-api/accessing-data.md): Every instrument in the CryptoStruct Trading System has a unique Instrument ID that is consistent across exchanges. The Backend UI is the easiest way to look one up: browse the available instruments and pick out the IDs you need. - [Self-Service Access](https://docs.cryptostruct.com/market-data-api/self-service.md): There are two ways to reach the CryptoStruct realtime market data feed. Managed access is what Accessing Data describes: you run a Backend installation, look up hosts through the master data API, and your server's IP is whitelisted for the markets you use. - [Market Data Protocol Specification](https://docs.cryptostruct.com/market-data-api/protocol.md): The CryptoStruct market data protocol uses JSON arrays for every message: requests, responses, and events. The first element of the array is always an integer message type; the rest is type-specific. - [Historical Data](https://docs.cryptostruct.com/market-data-api/historical-data.md): CryptoStruct records market data for every instrument and trading day across every supported market. The recorded files are compressed with zstd (https://github.com/facebook/zstd). - [SBE Encoding](https://docs.cryptostruct.com/market-data-api/sbe.md): JSON is human-readable and works everywhere, but it is verbose. Decimal values encoded as strings are particularly wasteful. The Market Data Adapter also publishes the same data over SBE (https://www.fixtrading.org/standards/sbe/) for clients that want something denser and faster to parse. - [Binary Framing](https://docs.cryptostruct.com/market-data-api/binary-framing.md): Unix domain sockets are raw byte streams with no built-in message boundaries. To pull individual market-data messages out of the stream, the Market Data Adapter prefixes each one with a small header. ## Trading API - [Core Concepts](https://docs.cryptostruct.com/trading-api/concepts.md): The order entry protocol uses a small set of conventions for identifiers, timestamps, rate-limit reporting, and capability discovery. This page defines them once. - [Order Entry Protocol](https://docs.cryptostruct.com/trading-api/protocol.md): The Order Entry Protocol is the message-based interface a client uses to manage orders. It carries place, amend, replace, and cancel requests in one direction, and order updates, fills, position changes, wallet balances, and rate-limit reports back the other. - [Enumerations](https://docs.cryptostruct.com/trading-api/enums.md): Reference for every enumeration the order entry protocol uses.