MQL4中1分钟时间框架下获取当日最高价及指标验证问询
关于MQL自定义指标获取当日最高价的问题解答
一、你的代码是否能返回当日最高价?
current_day_high = iHigh(0, PERIOD_D1, 0); 这段代码完全可以正确返回当日最高价。
原理很直接:iHigh()的第二个参数指定了周期为日线(PERIOD_D1),第三个参数0代表当前正在运行的日线K线。在1M时间框架下,每根新的1分钟K线生成时,这段代码都会读取当前日线的实时最高价——盘中价格创出新高时数值会同步更新,当日收盘后就固定为最终的日线最高价,完全符合你要的“当日持续更新直至达到最高价后保持稳定”的需求。
二、如何验证指标数值是否符合预期?
给你几个实用的验证方法:
- 对照原生行情数据:切换到日线周期查看当前K线的最高价,再切回1M周期看你的指标数值,两者必须一致;也可以直接看MT4/MT5行情报价窗口里的“当日最高”字段,实时比对。
- 打印日志到终端:在指标代码里加一行
Print()输出,把时间和计算值打到终端的“专家”标签页,方便实时核对:Print("当前时间: ", TimeCurrent(), " 当日最高价: ", current_day_high); - 图表可视化验证:把指标输出值绘制成图表上的水平线,用
PlotIndexSetString()设置绘图样式,这样你能直观看到这条线是否随盘中新高同步抬升,收盘后保持固定。
三、如何存储指标数值以核对计算结果?
有两种常用的存储方式:
- 写入本地文本文件:用文件操作函数把时间、当日最高价记录到本地文件,收盘后可以逐行核对:
int fileHandle = FileOpen("DayHighLog.txt", FILE_WRITE|FILE_TXT); if(fileHandle != INVALID_HANDLE){ FileWrite(fileHandle, TimeToStr(TimeCurrent()), current_day_high); FileClose(fileHandle); } - 使用全局变量存储:如果只需要在当前MT4/MT5会话内保存,可以把数值存为全局变量,之后通过“工具-全局变量”窗口查看:
GlobalVariableSet("CurrentDayHigh_" + TimeToStr(TimeCurrent(), DATE), current_day_high);
内容的提问来源于stack exchange,提问作者Aidana Bolat
相关产品推荐
相关产品推荐

