Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 536

 
Artyom Trishkin:
De onde exatamente você está rodando o indicador no terminal?
Se você quer dizer meu, entãoC:\Users\AppData\Roaming\MetaQuotes\CE01488447B8E5332C971089AB90, se você quer dizer BB, eu honestamente não sei de onde ele corre, mas eu costumava imprimir o problema (eu descobri se o próprio BB dá mais de 4 dígitos) e também tirei o BB desta pasta.
 
Павел Козлов:
Por isso, entrei no código para ver estas coisas.

Eu não sei sobre todos, mas tenho dois lugares onde estão localizados índices e especialistas, é C:\Program Files (x86)MT4\MQL4\indicadores e C:\Users\AppData\Roaming\MetaQuotes\Terminal\CE01488447B8E5332C971089AB90 (esta pasta abre a partir do diretório de dados File-Open do terminal) em ambos os lugares que procurei pelo código e é idêntica.Posso ter perdido o ponto novamente, você pode esclarecê-lo para alguém que não sabe. Qual é a diferença entre personalizado e padrão e onde encontrar ambos?

O padrão é chamado de BollingerBands e o padrão personalizado é o de Bandas e localizado em locais diferentes.


 
Artyom Trishkin:
De onde exatamente você executa o indicador no terminal?

Duvido que esteja familiarizado com o modo /portátil

 
Alexey Viktorov:

O padrão é chamado BollingerBands e o padrão personalizado é chamado de Bandas e está localizado em locais diferentes.


Obrigado. Não posso explicar a Sua Majestade a partir de meu telefone celular onde e o que está localizado.
É por isso que eu estava tentando dizer que ele lança uma coisa, mas o código olha para outra.
 
Alexey Viktorov:

Duvido que ele esteja familiarizado com o modo /portátil

Eu realmente não estou familiarizado com este modo e no meu fio condutor, que criei separadamente sobre este problema, revelei meu nível de conhecimento, por favor, perdoe ainda a estupidez, mas não foi tão fácil quanto você poderia ter pensado para mim. Mesmo assim você me mostrou o problema, agora vou tentar descobrir como resolvê-lo. Obrigado por seus conselhos e pelos conselhos da Artem.
 
Павел Козлов:
Eu realmente não estou familiarizado com este modo e no meu fio condutor, que criei separadamente sobre este problema, revelei meu nível de conhecimento, por favor, perdoe ainda a estupidez, mas não foi tão fácil quanto você poderia ter pensado para mim. Mesmo assim você me mostrou o problema, agora vou tentar descobrir como resolvê-lo. Obrigado por seus conselhos e pelos conselhos da Artem.

Eu não queria apanhá-lo inconsciente de forma alguma. Foi um diálogo com Artem, um simples esclarecimento que ele está perguntando sobre o que você não sabe, do meu ponto de vista. Não saber não é vergonhoso e bastante normal.

 
O que estou fazendo de errado agora, dominei a função do iCustom. Fez o código (tomou a linha de cima como exemplo). Mas ele ainda dá 4 caracteres. O DoubleToString produz 5, mas é uma merda, não dados reais.
BUp duplo = iCustom(NULL,0, "Bandas",20,0,2,1,1);
Por favor, ajude, ajude em código. Não na impressora, basta escrever os dados do indicador Bands.ex4 na minha variável indicadora, por exemplo, a linha superior. De preferência utilizando valores numéricos, não os substituindo por variáveis.
 
Павел Козлов:
Bem, o que estou fazendo errado agora, dominei a função iCustom. Fez o código (tomou a linha de cima como exemplo). Mas ele ainda dá 4 caracteres. DoubleToString dá 5, mas é uma besteira, não dados reais. Não na impressora, basta escrever os dados do indicador Bands.ex4 na variável do meu indicador, por exemplo, a linha superior. É desejável usar valores numéricos e não substituí-los por variáveis.

O código é colocado em OnInit(), porque OnTick() não funcionará hoje.


Hmmm: Eu não o li com atenção. Não percebi essa frase.

É desejável usar valores numéricos e não substituí-los por variáveis.


Mas não depende se você coloca um número ou uma variável no iCustom.

Arquivos anexados:
 
Павел Козлов:
O que estou fazendo de errado agora, dominei a função do iCustom. Fez o código (tomou a linha de cima como exemplo). Mas ele ainda dá 4 caracteres. DoubleToString dá 5, mas é uma besteira, não dados reais. Não na impressora, basta escrever os dados do indicador Bands.ex4 na variável do meu indicador, por exemplo, a linha superior. Preferencialmente usar valores numéricos e não substituí-los por variáveis.
Você está verificando incorretamente. iCustom, iBands não arredondam o valor de retorno.
   double   BUp = iCustom(NULL,0,"Bands",20,0,2.0,1,1);
   Print(DoubleToString(BUp,16));
 

Ajude-me a descobrir porque o indicador não está renderizando. Eu quero eventualmente criar algo como 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);
  }
//+------------------------------------------------------------------+
Razão: