MetaTrader 4帮助
FXT 格式的历史文件

FXT 格式的历史文件

测试者应用*.FXT 文件形成柱状图。每一个形成柱状的连线记录会在状态栏上呈现。 当运用模型柱时,如果它刚开始形成,测试者从这个文件中选择新的模型柱并更新前边的模型柱或另外增添。

测试/优化时可以拒绝标准柱的模式化并使用自己的数据文件。 为此必须禁止 "重新估算" 并把所必需的FXT文件放入/TESTER/HISTORY文件夹.文件名必须以 "[商品名称][周期时段]_[模型类型 (0 ― 按照每个 tick, 1 ―按照检测点, 2 ― 按照开价)].FXT" (不带空格)格式显示. 例如,它可以是 "EURUSD1440_1.FXT" 在"EURUSD" 是商品保证金的位置 "1440" D1 (1440 分钟, 24 小时)的时段, 并且 "1"意思是检测点标准化。

下面给出一个简短的格式描述。它是带有主题开始的:

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
struct TestHistoryHeader
  {
   int               version;            // 405
   char              copyright[64];      // 版权
   char              symbol[12];
   int               period;
   int               model;              //生成订单号序列的模式类型
   int               bars;               // 历史中的柱数
   time_t            fromdate;           // 从该日期生成订单号
   time_t            todate;             // 订单号生成截止于此日期
   double            modelquality;       // 模式质量
   //---- 普通参数
   char              currency[12];       // 货币基础
   int               点差;
   int               数字;
   double            点;
   int               lot_min;            // 最小手数大小
   int               lot_max;            // 最大手数大小
   int               lot_step;
   int               stops_level;        // 止损水平值
   int               gtc_pendings;       // 在一天结束的时候关闭挂单的指示
   //---- 利润计算参数
   double            contract_size;      // 合约大小
   double            tick_value;         // 一个订单号值
   double            tick_size;          // 一个订单号大小
   int               profit_mode;        // 利润计算模式        { PROFIT_CALC_FOREX, PROFIT_CALC_CFD, PROFIT_CALC_FUTURES }
   //---- 库存费计算
   int               swap_enable;        // 启用库存费
   int               swap_type;          // 库存费类型                   { SWAP_BY_POINTS, SWAP_BY_DOLLARS, SWAP_BY_INTEREST }
   double            swap_long;
   double            swap_short;         // 整夜库存费的值
   int               swap_rollover3days; // 库存费延期交割三日
   //---- 预付款计算
   int               leverage;           // 杠杆
   int               free_margin_mode;   // 可用预付款计算模式   { MARGIN_DONT_USE, MARGIN_USE_ALL, MARGIN_USE_PROFIT, MARGIN_USE_LOSS }
   int               margin_mode;        // 预付款计算模式        { MARGIN_CALC_FOREX,MARGIN_CALC_CFD,MARGIN_CALC_FUTURES,MARGIN_CALC_CFDINDEX };
   int               margin_stopout;     // 预付款止损离场水平
   int               margin_stopout_mode;// 止损离场检查模式            { MARGIN_TYPE_PERCENT, MARGIN_TYPE_CURRENCY }
   double            margin_initial;     // 预付款请求
   double            margin_maintenance; // 预付款维持请求
   double            margin_hedged;      // 预付款对冲请求
   double            margin_divider;     // 预付款分割
   char              margin_currency[12];// 预付款货币
   //---- 手续费计算
   double            comm_base;          // 基本手续费
   int               comm_type;          // 基本手续费类型          { COMM_TYPE_MONEY, COMM_TYPE_PIPS, COMM_TYPE_PERCENT }
   int               comm_lots;          // 每手或每笔交易的手续费 { COMMISSION_PER_LOT, COMMISSION_PER_DEAL }
   //---- 内部使用
   int               from_bar;           // 起始日期柱数
   int               to_bar;             // 截止日期柱数
   int               start_period[6];    // 最小周期模式开始的柱数
   int               set_from;           // 测试设置的开始日期
   int               set_to;             // 测试设置的结束日期
   //----
   int               freeze_level;       // 以点数计算的订单冻结水平
   int               generating_errors;  
   //----
   int               reserved[60];;
  };

然后,模型柱的安排如下:

#pragma pack(push,1)
struct TestHistory
  {
   time_t            otm;                // bar time
   double            open;               // OHLCV 值
   double            low;
   double            high;
   double             close;
   double            volume;
   time_t            ctm;                // 柱内的当前时间
   int               flag;               // 标记启动EA (0 - 柱将被更改,但是EA将不会启动)
  };
#pragma pack(pop)