Errores, fallos, preguntas - página 1005

 
ns_k:

¡Buenas tardes!

¿Los búferes de los indicadores guardan los valores entre las ejecuciones de los indicadores o hay algún fallo en mi terminal?

Construí un indicador, luego comenté el algoritmo de conteo y presioné compilar - todos los valores permanecen en el gráfico. Creo que debo volver a poner el indicador en el gráfico para que se actualicen los valores del buffer; lo puse con el ciclo de cálculo que faltaba y sigue teniendo los mismos valores. Tuve que reiniciar el terminal para deshacerme de él.

Por favor, comenten esto.

Gracias.

Parece que todavía hay condiciones que dejan valores ya calculados en los buffers. No entiendo cuáles son exactamente estas condiciones. El problema ha desaparecido tras reiniciar el terminal. De hecho, por eso no escribiría una solicitud al servicio.

En general, ¿quizás no sea un error sino una característica?

Gracias.

 
ns_k:

Parece que hay condiciones en las que los valores ya calculados permanecen en los buffers. No entiendo cuáles son exactamente esas condiciones. Tras reiniciar el terminal, el problema desapareció. De hecho, por eso no escribiría una solicitud al servicio.

En general, ¿quizás no sea un error sino una característica?

Gracias.

Sólo hay que poner a cero los valores de la matriz antes de llenarla o durante la inicialización:

ArrayInitialize(buffer_data,EMPTY_VALUE);
 
ns_k:

Parece que hay condiciones en las que los valores ya calculados permanecen en los buffers. No entiendo cuáles son exactamente estas condiciones. Tras reiniciar el terminal, el problema desapareció. De hecho, por eso no escribiría una aplicación para el servicio.

En general, ¿quizás no sea un error sino una característica?

Gracias.

Los valores deben ser restablecidos
 
tol64:

Antes de rellenar o durante la inicialización, basta con poner a cero los valores de la matriz:

¡¡¡Gracias!!!
 

Estaría bien que el menú contextual del botón derecho pudiera tener un elemento separado con indicadores personalizados

Gracias.

Переход на новые рельсы: пользовательские индикаторы в MQL5
Переход на новые рельсы: пользовательские индикаторы в MQL5
  • 2009.11.23
  • Андрей
  • www.mql5.com
Я не буду перечислять все новые возможности и особенности нового терминала и языка. Их действительно много, и некоторые новинки вполне достойны освещения в отдельной статье. Вы не увидите здесь кода, написанного по принципам объектно-ориентированного программирования — это слишком серьезная тема для того, чтобы просто быть упомянутой в контексте как дополнительная вкусность для кодописателей. В этой статье остановимся подробней на индикаторах, их строении, отображении, видах, а также особенностях их написания по сравнению с MQL4.
 

Otra pregunta, por favor :)

¿Cuál es la forma de mostrar los comentarios en la ventana del indicador en lugar de en la ventana del gráfico?

Gracias.

 
ns_k:

¿Cómo se pueden mostrar los comentarios en la ventana del indicador y no en la del gráfico?

No hay ninguna disposición para este comportamiento. Utiliza objetos si realmente lo necesitas.
 

¡Buenas tardes!

Es mejor hacer que la ventana de propiedades del indicador no sea modal,si es posible.

Gracias.

 
ns_k:

¡Buenas tardes!

Es mejor hacer que la ventana de propiedades del indicador no sea modal,si es posible.

Gracias.

Y añade el botón de aplicar. Es decir, hemos cambiado el valor, pulsamos el botón Aplicar y veremos los cambios sin cerrar la ventana. Sería mucho más conveniente.

Y por enésima vez, la posibilidad de cambiar el tamaño de la ventana de propiedades.

P.D . Escribe más en Service Desk.

 

No sé de dónde me estoy volviendo tonto, por así decirlo.

int OnCalculate (const int rates_total,      // size of input time series
                 const int prev_calculated,  // bars handled in previous call
                 const datetime& time[],     // Time
                 const double& open[],       // Open
                 const double& high[],       // High
                 const double& low[],        // Low
                 const double& close[],      // Close
                 const long& tick_volume[],  // Tick Volume
                 const long& volume[],       // Real Volume
                 const int& spread[]         // Spread
                 )

  {
   
   
   
   doDrawIndicator(gSymbols[0],rates_total,g1ThermB);


//Comment(rates_total);
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int doDrawIndicator(string xSymbol, int xRatesTotal, double &xBuffer[])//,double &xPrice[],double &xBuffer[])
  {
   double l1Close[]; // , l2Close[];
   datetime lTime[];
   datetime lEnd,lStart;
   int copied;
   ArrayInitialize(xBuffer,0);
   lEnd=TimeCurrent();
   lStart=(TimeCurrent()/86400)*86400+3600;

   copied=CopyTime(xSymbol,Period(),lStart,lEnd,lTime);
   if(copied==-1){Print("Can't copy time",__FUNCSIG__);return(0);}
   copied=CopyClose(xSymbol,Period(),lStart,lEnd,l1Close);
   if(copied==-1){Print("Ждите...1");return(0);}

   sThermometer lT;
  // Print("rates_total=",rates_total);
   //Comment(xSymbol);
   Comment(copied);
   g1RM=new CRangeManager(1,0.2,20,xSymbol);
 
   for(int i=0;i<copied;i++)
     {
      lT=g1RM.getStateByValue(l1Close[copied-i-1]);
      if(gThermRange==Up && lT.cTemperature.State<7 || gThermRange==Down && lT.cTemperature.State>6 )
        {
         xBuffer[xRatesTotal-i-1]=lT.cTemperature.Temperature;
        }
      else
        {
         xBuffer[xRatesTotal-i-1]=0;
        }
     }

     
   delete g1RM;
   return(1);

  }

El indicador no se actualiza, es decir, sigo viendo 739 dicen en la esquina izquierda (tirado en la minucia, como usted entiende). Y en cuanto pulso compilar, el indicador se actualiza. ¿En qué parte del código está el error?

Gracias.