任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 1083

 
如果你需要找到最近一段时间 内的最高值怎么办?
 

所以它是一个静态数组

//--- создадим массив 
   double array[]; 
   int size=772; 
   ArrayResize(array,size); 
   //---  заполним его значениями индикатора 
   for(int i=0;i<size;i++) 
     { 
      array[i]=iATR(NULL,0,14,i);
     }
   //--- найдем позицию максимального элемента в массиве 
   int max_position=ArrayMaximum(array,772,0); 
   //--- теперь получим само максимальное значение в массиве 
   double max=array[max_position];
 

所以,事实上,我直接写 - 自学成才,对程序员感知的微妙之处理解不深(主题是:初学者的任何问题...)。我举个例子,这不会被指责,所有的人都想免费得到,不费吹灰之力,另一方面试图清楚地定义任务(不是说我们不能读懂别人的思想)。

再次,如何从给定的代码中获得最后一个条形的给定数量的指标的最大值,或者可能是在编码的个人声明中理解的恩典?

真诚的尊重、敬意和理解,程序员是来自另一个世界的人,这样微妙的解释并不是上述所有的事实,必须再次概述,也许不止一次才能得到预期的结果。

//---创建数组 double array[]; int size=772; ArrayResize(array,size); //---用指标值填充它 for(int i=0;i<size;i++) { array[i]=iATR(NULL,0,14,i);
} //--- 找到数组中最大元素的位置 int max_position=ArrayMaximum(array,772,0); //--- 现在让我们得到数组本身的最大值 double max=array[max_position]。
 

我找遍了所有能找的东西,但我找不到任何解决办法,最后的希望在你们身上 :)

一般的任务是制作一个指标,当它被扔在图表上时,即它已经在工作了,我们按下指定的键,趋势线(date1=date2,price1=price2)就会出现在当前光标位置下。

问题出现在我无法让if(id==CHARTEVENT_MOUSE_MOVE) 传递指针的坐标给if(id==CHARTEVENT_KEYDOWN) ,下面的代码也不想传递。 我不知道怎么做,但也有另一种方法可以解决这个问题。 也许有人知道,当你把指标扔到图表上时,初始菜单就会出现。

#property strict
#define  VK_D             0x44 


int OnInit()
  {
//---
   ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,true);

   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{    
 
if(id==CHARTEVENT_MOUSE_MOVE)

{     int      x     =(int)lparam;
      int      y     =(int)dparam; 
      datetime dt    =0; 
      double   price =0; 
      int      window=0;
      ChartXYToTimePrice(0,x,y,window,dt,price); 


  if(id==CHARTEVENT_KEYDOWN)
{ 
  switch(int(lparam)) 
{ case VK_D:
   
   ObjectCreate("Trend Line",OBJ_TREND,0,dt,price,dt,price);
   ObjectSetInteger(0,"Trend Line",OBJPROP_SELECTED,true); 
}   
} 
}    
}
 
Craft:

所以,事实上,我直接写 - 自学成才,对程序员感知的微妙之处理解不深(主题是:初学者的任何问题...)。我举个例子,这不会被指责,所有的人都想免费得到,不费吹灰之力,另一方面试图清楚地定义任务(不是说我们不能读懂别人的想法)。

再次,如何从给定的代码中获得最后一个条形的给定数量的指标的最大值,或者可能是在编码的个人声明中理解的恩典?

怀着真诚的敬意、崇敬和理解,程序员是来自另一个世界的人,这样一个微妙的解释并不是上述所有的事实,必须再次概述,也许不止一次才能得到理想的结果。


因此,倒转循环,就这样了。

从rate_total-1到rate_total减去想要的球数。如果在EA中,从Bars()-1到 Bars()减 去...

 
K_i_r_i_t_o:

我找遍了所有能找的东西,但我找不到任何解决办法。 我对你们没有希望 :)

一般的任务是制作一个指标,当它被扔在图表上时,即它已经在工作了,我们按下指定的键,趋势线(date1=date2,price1=price2)就会出现在当前光标位置下。

当我无法让if(id==CHARTEVENT_MOUSE_MOVE) 传递指针的坐标给if(id==CHARTEVENT_KEYDOWN) 时,问题就出现了,下面的代码也不想传递,我不知道如何实现,还有一个选择,但这也是一个问题,如果有人知道,当你在图表上抛出指标时,初始菜单就会出现,那么我能否以某种方式锁定它,使指标立即显示在图表上?

注意可变的能见度。

我还没有深入研究,但我注意到,变量是在条件里面声明的。它不应该是这样的。

 
AlexeyVik:

注意变量的可见性。

我还没有深入研究,但我注意到,变量是在条件里面声明的。情况不应该是这样的。

所以这就是问题所在,如何使变量从一个if传到另一个if,试了很多变化,都不奏效......
 
K_i_r_i_t_o:
所以这就是问题所在,如何使变量从一个if传到另一个if,试了很多变化,都不奏效......

你可以在这里阅读

有多少种变化?全局级变量在程序的任何部分都是可见的,这是一种极端情况。

 
AlexeyVik:

在这里阅读

众多的变化是什么?全局级变量在程序的任何部分都是可见的,这是一种极端情况。

我都看了,这就是重点,我不能把变量值移到另一个函数中,也没有办法在一个函数中收集它们,我被难住了,但指标菜单怎么办?
 
Craft:

下午好,先生们。

关于数组的问题。如何在图表的最后几条上找到指标的最大值,而不是在第一条上?

这个问题已经讨论过很多次了(我找不到),但我很少使用数组。

你能建议如何解决索引的问题,也许可以用ArrayMaximum(array)更优雅的方式来解决?

如果某处有一个基本的错误,我很抱歉,我是自学成才。

在MQL4构建中,错误修复的流量从未消退,因此代码越简单,就越可靠

Amax=-10000。

iAmax=-1。

for(int i=0;i<size;i++) {

如果(array[i]>Amax){iAmax=i;Amax=array[i];}。

}

如果(iAmax<0)...就有问题了