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

 
Artyom Trishkin:
你到底是在终端的什么地方运行该指标的?
如果你指的是我的,那么C:\Users\AppData\Roaming\MetaQuotes\Terminal\CE01488447B8E5332C971089AB90,如果你指的是BB,说实话,我不知道它从哪里运行,但我曾经打印过这个问题(我发现如果BB本身给出的数字超过4位),我也从这个文件夹中取出BB
 
Павел Козлов:
我有点进入代码中去看这些东西了。

我不知道大家的情况,但我有两个地方的指数和专家,它是C:\Program Files (x86)\MT4\MQL4\indicators和C:\Users\AppData\Roaming\MetaQuotes\Terminal\CE01488447B8E5332C971089AB90(这个文件夹从终端文件-打开数据目录打开)在这两个地方我寻找代码,它是一样的。我可能又错过了重点,你能为不知道的人澄清一下吗。定制和标准之间的区别是什么,在哪里可以找到这两者?

标准的叫布林线,定制的叫布林线,位于不同的地方。


 
Artyom Trishkin:
你在终端中究竟从哪里运行指标?

我怀疑它是否熟悉/portable模式

 
Alexey Viktorov:

标准的叫布林线,自定义的叫布林线,位于不同的地方。


谢谢你。我无法从我的手机上向陛下解释哪里有什么位置。
这就是为什么我想说,它启动了一件事,但代码看的是另一件事。
 
Alexey Viktorov:

我怀疑他是否熟悉/portable模式

我对这种模式真的不熟悉,在我单独创建的关于这个问题的主题中,我透露了我的知识水平,请原谅我仍然很愚蠢,但对我来说,这并不像你想象的那么简单。你还是向我展示了这个问题,现在我将试图找出如何解决它。谢谢你的建议和Artem的建议。
 
Павел Козлов:
我对这种模式真的不熟悉,在我单独创建的关于这个问题的主题中,我透露了我的知识水平,请原谅我仍然很愚蠢,但对我来说,这并不像你想象的那么简单。你还是向我展示了这个问题,现在我将试图找出如何解决它。谢谢你的建议和Artem的建议。

我没有任何意思要用无知来让你措手不及。这是与Artem的对话,一个简单的澄清,他问的是你不知道的事情,从我的角度来看。不知道并不可耻,而且很正常。

 
我现在做错了什么,掌握了iCustom功能。制作了代码(以最上面一行为 例)。但它仍然给出了4个字符。DoubleToString输出5,但是是废话,不是真实数据。
double BUp = iCustom(NULL,0, "Bands",20,0,2,1,1);
请帮助,在代码中帮助。不是在打印机里,只是把Bands.ex4指标的数据写到我的指标变量里,比如说上面的线。最好是使用数值,而不是用变量来代替它们。
 
Павел Козлов:
那么我现在做错了什么,掌握了iCustom功能。制作了代码(以最上面一行为 例)。但它仍然给出了4个字符。DoubleToString给出了5,但这是废话,不是真实数据。不是在打印机中,只是将Bands.ex4指标中的数据写入我的指标中的变量,比如说上行。最好是使用数值,而不是用变量来代替它们。

这段代码放在OnInit()中,因为OnTick()今天不会工作。


嗯:我没有仔细阅读。没有注意到这句话。

最好是使用数值,而不是用变量来代替它们。


但这并不取决于你在iCustom中是放一个数字还是一个变量。

附加的文件:
 
Павел Козлов:
我现在做错了什么,掌握了iCustom功能。制作了代码(以最上面一行为 例)。但它仍然给出了4个字符。DoubleToString给出了5,但这是废话,不是真实数据。不是在打印机中,只是将Bands.ex4指标中的数据写入我的指标中的变量,比如说上行。最好是使用数值,不要用变量代替。
你的检查不正确。iCustom,iBands不对返回值进行四舍五入。
   double   BUp = iCustom(NULL,0,"Bands",20,0,2.0,1,1);
   Print(DoubleToString(BUp,16));
 

帮我弄清楚为什么指标没有呈现出来。我想最终创造出类似ZigZag的东西。

//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property link      ""
#property version   "1.00"
#property strict
#property indicator_chart_window
//--------------------------------
#property indicator_buffers 1       // Количество буферов
#property indicator_color1 Blue     // Цвет линии 0 буфера
double Buf_0[];
double Max_B=0,
Min_B=10000;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   SetIndexBuffer(0,Buf_0);                  //Назначение массива буфера
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1); //стильлинии
   return(0);
  }
//------------------------------
int start()
  {
   int i;
   int n,
   step=10;
   int Counted_bars;
   double Max_A,
   Min_A;
   Counted_bars=IndicatorCounted();
   i=Bars-Counted_bars-1;
//--------------------------------------------------------------------------------------------------------------+
   while(i>=0) //цикл, который считает просчитывает значение на i-ом баре               
     {
      Max_A=High[i];                         //присвоили максимальное значение i-ого бара переменной Max_A            
      Min_A=Low[i];                          //присвоили минимальное значение i-ого бара переменной Min_A
      if(Max_A>Max_B)
         Max_B=Max_A;
      if(Min_A<Min_B)
         Min_B=Min_A;
      //------------------------------------------------------------------------------------------------------------- 
      if(i>=step)
        {
         for(n=0;n<step;n++) //цикл, который будет сравнивать значения баров на определённом интервале        
           {
            if(High[i+n]>Max_A)
              {
               Max_A=High[i+n];
              }
            else
              {
               if(High[i+n]<Min_A)
                  Min_A=High[i+n];
              }
           }
        }
      if(i<step)
        {
         for(n=step;n>0;n--) //цикл, который будет сравнивать значения баров на определённом интервале        
           {
            if(High[i-n]>Max_A)
              {
               Max_A=High[i-n];
              }
            else
              {
               if(High[i-n]<Min_A)
                  Min_A=High[i-n];
              }
           }
        }
      if(Max_A>Max_B)
        {
         Buf_0[i]=Max_A;
        }
      else
        {
         if(Min_A<Min_B)
            Buf_0[i]=Min_A;
        }
      i--;
     }
   return(0);
  }
//+------------------------------------------------------------------+
原因: