Skip to content

基本数据类型

数据类型决定了数据的存储和处理方式,是编程的核心基础。以下是量化交易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时停止策略运行)。

三、实战案例与易错点

  1. 整型误用导致的精度问题

    cpp
    int wrongPrice = 18.5;  // 警告:自动截断为18,编译不报错但逻辑错误  
    double correctPrice = 18.5;  // 正确:使用双精度浮点型
  2. 布尔型的“开关”逻辑

    cpp
    bool isNight = CheckTime(23, 00);  // 判断是否到23:00  
    if (isNight) StopTrade();  // 是则停止交易
  3. 字符串与数值的转换

    • 数值转字符串:string priceStr = (string)100.5;
    • 字符串转数值:double price = StringToDouble("100.5");