Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 536

 
Artyom Trishkin:
¿Desde dónde ejecutas exactamente el indicador en el terminal?
Si te refieres a la mía,C:\NUsers\AppData\NRoaming\NMetaQuotes\NTerminal\CE01488447B8E5332C971089AB90, si te refieres a la BB, sinceramente no sé desde donde se ejecuta, pero yo solía imprimir el problema (descubrí si la propia BB da más de 4 dígitos) y también cogí la BB de esta carpeta.
 
Павел Козлов:
Así que me metí en el código para ver estas cosas.

No sé todos, pero yo tengo dos lugares donde se encuentran los índices y los expertos, es C:\ Archivos de programa (x86)\ MT4\MQL4\indicadores y C:\Users\AppData\Roaming\MetaQuotes\Terminal\CE01488447B8E5332C971089AB90 (esta carpeta se abre desde el directorio de datos de Terminal File-Open) en ambos lugares he buscado el código y es idéntico.Puede que se me haya escapado el punto de vista de nuevo, puedes aclararlo para alguien que no lo sepa. ¿Cuál es la diferencia entre el estándar y el personalizado y dónde encontrar ambos?

El estándar se llama BollingerBands y el personalizado es Bands y se ubica en diferentes lugares.


 
Artyom Trishkin:
¿Desde dónde se ejecuta exactamente el indicador en el terminal?

Dudo que esté familiarizado con el modo /portable

 
Alexey Viktorov:

El estándar se llama BollingerBands y el personalizado se llama Bands y se encuentra en diferentes lugares.


Gracias. No puedo explicar a Su Majestad desde mi teléfono móvil dónde y qué se encuentra.
Por eso intentaba decir que lanza una cosa, pero el código mira otra.
 
Alexey Viktorov:

Dudo que conozca el modo /portable

Realmente no estoy familiarizado con este modo y en mi hilo que creé por separado sobre este problema revelé mi nivel de conocimiento, por favor, perdone la estupidez todavía, pero no fue tan fácil como podría haber pensado para mí. Aun así me has enseñado el problema, ahora intentaré averiguar cómo solucionarlo. Gracias por tus consejos y los de Artem.
 
Павел Козлов:
Realmente no estoy familiarizado con este modo y en mi hilo que creé por separado sobre este problema revelé mi nivel de conocimiento, por favor, perdone la estupidez todavía, pero no fue tan fácil como podría haber pensado para mí. Aun así me has enseñado el problema, ahora intentaré averiguar cómo solucionarlo. Gracias por tus consejos y los de Artem.

No pretendía de ninguna manera pillarte desprevenido con la ignorancia. Fue un diálogo con Artem, una simple aclaración que está preguntando sobre lo que no sabes, desde mi punto de vista. No saber no es vergonzoso y es muy normal.

 
Qué estoy haciendo mal ahora, domino la función iCustom. Hice el código (tomé la línea superior como ejemplo). Pero sigue dando 4 caracteres. DoubleToString da como resultado 5, pero una mierda, no son datos reales.
double BUp = iCustom(NULL,0, "Bands",20,0,2,1,1);
Por favor, ayuda, ayuda en el código. No en la impresora, sólo escribir los datos del indicador Bands.ex4 a mi variable de indicador, por ejemplo la línea superior. Preferiblemente utilizando valores numéricos, no sustituyéndolos por variables.
 
Павел Козлов:
Bueno, ¿qué estoy haciendo mal ahora, dominado la función iCustom. Hice el código (tomé la línea superior como ejemplo). Pero sigue dando 4 caracteres. DoubleToString da 5, pero es una mierda, no son datos reales. No en la impresora, sólo escribir los datos del indicador Bands.ex4 en la variable de mi indicador, por ejemplo la línea superior. Es conveniente utilizar valores numéricos y no sustituirlos por variables.

El código se coloca en OnInit(), porque OnTick() no funcionará hoy.


Hmmm: no lo he leído con atención. No me fijé en esa frase.

Es conveniente utilizar valores numéricos y no sustituirlos por variables.


Pero no depende de si pones un número o una variable en el iCustom.

Archivos adjuntos:
 
Павел Козлов:
Qué estoy haciendo mal ahora, domino la función iCustom. Hice el código (tomé la línea superior como ejemplo). Pero sigue dando 4 caracteres. DoubleToString da 5, pero es una mierda, no son datos reales. No en la impresora, sólo escribir los datos del indicador Bands.ex4 en la variable de mi indicador, por ejemplo la línea superior. Es preferible utilizar valores numéricos y no sustituirlos por variables.
Estás comprobando incorrectamente. iCustom, iBands no redondean el valor de retorno.
   double   BUp = iCustom(NULL,0,"Bands",20,0,2.0,1,1);
   Print(DoubleToString(BUp,16));
 

Ayúdame a averiguar por qué el indicador no se está renderizando. Quiero crear eventualmente 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);
  }
//+------------------------------------------------------------------+