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

 
如何在几个柱子中找到 High[]的最大值
 

最好使用mql4的新CopyHigh 功能和MathMax 数学函数

iHighest

 

早上好,告诉我错误在哪里。

/////////////////////////////////////////////////////////////////////////////////////////////////////

  //////////////////////////////////Зона консолидации/////////////////////////////////////////////////

  ///////////////////////////////////////////////////////////////////////////////////////////////////

  if(Hour()>=10)

  {

   for(x9=2; x9<=5; x9++)

   {

    x10=Hour()-x9;//x10 -номер свечи от которой считаем восемь свечей назад

    if(x10>=0)

    {

     int Minn=iLowest(NULL, PERIOD_H1, MODE_LOW , x10+8, x10);

     int Maxx=iHighest(NULL, PERIOD_H1, MODE_HIGH, x10+8, x10);

     z11 =iHigh(NULL,PERIOD_H1,Maxx);

     z12 =iLow(NULL, PERIOD_H1,Minn);

     ZPB     =iTime(NULL,PERIOD_H1,x10+8);

     ZPB1     =iTime(NULL,PERIOD_H1,x10);

     if(z11-z12<=z10)

     {

      y4=ObjectCreate("Зона консолидации",OBJ_RECTANGLE,0,0,0,0,0);

      y4=ObjectSet("Зона консолидации",OBJPROP_WIDTH,2);

      y4=ObjectSet("Зона консолидации",OBJPROP_COLOR,Blue);

      y4=ObjectSet("Зона консолидации",OBJPROP_BACK,true);

      y4=ObjectMove("Зона консолидации",0,ZPB,z11);

      y4=ObjectMove("Зона консолидации",1,ZPB1,z12);

     }

    }

   }

  }

  ////////////////////////////////////////////////////////////////////////////////////////////////////

这个想法是,在每次迭代时,代码应该检查通道宽度,如果它小于或等于当前值(z11-z12<=z10),就应该画一个矩形,但输出是先通过所有迭代,然后有一个一致性检查。
 
AlexeyVik:

最好使用mql4的新CopyHigh 功能和MathMax 数学函数

iHighest

如果CopyHigh,那么ArrayMaximum,IMHO...
 

请告知如何处理错误1(ERR_NO_RESULT 没有错误,但结果未知)?

欧元兑美元 的订单亏损超过1美元(100点,0.01手),我的专家顾问试图修改订单(将订单的止盈放在其开盘价)。

我得到这个错误,我应该怎么做?

 
evillive:
如果CopyHigh,那么ArrayMaximum,IMHO...
是的,我也是这么想的......。可能会有一些失误和误解。大约一个半月前,第五论坛上也有同样的问题。因此,我在那里谈到了ArrayMaximum,这里有一点被混淆了......
 

你好,我正在使用2000年的移动平均线(MAs)。

任务是计算收盘时MA价格的重复次数[1]。

- 我怎样才能用最少的资源执行这项任务。

 
Top2n:

你好,我正在使用2000年的移动平均线(MAs)。

任务是计算收盘时MA价格的重复次数[1]。

- 我怎样才能用最少的资源执行这项任务。

如果我们不在收盘价上使用第1期,那么重复的次数将为零。但如果我们考虑进入某个范围,这个任务就可以解决,而且更有趣。或者,我们找到最大值和最小值。我们把差额除以范围。然后我们定义一个落入每个muving的范围(我们将考虑一个与范围或区间相对应的数组)。命中率最高的数组索引 是赢家。也许我说得不是很清楚。这个任务最好在一个单独的主题中解决。可能有几种解决方案的变体。而在未来,有人可能需要它们。而在这里,他们事后也不会发现有什么端倪。
 

你好,看了教程,到了GV的变量。我无法理解他们是如何工作的。例如,教程中说,GV变量只能是double类型的。好吧,双倍,所以双倍)。但在列出GlobalVariableSet()、GlobalVariableGet()、GlobalVariableDel()函数时,他们写到其中一个返回时间,另一个返回bool,等等我脑子里一片混乱,我不明白他们是如何组织的。我最近也开始研究MQL4,我的脑子里有很多新的信息。如果可能的话,请给我解释一下教科书中的一个问题的例子(或你自己的任何问题)。

任务24。几个专家顾问同时在终端工作。存款金额为10 000美元。所有未结订单的总价值不应超过存款金额的30%。每个专家顾问都应该被分配相同的金额。创建一个包含计算分配给交易的资金数额的专家顾问程序。

int专家。//专家顾问的数量。专家的

double Depo=10000.0, // 指定的存款

持久性=30。// 给定的百分比

。// 被搜索的资金。

string Quantity="GV_Quantity"; // GV-变量的名称

//--------------------------------------------------------------------

int init()//特殊。功能启动

{

Experts=GlobalVariableGet(Quantity); // 获取文本值。

Experts=Experts+1; // 专家的数量。

GlobalVariableSet(Quantity, Experts); // 新值

Money=Depo*Persent/100/Experts; // Exp.

Alert("对于窗口中的专家", Symbol()," 分配",Money)

返回。//从init()退出

}

//--------------------------------------------------------------------

int start()// 特别。功能启动

{

int New_Experts= GlobalVariableGet(Quantity);//新的exp数量。

if (Experts!=New_Experts) // 如果改变了

{

Experts=New_Experts; // 现在的数字是

Money=Depo*Persent/100/Experts; // Exper的新值。

Alert("New value for expert" ,Symbol(),": " ,Money);

}

/*

...

必须在这里指定专家顾问的主代码。

其中使用变量 Money的值

...

*/

返回。//从 start()退出

}

//--------------------------------------------------------------------

int deinit( )//正确的。 deinit()函数

{

如果专家 ==1)// 如果只有一个专家。.

GlobalVariableDel(Quantity); //...删除 GV-变量

否则// 否则。.

GlobalVariableSet(Quantity, Experts-1); //...减少1

Alert("EA已从窗口卸载",Symbol()); //通知卸载事宜

返回。//从deinit()退出。

}

 
Vinin:
如果你不对收盘价使用周期1,重复次数将为零。但如果你算打到一些范围,那么这个问题可能是可以解决的,而且更有趣。或者,我们可以找到最大和最小值。我们把差额除以范围。然后我们定义一个落入每个muving的范围(我们将考虑一个与范围或区间相对应的数组)。命中率最高的数组索引是赢家。也许我说得不是很清楚。这个任务最好在一个单独的主题中解决。可能有几种解决方案的变体。而在未来,有人可能需要它们。而在这里,他们事后也不会发现什么端倪。

我得考虑一下,谢谢。

另一个话题 - https://forum.mql4.com/ru/66882

原因: