基本数据类型
数据类型决定了数据的存储和处理方式,是编程的核心基础。以下是量化交易EA开发中高频使用的四种类型:
一、数据类型的本质
计算机需要不同“容器”存储不同数据(如数字、文本),数据类型即定义了这些“容器”的规则:
- 整型:存储整数(如年龄、手数)
- 浮点型:存储小数(如价格、指标值)
- 字符串:存储文本(如交易品种、提示信息)
- 布尔型:存储逻辑值(是/否、开/关)
二、核心数据类型详解
1. 整型
- 作用:存储整数(正/负/零),无小数部分。
- 语法:cpp
int age = 18; // 普通整型(-2147483648 ~ 2147483647) long largeNumber = 1000000; // 长整型(范围更大,一般用不到)
- 注意:
- 禁止存储小数(如
int price = 18.5;
会编译警告,实际存储为18
,导致精度丢失)。 - 适用场景:手数(
0.01
手需用浮点型,1
手可用整型)、点差(如5
点)、交易笔数。
- 禁止存储小数(如
2. 浮点型(float)
- 作用:存储带小数的数据,分为单精度(
float
)和双精度(double
)。 - 语法:cpp
float rsi = 35.5; // 单精度(7位有效数字,如12345.67) 编译会报警告 double price = 19999.99; // 双精度(15位有效数字,推荐使用)
- 区别:
float
:精度低,速度略快,存储小数可能丢失精度(如12345.6789
会被截断)。double
:精度高,适应性强,量化中优先使用(价格、指标计算需高精度)。
- 实战:存储货币对价格(如
EURUSD=1.0750
)、盈亏金额(-500.50
)。
3. 字符串
- 作用:存储文本内容,以英文双引号
"
包裹。 - 语法:cpp
string symbol = "EURUSD"; // 交易品种 string message = "交易成功!"; // 提示信息
- 注意:
- 区分大小写(
"EURUSD"
和"eurusd"
是不同字符串)。 - 可包含特殊字符(如
"BTC/USD"
),但需用转义符处理特殊符号(后续课程讲解)。
- 区分大小写(
- 应用:获取当前品种(
Symbol()
函数返回字符串)、日志信息记录。
4. 布尔型
- 作用:存储逻辑状态,仅有两个值:
true
(真/是)和false
(假/否)。 - 语法:cpp
bool isTradeEnable = true; // 是否允许交易 bool hasError = false; // 是否有错误
- 逻辑应用:
- 条件判断(如
if (isTradeEnable) { 开仓; }
)。 - 状态控制(如
false
时停止策略运行)。
- 条件判断(如
三、实战案例与易错点
整型误用导致的精度问题
cppint wrongPrice = 18.5; // 警告:自动截断为18,编译不报错但逻辑错误 double correctPrice = 18.5; // 正确:使用双精度浮点型
布尔型的“开关”逻辑
cppbool isNight = CheckTime(23, 00); // 判断是否到23:00 if (isNight) StopTrade(); // 是则停止交易
字符串与数值的转换
- 数值转字符串:
string priceStr = (string)100.5;
- 字符串转数值:
double price = StringToDouble("100.5");
- 数值转字符串: