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

 
paladin80:
也许我对你的问题的理解与你的意思不同。我的例子比较了3条和2条,以及2条和1条之间的开盘价,3条和1条没有比较。如果比较的值相等--什么也不发生,只是传递到下一个比较。为什么x>1(不是>=)。第一次迭代比较Open[3]==Open[3-1],即Open[3]==Open[2]。好的。在第二个(x=2),Open[2]==Open[1]。好的。没有第三次迭代。在x>=1时,会出现Open[1]==Open[0]的比较,这是不对的,因为会出现与0条的比较。

非常感谢您!而如果我们比较这三个条形图中每个条形图的开盘价 和收盘价,会不会改变代码?
extern int n=4;
//-----------------------------------------------+
for (x=n;x>1;x--)
   {
    if(Close[x]==Open[x]) continue;
      if(Close[x]<Open[x])
     {
      action
     }
     else{
      if(Close[x]>Open[x])
     {
      action
      }
    }
   }
 
ALXIMIKS:

不会的,每一个新的刻度线, Flag的值都是真的 。https://book.mql4.com/ru/variables/types

你可以全局性地声明这个变量,例如在程序的开头,在所有函数之外。

或者让变量成为静态的 - 静态的 bool flag=true; .

只需记住,在重启时该变量会被重新初始化。因此,这种方法对于测试人员来说是可以接受的,但对于真正的交易来说是不行的。
 
朋友们,你们能建议一个指标吗?它是基于两张幻灯片。当它穿过时,它以箭头的形式给出了方向。找不到了,谢谢。
 
skyjet:

非常感谢您!而如果我们比较这三个条形图中每个条形图的开盘价和收盘价,代码会有这么大的变化吗?

为了澄清这个问题。我们需要比较同一根柱子 的开盘和收盘,也就是说,第n根柱子是看跌还是看涨。把下面的脚本扔到报价窗口上。

extern int n=4;
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   for (int x=n; x>1; x--)
    {  
     if(Close[x]==Open[x])
      {
       Print("Бар номер ",n," плоский :)");
       continue;
      }
     if(Close[x]<Open[x])
      {
       Print("Бар номер ",n," медвежий");
       continue;
      }
     else // if(Close[x]>Open[x]) - В данном случае сравнение if можно пропустить
          // т.к. два случая (равно и меньше) уже обработаны
      {
       Print("Бар номер ",n," бычьий");
      }
    }
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
paladin80:

要在这里正确插入代码,请点击SRC,然后点击那里的代码。

把这个EA扔到报价窗口。


我把它扔进了窗口,就像我理解的那样,指标只是写出了移位值,但我应该在代码中加入什么,以便我可以在设置中加入我需要的多少级?
 
Danila_mactep:

我把它放在窗口中,像我理解的那样,指标只是写出移位值,但我应该在代码中加入什么,以便能够在设置中加入我需要的多少级?

它不写移位值。如果我没记错的话,这段代码并没有指定移位,它只是读取了MAHA的值。所以它输出这个值。

为了看到相对于MA值的移位值,你需要在外部参数中设置这个值,然后输出 MA+移位值*Point,表示向上移位,MA值-移位值*Point,表示向下移位。

 
Danila_mactep:

我把它扔进了窗口,就像我理解的那样,指标只是写出了移位值,但我应该在代码中添加什么,以便我可以在设置中添加我需要的许多级别?
extern int  sdvig=0;
//---
int init() 
{
  return(0);
}
//--------------
int start()
{
  double MA=iMA(NULL, 0, 12, 144, MODE_SMA, PRICE_CLOSE, sdvig);
  Comment("Для бара номер ",sdvig," значение МА = ",DoubleToStr(MA,Digits));
  return(0);
}
//--------------
int deinit()
{
  Comment("");
  return(0);
}
 
paladin80:


不,不是的。你需要在MA上和MA下转移一定数量的点。不是历史上的酒吧转变。
 
artmedia70:

不,不是的。你需要在MA上和MA下转移一定数量的点。不是历史上的酒吧转变。
extern int move=100; 
//---
int init() 
{
  return(0);
}
//--------------
int start()
{
  double MA=iMA(NULL, 0, 12, 144, MODE_SMA, PRICE_CLOSE, 0);
  double Sdvig=MA+(move*Point);
  Comment("Сдвиг на ",sdvig," пунктов от МА = ",DoubleToStr(Sdvig,Digits));
  return(0);
}
//--------------
int deinit()
{
  Comment("");
  return(0);
} 
 
paladin80:

现在也是在负数中...他就会很高兴 :)还是你会让他自己 "思考 "如何转移下来?