📈
用 Tick 数据做订单流指标(含文件持久化)
把逐笔报价画成线或等量烛形,并写文件重启可恢复
#MQL5#Tick#订单流#等量K线#文件持久化
Tick 是经纪商实时推送的买卖报价(Bid/Ask),是价格变动的最小信息单元。把 Tick 画成线或等量烛形,能看到时间周期 K 线看不到的微结构。
一、Tick 是什么,为什么要画它
常规 K 线按时间聚合,Tick 指标按逐笔报价呈现,能反映成交节奏与买卖价微动,是订单流分析的入口。
二、两种 Tick 指标
- Tick 图表指标:子窗口画两条线(Bid 红、Ask 蓝);
- Tick 等量烛形:每 N 个 tick(如 16)聚成一根烛,不依赖时间。
三、指标缓冲区与属性
- 线型:indicator_separate_window、2 缓冲、DRAW_LINE;
- 烛形:5 缓冲(4 价格 + 1 颜色索引)、DRAW_COLOR_CANDLES;
- 颜色灰=平、红=跌、绿=涨。
四、文件持久化与重启恢复
每次报价把 时间 Bid Ask 写进 MQL5/Files 的 txt;OnCalculate 首次从文件读历史,之后追加新 tick;只保留最近 rates_total/2 行,旧数据半量淘汰防溢出。
✦ 共享读 + 高效拼串
用 FileOpen(FILE_READ|FILE_WRITE|FILE_ANSI|FILE_SHARE_READ) 共享读,配 StringConcatenate 拼串比字符串加法高效;重启用历史恢复图表。
五、等量烛形的 OHLC 逻辑
按 floor(i / ticks_in_candle) 分组,同组更新收盘/高/低,新组定开盘;颜色由收闭对比决定;可切 Bid 或 Ask 作应用价。
常见问题
数据来源是逐笔报价而非周期收盘;等量烛形按 tick 数聚合,能呈现成交节奏,不受固定时间框架限制。
终端重启后内存缓冲清空,写文件能在重开时读回历史,图表不断片;也方便别的程序读取 tick 流。
文用 16,但取决于品种流动性;流动性高的品种可加大,让每根烛代表更有意义的成交量级。
避免频繁创建临时字符串,减少 GC 压力,在每 tick 都执行的写文件逻辑里更稳。
防止长期运行内存/文件无限增长导致性能下降,rates_total/2 是兼顾能恢复与不爆内存的折中。