You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在MQL5中获取前15根K线或3分钟前的随机指标值

嘿,刚好对MQL5的指标调用熟得很,这就帮你搞定获取随机指标历史值的问题!

核心:用好iStochastic的最后一个参数——shift

你现在的代码只获取了当前最新K线(shift=0,默认值)的随机指标值,要获取历史值,关键就是给函数加上最后一个shift参数,它代表相对于最新K线的偏移量

  • shift=0:当前最新K线(你现在用的默认值)
  • shift=1:前1根K线
  • shift=15:前15根K线,也就是你要的目标

1. 获取前15根K线的随机指标值

直接给iStochastic加上15作为最后一个参数就行,另外注意:随机指标返回的是0-100的浮点数,用double接收比int更准确,避免精度丢失:

// 获取前15根M1 K线的随机指标值
double stochastic_15bars_back = iStochastic(_Symbol, PERIOD_M1, 5, 3, 3, MODE_SMA, STO_LOWHIGH, 15);

2. 获取3分钟前的随机指标值

如果要精准定位“3分钟前”的数值,因为是M1周期,3分钟对应3根K线,但如果当前K线还没走完,直接用shift=3可能不准,更稳妥的方式是先通过时间找到对应的K线索引,再获取指标值:

// 计算3分钟前的时间戳
datetime three_minutes_ago = TimeCurrent() - 3 * 60;

// 找到该时间对应的M1 K线的shift值(true表示找不晚于指定时间的最后一根K线)
int target_shift = iBarShift(_Symbol, PERIOD_M1, three_minutes_ago, true);

// 确保找到有效shift(避免返回-1的情况)
if(target_shift != -1)
{
    double stochastic_3min_back = iStochastic(_Symbol, PERIOD_M1, 5, 3, 3, MODE_SMA, STO_LOWHIGH, target_shift);
    // 这里可以对获取到的值进行后续处理
}
else
{
    Print("无法找到3分钟前对应的K线");
}

小提醒

  • 记得检查iBarShift的返回值,如果是-1说明没找到对应的K线,要做异常处理
  • 如果你的图表是其他周期,调整PERIOD_xxx参数就行,逻辑是通用的

内容的提问来源于stack exchange,提问作者Jaffer Wilson

火山引擎 最新活动