Indicadores: Flame

 

Flame:

El indicador muestra el método de trazado de áreas semitransparentes gradientes con velocidad de actualización independiente.

Flame indicator MQL5

Autor: Renat Fatkhullin

 

Leí, estudié, miré, me surgieron algunas preguntas, a las que no encontré respuesta (quizás no la estaba buscando bien), así como un pequeño deseo en cuanto a ChartRedraw(ExtChartID) en OnDeinit.

  double g=0,b=0,dg=1.5,db=0.63;
//---
   for(uint a,i=0;i<256;i++)
     {
      //--- los primeros 32 valores de llama son completamente transparentes
      a=uchar(i<32?0:i-32);
      //--- forma el color para el valor de la llama i
      ExtPal[i]=(a<<24)|(uint(255)<<16)|(uint(g+0.5)<<8)|uint(b+0.5);
      //--- incrementar componentes de color
      //--- el rojo se gradúa debido a la transparencia del color
      if(i>80)  g+=dg;
      if(i>160) b+=db;
     }

1) Durante mucho tiempo no pude entender cómo se recogía el color (no sabía qué eran las operaciones bitwise, en ninguna parte de la ayuda se describe ese formato de adquisición del color, y lo principal es que la ayuda dice:

Тип color предназначен для хранения информации о цвете и занимает в памяти 4 байта. Первый байт не учитывается, остальные 3 байта содержат RGB-составляющие.

Es correcto que el primer byte es el responsable de la transparencia y se tiene en cuenta ( (a<<24))????

2) Por qué al cambiar de TF la llama se vuelve a encender desde la mitad del ancho de la ventana (a veces no ocurre desde la mitad) ?????

3) Por qué cuando se adjuntan varios indicadores en diferentes pares de divisas su trabajo interfiere entre sí (parpadeo constante) ????? Y si en la misma moneda, pero diferentes TFs - casi nada en absoluto.

4) ¿Dónde puedo ver la correlación entre el código de generación de eventos y el int id del evento generado, ¿por qué son diferentes?

EventChartCustom(ExtChartID,1302,0,0,NULL);
void OnChartEvent(const int id,const long &lp,const double &dp,const string &sp) // id=2302
 

ALXIMIKS: 

4) ¿Dónde puedo ver la correlación entre el código de generación del evento y el int id del evento generado, por qué son diferentes?

const int id en OnChartEvent se obtiene como la suma de (int) CHARTEVENT_CUSTOM y su identificador de evento personalizado en EventChartCustom:

int id = (int) CHARTEVENT_CUSTOM + 1302;
// (int) CHARTEVENT_CUSTOM = 1000;
Echa un vistazo al ejemplo en el siguiente enlace.
 

El color en sentido general no tiene en cuenta los bytes de transparencia cuando se utiliza en objetos gráficos.

Pero está disponible junto con banderas de transparencia especiales cuando se utiliza lienzo.