[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 411

 
kolyango:

如何制作。

如果Condition1被满足了,那么就不再在每个tick上检查它,在下一个tick上也检查Condition2,然后也检查Condition3,直到我们宣布所有标志为假?

bool проверять_ус1=true;
bool проверять_ус2=true;
bool проверять_ус3=true;
void start(){
      if(проверять_ус1)
         if(Open[0]>Close[1]){//условие 1
            проверять_ус1=false; //заглушка
         }
      if(проверять_ус2)
         if(Open[0]<Close[2]){//условие 1
            проверять_ус2=false; //заглушка
         }
      if(проверять_ус3)
         if(Open[0]==Close[3]){//условие 1
            проверять_ус3=false; //заглушка
         }
      if(!проверять_ус1&&!проверять_ус2&&!проверять_ус3){
            проверять_ус1=true;
            проверять_ус2=true;
            проверять_ус3=true;      
      }
}

多读几遍代码,直到清楚写的是什么,你就会很高兴。

 
costy_:

它读取已经建立(以前的)i+1删除的酒吧的数据。但创造者的算法将被破坏(他更清楚,我也在开放和生成的+1数据上工作)。


正如创建者所说,i+1仅用于从另一个指标输入数据,然后检查故障条件,但所有进一步的计算都在i上进行。

问题是,指标不是自动更新的,只有在重新加载(改变TF,改变属性)时才会更新。

我不明白是什么原因。

我试着只用i,把所需指标的数据计算塞到前一个条形图上,在周期结束时,但这没有帮助。

 
costy_:

还是不明白。

用图片来解释可能更容易。


是的,谢谢你!在你用蓝色强调的地方,你需要找到在D1上收于高点之上的蜡烛。
 
costy_:

多读几遍代码,直到清楚写的是什么,你就会很高兴。


再次感谢!
 
LOA:


作为一个创造者,我说i+1只是为了从另一个指标中输入数据,然后它检查故障条件,但所有进一步的计算都在i上进行。

问题是,指标根本没有自动更新,只有在重新加载(改变TF,显示属性)时才会更新。

我不明白其中的原因。

我试着只用i,将所需指标的数据计算从上一个条形图上推到周期的末尾,但这并没有什么帮助。

你有

           int  proboy_5_UP = iCustom (NULL,0,"ME_Proboy_F5_For_EX",0,i+1);/*запрос значения индикатора 

我怀疑它应该是这样的。

           double proboy_5_UP = iCustom (NULL,0,"ME_Proboy_F5_For_EX",0,i+1);/*запрос значения индикатора 
 
costy_:

你有

我怀疑它应该是这样的。


no....我们不取价格值,而是取指标读数(柱状图),其值可能是1或-1。
 
costy_:

多读几遍代码,直到清楚写的是什么,你就会很高兴。


你是如何改写这种代码的条件的,我不明白?

static bool Val_max, Cl_dn, Val_min; //static or global
                                        |
//+------------------------------------------------------------------+
int start()
  {
   int j;
   double bid;                                         
   bid=Bid;                                    // Текущая цена продажи
   string
   Symb=Symbol();                               // Название фин.инстр.
double Value_max=1.0000;
double Value_min=0.9980;
double Open_1=Open[1];
double Close_1=Close[1];
//----

//--------------------------------------------------------------- 4 --

double Val=iCustom(NULL, 0, "Название Польз. Индикатора",0,0);   // Присваиваем пер. Val значение польз. индикатора
if (Условие1)
{
 Val_max=true;                  // 
 Alert("Значение инд. >= Value_max (исп. 1-е усл.)");
}
if (Условие2)
{
 Cl_dn=true;
 Alert("1 бар закрылся падением (исп. 2-е усл.)");
}
if (Условие3 && Cl_dn==true)
{
 Val_min=true;
 Alert("Значение инд. <= Value_min (исп. 3-е усл.)");
}
if (Val_max==true && Cl_dn==true && Val_min==true)
  {
   for (j = 0; j < OrdersTotal(); j++)
    {
     OrderSelect(j, SELECT_BY_POS, MODE_TRADES);
     if (OrderSymbol() == Symbol())
      {
      if (OrderType() == OP_SELL) return(0);
      }
    }
   
   OrderSend(Symbol(),OP_SELL,0.1,NormalizeDouble(Bid,Digits),2,Bid+400*Point,Bid-400*Point,"",3,Red);  // Открытие SELL
   Val_max=false; Cl_dn=false; Val_min=false;
  }

//----
   return(0);
  }
 
LOA:

no....我们不取价格值,而是取指标(柱状图),其值可能是1或-1。

我还是不能回答,被调用的inds在哪里,它们返回int double,它们真的可以>1,这样int就被分配>0,反之亦然(至少*.ex4)?

牧师_F5_For_EX

呼叫中心: 呼叫中心: 呼叫中心: 呼叫中心: 呼叫中心: 呼叫中心: 呼叫中心: 呼叫中心: 呼叫中心:

2011.12.07 18:10:42 无法打开 AUDUSD,M30上的文件\experts\indicators\ME_Proboy_F5_For_EX.ex4' 。

用MACD替换了所有的,一切都正常了!。

附加的文件:
temp_1.mq4  14 kb
 
kolyango:


我如何改写这种代码的条件,我不明白?

bool проверять_ус1=true;
bool проверять_ус2=true;
bool проверять_ус3=true;
void start(){
      if(проверять_ус1)
         if(Open[0]>Close[1]){//условие 1
            проверять_ус1=false; //заглушка
         }
      if(проверять_ус2)
         if(Open[0]<Close[2]){//условие 1
            проверять_ус2=false; //заглушка
         }
      if(проверять_ус3)
         if(Open[0]==Close[3]){//условие 1
            проверять_ус3=false; //заглушка
         }
      if(!проверять_ус1&&!проверять_ус2&&!проверять_ус3){
            проверять_ус1=true;
            проверять_ус2=true;
            проверять_ус3=true;      
      }
}

多读几遍代码,直到清楚写的是什么,你就会很高兴。

你为什么需要旗子?)你可以不使用它们。

   if(Close[i+3]>Open[i+3]&&Close[i+2]>Open[i+3]&&Close[i+2]<Close[i+3]&&Close[i]>Close[i+3]) //открываем бай

 
costy_:

我还是不能回答,被调用的inds在哪里,它们返回int double,它们真的可以>1,这样int就被分配>0,反之亦然(至少*.ex4)?

牧师_F5_For_EX

呼叫中心: 呼叫中心: 呼叫中心: 呼叫中心: 呼叫中心: 呼叫中心: 呼叫中心: 呼叫中心: 呼叫中心:

2011.12.07 18:10:42 无法打开AUDUSD,M30上的文件\experts\indicators\ME_Proboy_F5_For_EX.ex4' 。

用MACD替换了所有的东西,所有的东西都在工作!


是的,历史上的指标与任何被触发的指标一起工作。在现实生活中不起作用,在M1上检查过。

如果我没有理解错的话,我将尝试用==1或==-1来代替>0、<0的条件。