请教各位大牛一个问题,用mql4语言获取到了最近10根k线的最高值double类型a,和
请教各位大牛一个问题,用mql4语言获取到了最近10根k线的最高值double类型a,和最低值b,最高值和现价Close[0] 做比较,if(close[0]>a){ 执行开仓操作} ,程序无任何报错,大括号的语句无法执行,有大牛了解问题出在哪吗 |
|
|
|
|
DD
//获取最近20根k线的最高价和最低价
string symbol = Symbol();
ENUM_TIMEFRAMES timeframe = Period();
double highestHigh = iHigh(symbol, timeframe, 0); //获取最近k线最高价
double lowestLow = iLow(symbol, timeframe, 0); //获取最近k线最低价
for(int i = 1; i < 10; i++) {
double high = iHigh(symbol, timeframe, i);
double low = iLow(symbol, timeframe, i);
if(high > highestHigh) {
highestHigh = high;
}
if(low < lowestLow) {
lowestLow = low;
}
}
double shoupan=Close[0]; //获取现价价格
if(shoupan>zuigaojia) 比较两个值的大小
{
//无任何报错,这个括号里的语句无法执行
}
//如果当前价格小于最近最低价做空
if(shoupan<zuidijia)
{
//shoupan 和 zuidijia 这两个值都可以正常打印出来,就是无法对比
}
|
|
|
|
|
C
不必用for循环这么麻烦! 给你个函数:iHighest() |
|
|
|
|
CCC
double 求区间最高价(string 币种,ENUM_TIMEFRAMES 周期,int 最高价类型,int 起始位置,int 计算数量)
{
double K线最高价=0;
int X=iHighest(币种,周期,最高价类型,计算数量,起始位置);
if(X!=-1)
K线最高价=iHigh(币种,周期,X);
return(K线最高价);
}
//+------------------------------------------------------------------+
|
|
|
|
|
DDD
(暂不考虑double浮点计算小数误差)
收盘价怎么可能大于最高价呢?这类 if 判断永远不会成立。
要得到正确的 a、b 值的循环计算过程中,不能包括 [0] 下标的值。自己看看程序的“逻辑”,任何没有排除 [0] 值的算法都是错误的。 |
|
|
|
|
B
DDD
首先i要等于0才行 然后就是问题最大的一点 你定义了high和low 而下面你用的zuigaojia和zuidijia 正常的话应该会报错 你的不报错就错了
其次最高值 high = High[iHighest(NULL, 0, MODE_HIGH, 10, 0)];
其次最低值 low = Low[iLowest (NULL, 0, MODE_LOW, 10, 0)];
Close[0]的话不用那么麻烦 直接用就行
例:
//获取最近10根k线的最高价和最低价
double high=High[iHighest(NULL, 0, MODE_HIGH, 10, 0)]; //获取最近k线最高价
double low = Low[iLowest (NULL, 0, MODE_LOW, 10, 0)]; //获取最近k线最低价
if(Close[0]>high) 比较两个值的大小
{
//无任何报错,这个括号里的语句无法执行
}
//如果当前价格小于最近最低价做空
if(Close[0]<low)
{
//shoupan 和 zuidijia 这两个值都可以正常打印出来,就是无法对比
}
|
|
|
|
|