新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 325

 

来帮助我吧。

任务是找到 数组[]中的最小 元素。

//+------------------------------------------------------------------+ 
//| Получим Lowest для заданного промежутка                          | 
//+------------------------------------------------------------------+ 
double iLowMin(int ot,int bands,double &buffer[])
  {
   double result=-1;
   result=buffer[ArrayMinimum(buffer,ot,bands)];
   return(result);
  }
//+------------------------------------------------------------------+ 
//| Получим High для заданного номера бара                           | 
//+------------------------------------------------------------------+ 
double iHighMax(int ot,int bands,double &buffer[])
  {
   double result=-1;
   result=buffer[ArrayMaximum(buffer,ot,bands)];
   return(result);
  }

问题是解决了,但最低限度的问题却让我很难受。尝试了所有的方法,输入数组都被填满了--通过调试查看,该怎么做?

Print("DwMin  ",iLowMin(rates_total-50,49,ExtLowerBuffer));

也许有一些细微的差别?

通过以下方式宣布

   SetIndexBuffer(1,ExtLowerBuffer,INDICATOR_DATA);
 
Top2n:

来帮助我吧。

任务是找到 数组[]中的最小 元素。

问题是解决了,但最低限度的问题却让我很难受。尝试了所有的方法,输入数组都被填满了--通过调试查看,该怎么做?

也许有一些细微的差别?

通过以下方式宣布

尝试ArraySort并检查第一个索引的输出。

 

这么说来,我一放弃这个问题,就开始想出一个预感:我的数组里有0,所以它给出的min=0,但是还有一些部分的值是非零的,min还是0,好吧,上帝帮助我,这个问题偏了))感谢那些刚看完这个问题的人,noosphere给了你

 

注意问题))

我如何在指标中设置开始处理的条形?

if(prev_calculated>rates_total-Bmax)

{ ... то что нужно обрабатывать начиная с бара[rates_total-Bmax]

}

试了一下,结果是指标根本没有任何动作。

 

又见面了,请你告诉我,如果我知道一个数组元素的 索引,用哪个函数来查出它的值?

int Totall=OrdersTotal()。

double Price; // 所选订单的价格

double Mas[]; //数组,用于将所有订单按顺序排列。

for(int i=0; i<OrdersTotal(); i++) //顺序循环

{

if(OrderSelect(i,SELECT_BY_POS)) // if(OrderSelect(i,SELECT_BY_POS))

{Price=OrderOpenPrice(); //用价格填充数组

Mas[i] = Price;

}

}

ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // 现在开盘价按降序排列。

int Blizko2=ArrayBsearch(Mas,Ask,WHOLE_ARRAY,0,MODE_DESCEND) //确定与当前价格最接近的元素的索引。

 
Nauris Zukas:

正如我在学习课程之前遇到的那样,同样有一些细微的差别没有在文章中描述,或者隐藏在某个地方,不可能通过搜索引擎找到。整整一天都在徒劳地寻找解释。例如,这个符号意味着什么,如果不这样做会有什么影响。正如下面stati 的例子中所看到的,先是有,后是没有:&

另外,不清楚这个符号是什么意思:

mql4, mql5函数总是只通过引用传递一个数组(& == ampersand)。

首先--在一个函数的正式参数中--有一个安培号,表示传入函数的不是数组本身,而是一个链接。然后--在函数里面--你已经在使用引用了,这意味着你不必再指定它。

省略号(~)写在类的析构器名称前--构造函数和析构器的名称与类本身相同,但析构器有~。

请阅读这篇文章,了解何时使用引用,何时使用指针。

虽然,你仍然需要阅读基础知识。

 
vikzip:

又见面了,请你告诉我,如果我知道一个数组元素的 索引,用哪个函数来查出它的值?

int Totall=OrdersTotal()。

double Price; // 所选订单的价格

double Mas[]; //数组,用于将所有订单按顺序排列。

for(int i=0; i<OrdersTotal(); i++) //顺序循环

{

if(OrderSelect(i,SELECT_BY_POS)) // if(OrderSelect(i,SELECT_BY_POS))

{Price=OrderOpenPrice(); //用价格填充数组

Mas[i] = Price;

}

}

ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // 现在开盘价按降序排列。

int Blizko2=ArrayBsearch(Mas,Ask,WHOLE_ARRAY,0,MODE_DESCEND) //确定与当前价格最接近的元素的索引。

Value_element_array = Array[index];

 

请指教,我有一个EA,我一直在工作时在一台普通的电脑上测试它,windows hp。一切工作都很正常,等等。

我回到家,在家里的笔记本电脑上,用同样的参数在同样的工具上用同样的时间框架显示出完全不同的结果,有什么建议或想法,为什么这样?

 
Artyom Trishkin:

Array_element_value = Array[index];


谢谢,现在有了一个新的问题。当写入以下条件时,出现了错误'PriceBlizko1'--未声明的标识符。请解释一下原因?

双倍价格。// 所选订单的价格

双倍Mas[]。//数组来安排所有的订单

for(int i=0; i<OrdersTotal(); i++) // 订单循环

{

if(OrderSelect(i,SELECT_BY_POS)) // if(OrderSelect(i,SELECT_BY_POS))

{


价格=OrderOpenPrice()。//用价格填充数组

Mas[i] = Price;

}

}

ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // 现在开盘价是按降序排列的。

int Blizko1=ArrayBsearch(Mas,Bid,WHOLE_ARRAY,0,MODE_ASCEND); //确定与当前价格价值最接近的元素的索引。

double PriceBlizko1=Mas[Blizko1];

}

如果(PriceBlizko1-Bid>=30*Point) //如果下单超过30点!!!!!!,在这个STREET!!!!!。

OrderSend(Symbol(),OP_SELL,LtsS,Bid,2,0,Bid+30*Point); //打开卖单

警告(GetLastError())。//错误信息。



 
vikzip:

使用按钮来插入代码!

原因: