新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 278

 
mila.com:

我无法用我的独眼巨人把它弄出来并正确输入它的指标。

你的脚本在所有设置下都返回零。它应该返回一个3,因为现在第一条和第三条之间的差异是0.005。

也许我没说清楚。 我想把这个问题放在圈子里。


double ma_etalon=iMA(NULL,0,...,i+1);

double ma_curr;

int shift;

for(shift=2;shift<5;shift++) {

    ma_curr=iMA(NULL,0,...,i+shift);

    if (ma_etalon-ma_curr<0.005) break; // ах ты чёрт, значение близко

}

if (shift==5) {

   // цикл досчитал до конца, то есть все значение довольно далеко
   // ... развернись плечо ...

}

 
mila.com:

谢谢你,但有些事情是不对的。


0.005的测量单位是什么?(必须乘以_点)
 

谢谢大家的帮助,它成功了 )

 
mila.com:

谢谢大家的帮助,它成功了 )

只是想知道,你需要一个这样的东西吗?

 double prevMA=0,currMA=0;
 for(int i=1;i<=5;i++) {
  if(i==1) currMA=iMA(Symbol(),0,14,0,MODE_EMA,PRICE_CLOSE,i);
  prevMA=iMA(Symbol(),0,14,0,MODE_EMA,PRICE_CLOSE,i);
  if(MathAbs(prevMA-currMA)>0.0005) {
   // сюда пишем в буфер
   break;
  }
 }
 
Vitaly Muzichenko:

只是想知道,有必要做这样的事情吗?

是的,你如何将这种设计纳入指标的主循环?

 
Vladimir Pastushak:

我清楚地告诉你,你在尾随中把0而不是把

勾选这个选项。


它的作用!!!。:))))....非常感谢你容忍我们这些失败者))))))非常感谢!)

 

下午好。

请告知如何使用iCustom来获取另一个时间框架上的指标值,并进行转移?

例如,我在M5上工作,我想从M15上获得指标值,我想在M15上获得前一根蜡烛的值。

int start() 
{ 
  HistBar = History;
  int i,counted_bars = IndicatorCounted();
  if (counted_bars < 0) return (-1);
  if (counted_bars > 0) counted_bars--;
  int limit = MathMin(Bars-counted_bars,HistBar+100);

  for(i=limit; i>=0; i--)
   {  
   int HT1,HT2; 
        if (_Period == PERIOD_M1)  
            {HT1 = PERIOD_M5;
            HT2 = PERIOD_M15;}
        else
           {
           if (_Period == PERIOD_M5)  
            {HT1 = PERIOD_M15;
            HT2 = PERIOD_M30;}
           else
              {
              if (_Period == PERIOD_M15)  
               {HT1 = PERIOD_M30;
               HT2 = PERIOD_H1;}
               }
            }
   //MFI
   long Volume_0_0 = iVolume(NULL,0,i);
   long Volume_0_1 = iVolume(NULL,0,i+1);
   double BWMFI_0_0 = iBWMFI(NULL,0,i);
   double BWMFI_0_1 = iBWMFI(NULL,0,i+1);

   ///////// вопрос как тут указать правильно
   long Volume_1_0 = iVolume(NULL,HT1,i);
   long Volume_1_1 = iVolume(NULL,HT1,i+1);
   double BWMFI_1_0 = iBWMFI(NULL,HT1,i);
   double BWMFI_1_1 = iBWMFI(NULL,HT1,i+1);
   ....
}
 
LSM:

下午好。

您能告诉我们如何用iCustom来获取另一个时间段的指标值,并进行转移?

我在M5上工作,我想从M15上获得指标值,我想在M15上获得前一根蜡烛的值。

仔细阅读文件就可以了

double  iCustom(
   string       symbol,           // имя символа
   int          timeframe,        // таймфрейм
   string       name,             // папка/имя_пользовательского индикатора
   ...                            // список входных параметров индикатора
   int          mode,             // источник данных
   int          shift             // сдвиг
   );
 
Alexey Viktorov:

只要仔细阅读文件

编辑了我的问题,添加了代码。有一个循环正在进行。当它发生在一个循环中时,我不清楚得到什么。
 
LSM:
我编辑了我的问题并添加了代码。有一个循环正在进行。不清楚当它发生在一个循环中时,我会得到什么。

我将回答我自己的问题,以防有人需要)。

   
   !!!!
   int y = iBarShift(NULL,HT1,Time[i]);
   
   long Volume_1_0 = iVolume(NULL,HT1,y);
   long Volume_1_1 = iVolume(NULL,HT1,y+1);
   double BWMFI_1_0 = iBWMFI(NULL,HT1,y);
   double BWMFI_1_1 = iBWMFI(NULL,HT1,y+1);