[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 339

 
artmedia70:

我不是在谈论外部变量。我说的是这个。

让我们想象一个情况。必须根据最后一个空缺职位做出决定。


对于测试者。

我们创建变量,在这些变量中我们将存储最后打开的位置的必要数据。

一旦有新的位置被打开,我们将立即把所需的数据添加到这些变量中。

当有下一个开仓信号出现时(例如,在20个测试分钟后),我们需要检查一些标准,根据这些标准决定要开仓的数据。这些标准,按照惯例,取决于之前开设的职位。我们从变量中读取它们(我们在之前的开局中保存了它们),并将它们作为新位置的额外数据。

当我们打开一个头寸时,我们将新开的头寸的新数据存储在变量中。


真的。

让我们想象一下同样的情况,但是......。想象一下,在最后一个仓位被打开并将其数据存储在变量中之后,已经过去了10分钟(在下一个仓位被打开之前还必须再过10分钟(我们只是在 "测试器 "中假设了这一点))。而在这个时间间隔内,专家顾问由于某种原因被重新启动了。

在重新启动EA后,存储在变量中的最后一个开仓的数据会发生什么?他们将不存在。

那么,我们需要从哪里得到它们呢?右边--搜索。这就是为什么我们需要搜索必要数据的功能。因此,当我们需要的时候,最好一次就能找到所有的东西,而不是把它们储存在变量中,这样做确实更方便、更快捷。


:))

你永远是对的!我也是如此,当我需要新的数据时,我会使用函数。而且我不使用你提到的 "变量",因为它们没有意义,信息很快就会过时。而我建议Victor不要纠结于那些可以避免的功能,以免使代码更重!"。谢谢您的关注!
 
下午好。是否可以在MetaTrader 4中设置利润限制。确切地说,是在货币限额上,而不是在点子上。如果是这样,如何
 
   for(i=0;i<limit;i++) /*вопрос: еще использовал и такую последовательность for(i=Bars-1; i>=0; i--), есть ли разница с какой 
   "стороны" заполнять массив и рассматривать значения?*/
   
   RSI=iRSI(0,0,8,PRICE_CLOSE,i); 
   
   // задаем пустое значение буфера 
   RSIBuffer3[i]=0.0
   /* вроде так, мысль такая, что буфер должен быть пустым в цикле for(int i=0;i<limit;i++), до момента достижения 
   RSI заданных значений. Вопрос: так ли? и где он должен находится? */ 
   
   //ставим условие при котором пока RSI >= 70                     
   {
    while RSI>=70    
     {
       i++; //вопрос: где то видел эту часть кода в конце цикла, есть ли разница?
             
       // заполняем буфер значениями RSI
        
       RSIBuffer3[i]=iRSI(0,0,8,PRICE_CLOSE,i);
             
     }
        
     // определяем позицию максимального значения в массиве      
        
     int RSI_max = ArrayMaximum (RSIBuffer3[i], int count=WHOLE_ARRAY, int start=0); /* тут выдает ошибку на значениях count и start отсюда вопрос: нужно ли определять размер массива через ArraySize? и какое начальное значение должно быть, не i ли?*/
             
     //ищем бар со значением RSI равным максимальному значению RSI в массиве 
        
     if RSI=RSIBuffer3[RSI_max];
                
     // рисуем стрелку на этом значении
        
     ExtMapBuffer2[i]=High[i]+5*Point;
            
     else 
                
     ExtMapBuffer2[i]=0.0;
           
   }
      //ставим условие при котором пока RSI <= 30                     
   { 
    while RSI<=30
        {    
        i++;
        // заполняем буфер значениями RSI
        
        RSIBuffer3[i]=iRSI(0,0,8,PRICE_CLOSE,i);
        
        {        
                
        // определяем позицию минимального значения в массиве  
            
        int RSI_min = ArrayMinimum (RSIBuffer3[i], int count=WHOLE_ARRAY, int start=0);
        
                
        //ищем бар со значением RSI равным максимальному значению RSI в массиве 
        
        if RSI=RSIBuffer3[RSI_min];
                
        // рисуем стрелку на этом значении
             
        ExtMapBuffer1[i]=Low[i]-5*Point;
             
        else 
             
        ExtMapBuffer1[i]=0.0;            
          
        }
                   
   return(0);
   }

帮我处理一下逻辑问题,我不能以某种方式将简单的逻辑转化为程序(你能不能推荐一些文献)。

挑战:计算高于70(低于30)值的最大(最小)RSI,并在条形图上方画一个向下(向上)的箭头

在这些值上。

实施(第一部分,第二部分类似)。

1.计算每个柱子的RSI值

2.当RSI大于70时,用它的值填充RSI缓冲区。

3.找到数组中最大值的位置

4.寻找RSI值等于阵列中最大RSI值的柱子

5.在这个栏上面画一个箭头。

好吧,有这样的东西,但在写代码时,我有很多问题、错误,而且很混乱((()

下面是代码中的实现。

 
把文本和代码弄混了,对不起
 

先生们,请告知如何使用循环 对以下算法进行编码。

如果(iLow (Symbol (),0,1) > iLow (Symbol (),0,10))// 如果第一根 蜡烛 最小值>第十根 蜡烛 最小值

OrderSend(Symbol(),OP_BUY,0.1,Ask,1,Bid-2950*Point,Bid+150*Point, "jfh",123 ); // 打开订单。

我必须要

如果 1 同时 2同时 3......。...同时 低位 9号蜡烛>低位10号蜡烛(即 低位蜡烛从1到9)。

/ /开放订单。

谢谢你。

 
solnce600:

先生们,请告知如何使用循环 对以下算法进行编码。

如果(iLow (Symbol (),0,1) > iLow (Symbol (),0,10))// 如果第一根 蜡烛 最小值>第十根 蜡烛 最小值

OrderSend(Symbol(),OP_BUY,0.1,Ask,1,Bid-2950*Point,Bid+150*Point, "jfh",123 ); // 打开订单。

我必须要

如果 1 同时 2同时 3......。...同时 低位 9号蜡烛>低位10号蜡烛(即 低位蜡烛从1到9)。

/ /开放订单。

谢谢你。


我们创建一个成功条件标志,将其设置为tru,在循环中传递所需数量的蜡烛,如果在任何一个蜡烛上不满足条件,则将该标志设置为false标志并退出循环。
 
FAQ:

创建一个成功条件标志,将其设置在管道中,在循环中传递所需数量的蜡烛,如果在任何一个蜡烛上不满足条件,则将该标志设置为假标志并退出循环。

非常感谢。对不起,看在上帝的份上....,我在理解你所写的内容方面还是有点慢。

如果你能写出code.....,我将非常感激,然后我就会明白一切。

 

bool have = true;

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

   if(Low[i]<=Low[i+1]){have=false; break;} 

if(have){

// действия если условие соблюдено 

}else{

 // действия если условие не соблюдено

}

 
FAQ:

bool have = true;

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

   if(Low[i]<=Low[i+1]){have=false; break;} 

if(have){

// действия если условие соблюдено 

}else{

 // действия если условие не соблюдено

}

非常感谢你,谢谢你....和像你这样的人......我在学习编程的智慧方面又取得了一些进展....。
 

大家好,如果一个挂单 没有被触发,你如何在n,点的数量上关闭它?