MQ4 获取k线当前价
时间: 2023-07-07 14:46:27 浏览: 38
在MQL4中,可以使用iOpen()函数获取指定时间的开盘价,iHigh()函数获取最高价,iLow()函数获取最低价,iClose()函数获取收盘价。因此,可以通过这些函数来计算K线的当前价。
假设当前是M1时间帧,获取当前K线的开盘价:
```
double open = iOpen(_Symbol, PERIOD_M1, 0);
```
获取当前K线的最高价和最低价:
```
double high = iHigh(_Symbol, PERIOD_M1, 0);
double low = iLow(_Symbol, PERIOD_M1, 0);
```
获取当前K线的收盘价:
```
double close = iClose(_Symbol, PERIOD_M1, 0);
```
需要注意的是,上述代码获取的是当前K线的价格,而不是实时市场价格。如果想要获取实时市场价格,可以使用MarketInfo()函数获取实时报价。例如:
```
double bid = MarketInfo(_Symbol, MODE_BID);
double ask = MarketInfo(_Symbol, MODE_ASK);
double spread = MarketInfo(_Symbol, MODE_SPREAD);
```
其中,MODE_BID表示买价,MODE_ASK表示卖价,MODE_SPREAD表示点差。
相关问题
MQ4 获取当前K线的位置
MQ4中,可以使用`iBars()`函数获取当前图表上某个时间段内的K线数量。通过传入`_Symbol`、`_Period`参数和`MODE_CURRENT`常量,可以获取当前K线的位置。
以下是获取当前K线位置的示例代码:
```mq4
int currentBar = iBars(_Symbol, _Period, MODE_CURRENT);
Print("当前K线位置为:" + currentBar);
```
其中,`_Symbol`为当前图表的货币对,`_Period`为当前图表的时间周期。函数返回当前K线的索引值,从0开始计数。
MQ4 计算两根K线之间的时间戳之差
在MQ4中,可以通过两个时间戳之间的差值来计算两根K线之间的时间戳之差。具体实现步骤如下:
1. 获取两根K线的时间戳
2. 计算时间戳之差
3. 将时间戳之差转换为对应的时间间隔
以下是一个示例代码,用于计算两根K线之间的时间戳之差并将其转换为对应的时间间隔:
```mq4
// 获取第一根K线和第二根K线的时间戳
datetime time1 = iTime(_Symbol, _Period, 0);
datetime time2 = iTime(_Symbol, _Period, 1);
// 计算时间戳之差
int timeDiff = time1 - time2;
// 将时间戳之差转换为对应的时间间隔
string timeDiffStr = "";
if (timeDiff >= PERIOD_D1) {
timeDiffStr = DoubleToStr(timeDiff / PERIOD_D1, 0) + "天";
} else if (timeDiff >= PERIOD_H1) {
timeDiffStr = DoubleToStr(timeDiff / PERIOD_H1, 0) + "小时";
} else if (timeDiff >= PERIOD_M1) {
timeDiffStr = DoubleToStr(timeDiff / PERIOD_M1, 0) + "分钟";
} else {
timeDiffStr = DoubleToStr(timeDiff / PERIOD_S1, 0) + "秒";
}
Print("第一根K线和第二根K线之间的时间间隔为:" + timeDiffStr);
```
在上述代码中,`iTime()`函数用于获取某根K线的时间戳,`PERIOD_D1`、`PERIOD_H1`、`PERIOD_M1`、`PERIOD_S1`分别表示天、小时、分钟和秒的时间间隔。根据时间戳之差的不同大小,选择不同的时间间隔进行显示。
需要注意的是,上述代码中计算的是两根历史K线之间的时间戳之差,如果要计算当前K线和历史K线之间的时间戳之差,需要将第一个参数改为`MODE_CURRENT`。
相关推荐














