---
id: document_item.mooncmd-protocol-description
page_type: documentation_article
title: "MoonCMD 协议说明"
description: "MoonCMD 二进制格式的技术说明：little-endian 数据类型、头部结构、历史价格、订单、图表上的成交、Delta 和成交量。"
section: documentation
category: "补充材料 / MoonCMD 远程控制协议"
url: https://moonbot.pro/zh/documentation/mooncmd-remote-control-protocol/mooncmd-protocol-description?format=md
locale: zh
alternate_ru: https://moonbot.pro/ru/documentation/mooncmd-remote-control-protocol/mooncmd-protocol-description?format=md
alternate_en: https://moonbot.pro/documentation/mooncmd-remote-control-protocol/mooncmd-protocol-description?format=md
parent: https://moonbot.pro/zh/documentation/mooncmd-remote-control-protocol?format=md
previous: https://moonbot.pro/zh/documentation/mooncmd-remote-control-protocol/general-information-about-the-mooncmd-protocol?format=md
next: https://moonbot.pro/zh/documentation/mooncmd-remote-control-protocol/order-database?format=md
status: published
updated_at: 2026-11-11T00:08:07+03:00
---

# MoonCMD 协议说明

### 基本类型

字节序：所有数值类型均为 **little-endian**（小端序）。

类型：

- word – 2 字节（UInt16）；
- integer – 4 字节（Int32）；
- double – 8 字节（IEEE 754，Float64）；
- boolean – 1 字节（0 = false，1 = true）；
- TDateTime – 8 字节（double），表示自 1899-12-30 起的天数：\
  0.0 = 1899-12-30 00:00\
  1.0 = 1899-12-31 00:00\
  0.5 = 1899-12-30 12:00，依此类推。

**短字符串（ShortString）：**\
\- string\[40\] = 41 字节：\
1 字节长度 Len（0..40），随后是 Len 字节的字符（ANSI / 单字节编码）。

UTF-8 字符串（WriteStringToStreamUtf8）：\
\- 2 字节：word L – 字符串数据的字节长度\
\- L 字节：不带 BOM 的 UTF-8。

### 文件头

读取顺序：

1. 读取 word ver（2 字节）– 格式版本。
2. 读取 4 个 UTF-8 字符串：
   1. MarketName：word L，随后 L 字节 UTF-8；
   2. MarketCurrency：word L，随后 L 字节 UTF-8；
   3. PumpChannel（cfg.PumpChannel）：word L，随后 L 字节 UTF-8；
   4. bnMarketName：word L，随后 L 字节 UTF-8。

### 时间区间

读取顺序：

1. 读取 StartTime（8 字节 double，TDateTime）；
2. 读取 EndTime（8 字节 double，TDateTime）。

### 历史价格线（HistoryPrice）

THistoricalPrice 元素（更正）：\
在数据流中以 (Time, Price) 数据对的形式使用，两者均为 double。

元素类型：

- 8 字节：double Time；
- 8 字节：double Price。

**读取顺序：**

1. 读取 integer N（4 字节）– 元素数量。
2. 如果 N > 0，连续读取 N 个元素：\
   对于 i = 0..N-1：
   1. 8 字节：Time\[i\]；
   2. 8 字节：Price\[i\]。

### 订单 pData（如果已写入）

在数据流中的形式如下。

**读取顺序**

1. 读取 integer N（4 字节）：
   1. 如果写入时 pData = nil，则 N = 0（后面没有订单）；
   2. 如果 pData \<> nil，则 N = 2（正好两个订单）
2. 如果 N > 0，读取 N=2 次：买入订单和卖出订单：
   1. OrderID：TOrderUID = string\[40\]：\
      \- 1 字节：Len（0..40）\
      \- Len 字节：标识符数据（单字节字符） （如果想严格复现 Delphi ShortString，可以始终读取 41 字节， 但解析时只需：1 字节长度 + Len 字节数据）
   2. MeanPrice：\
      \- 8 字节：double
   3. CreateTime：\
      \- 8 字节：double（TDateTime）
   4. OpenTime：\
      \- 8 字节：double（TDateTime）
   5. CloseTime：\
      \- 8 字节：double（TDateTime）

### 图表上的成交（成交标记，OrdersH）

THPackedHOrder 元素：

- 8 字节：double Time（TDateTime）
- 8 字节：double Price（卖出成交的价格以“−”号写入）

\- 8 字节：double Time（TDateTime）

**读取顺序**

1. 读取 integer N（4 字节）– 成交数量。
2. 如果 N > 0，连续读取 N 个元素：\
   对于 j = 0..N-1：\
   \- 8 字节：Time\[j\]\
   \- 8 字节：Price\[j\]。

### Delta / 成交量数据块（两种版本）

1. Last1mDelta – 8 字节；
2. Last5mDelta – 8 字节；
3. Last1hDelta – 8 字节；
4. Last3hDelta – 8 字节；
5. Last24hDelta – 8 字节；
6. PumpDelta1h – 8 字节；
7. DumpDelta1h – 8 字节；
8. hvol – 8 字节；
9. hvolFast – 8 字节；
10. TestPriceDown – 8 字节；
11. TestPriceUp – 8 字节；
12. IsMoonShot – 1 字节；
13. SessionProfit – 8 字节。

### 成交均价线（ClosestPrices）

元素格式与上文的 THistoricalPrice 记录相同：\
(Time, Price)，两者均为 double。

元素类型：

- 8 字节：double Time；
- 8 字节：double Price。

**读取顺序**

1. 读取 integer N（4 字节）– 点的数量。
2. 如果 N > 0，连续读取 N 个元素：\
   对于 k = 0..N-1：\
   \- 8 字节：Time\[k\]\
   \- 8 字节：Price\[k\]。\
   （代码中先写入 N=0，然后写入各元素，之后再返回并改写 N。\
   对读取方而言，重要的是最终形式：数量和 N 个元素。）

### 迷你 K 线（SCandles）

TMiniCandle 结构：

- 8 字节：Time – TDateTime（double）；
- 4 字节：Cnt – integer（Int32）；
- 8 字节：MinPrice – double；
- 8 字节：MaxPrice – double；
- 8 字节：BuyVol – double；
- 8 字节：SellVol – double。

单个 TMiniCandle 元素的大小 = 44 字节。

**读取顺序**

1. 读取 integer N（4 字节）– 迷你 K 线数量。
2. 如果 N > 0，对每根 K 线（i = 0..N-1）读取：
   1. Time – 8 字节（double，TDateTime）；
   2. Cnt – 4 字节（integer）；
   3. MinPrice – 8 字节（double）；
   4. MaxPrice – 8 字节（double）；
   5. BuyVol – 8 字节（double）；
   6. SellVol – 8 字节（double）。

### 文件的最终读取顺序

1. word ver；
2. UTF-8 字符串 MarketName；
3. UTF-8 字符串 MarketCurrency；
4. UTF-8 字符串 PumpChannel；
5. UTF-8 字符串 bnMarketName；
6. TDateTime StartTime（double）；
7. TDateTime EndTime（double）；
8. integer N_History；
9. N_History \* (Time, Price)，类型为 double,double；
10. N_Orders \* (OrderID string\[40\], MeanPrice, CreateTime, OpenTime, CloseTime)；
11. integer N_Trades；
12. N_Trades \* (Time, Price)，类型为 double,double；
13. Delta / 成交量数据块；
14. double SessionProfit；
15. integer N_ClosestPrices；
16. N_ClosestPrices \* (Time, Price)，类型为 double,double；
17. integer N_SCandles；
18. N_SCandles \* TMiniCandle (Time, Cnt, MinPrice, MaxPrice, BuyVol, SellVol)。

## 导航

路径: [首页](https://moonbot.pro/zh?format=md) / [文档](https://moonbot.pro/zh/documentation?format=md) / [补充材料](https://moonbot.pro/zh/documentation/additional-materials?format=md) / [MoonCMD 远程控制协议](https://moonbot.pro/zh/documentation/mooncmd-remote-control-protocol?format=md) / MoonCMD 协议说明

上级栏目: [MoonCMD 远程控制协议](https://moonbot.pro/zh/documentation/mooncmd-remote-control-protocol?format=md)

上一页: [“MoonCMD”协议概述](https://moonbot.pro/zh/documentation/mooncmd-remote-control-protocol/general-information-about-the-mooncmd-protocol?format=md)

下一页: [订单数据库](https://moonbot.pro/zh/documentation/mooncmd-remote-control-protocol/order-database?format=md)

## 相关内容

- [订单数据库](https://moonbot.pro/zh/documentation/mooncmd-remote-control-protocol/order-database?format=md)
- [仓库结构](https://moonbot.pro/zh/documentation/mooncmd-remote-control-protocol/structure-of-repositories?format=md)
