Voy a escribir el indicador de forma gratuita - página 44

 

Ayuda con el indicador


Quiero mantenerlo como está, pero rehacerlo a dos buffers


#property indicador_separar_ventana

#property indicator_buffers 1

#property indicator_color1 DodgerBlue

#propiedad indicador_máximo 1.4

#property indicator_level1 0

#propiedad indicador_mínimo -1.2


//------- Parámetros del indicador externo -------------------------------

extern int CCI_Period_0 = 14; // Periodo del CCI para el marco temporal actual

extern int Nivel_0 = 100; // Nivel de CCI para la TF actual

extern int TF_1 = 60; // Número de minutos en la primera franja de tiempo

extern int CCI_Period_1 = 14; // Periodo CCI para la primera TF

extern int Nivel_1 = 100; // Nivel CCI para la primera TF

extern int TF_2 = 240; // Número de minutos del segundo TF

extern int CCI_Period_2 = 14; // Periodo del CCI para la segunda TF

extern int Nivel_2 = 100; // Nivel de CCI para la segunda TF

extern int NumberOfBars = 10000; //Número de barras(0-todas)


//------- Buffer de indicadores ------------------------------------------

doble buf0[];

//+------------------------------------------------------------------+

//| Función de inicialización de indicadores personalizada |

//+------------------------------------------------------------------+

void init()

{

IndicadorDígitos(1);


SetIndexBuffer(0,buf0);

SetIndexLabel(0, "i-3CCI-h");

SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2);

SetIndexEmptyValue(0,0);

}

//+------------------------------------------------------------------+

//| Función de desinicialización de indicadores personalizada |

//+------------------------------------------------------------------+

void deinit()

{

Comentario(");

}

//+------------------------------------------------------------------+

//| Función de iteración de indicadores personalizada |

//+------------------------------------------------------------------+

void start()

{

doble cci0,cci1,cci2;

int nb1,nb2;

int InicioDeBucle,sh;


if(NumberOfBars==0) LoopBegin=Bars-1;

else LoopBegin=NúmeroDeBarras-1;

LoopBegin=MathMin(Bars-1,LoopBegin);


for(sh=LoopBegin; sh>=0; sh--)

{

nb1=iBarShift(NULL, TF_1, Time[sh], False);

nb2=iBarShift(NULL, TF_2, Time[sh], False);


cci0=iCCI(NULL, 0 , CCI_Period_0, PRICE_CLOSE, sh);

cci1=iCCI(NULL, TF_1, CCI_Period_1, PRICE_CLOSE, nb1);

cci2=iCCI(NULL, TF_2, CCI_Period_2, PRICE_CLOSE, nb2);


if(cci0>Nivel_0 && cci1>Nivel_1 && cci2>Nivel_2) buf0[sh]=1;

if(cci0<-Nivel_0 && cci1<-Nivel_1 && cci2<-Nivel_2) buf0[sh]=-1;

}

}

//+------------------------------------------------------------------+


intentándolo yo mismo, sin suerte todavía.

lo intenté de esta manera


#property indicador_separar_ventana

#property indicator_buffers 2

#property indicator_color1 Verde

#property indicator_color2 Rojo

#propiedad indicador_máximo 1.4

#property indicator_level1 0

#propiedad indicador_mínimo -1.2


//------- Parámetros del indicador externo -------------------------------

extern int CCI_Period_0 = 14; // Periodo del CCI para el marco temporal actual

extern int Nivel_0 = 100; // Nivel de CCI para la TF actual

extern int TF_1 = 60; // Número de minutos en la primera franja de tiempo

extern int CCI_Period_1 = 14; // Periodo CCI para la primera TF

extern int Nivel_1 = 100; // Nivel CCI para la primera TF

extern int TF_2 = 240; // Número de minutos del segundo TF

extern int CCI_Period_2 = 14; // Periodo del CCI para la segunda TF

extern int Nivel_2 = 100; // Nivel de CCI para la segunda TF

extern int NumberOfBars = 10000; //Número de barras(0-todas)


//------- Buffer de indicadores ------------------------------------------

doble ExtBuffer1[];

doble ExtBuffer2[];

//+------------------------------------------------------------------+

//| Función de inicialización de indicadores personalizada |

//+------------------------------------------------------------------+

void init()

{

SetIndexBuffer(0,ExtBuffer1);

SetIndexStyle(0,DRAW_HISTOGRAM,0,2);

//----

SetIndexBuffer(1, ExtBuffer2);

SetIndexStyle(1,DRAW_HISTOGRAM,0,2);

}

//+------------------------------------------------------------------+

//| Función de desinicialización de indicadores personalizada |

//+------------------------------------------------------------------+

void deinit()

{

Comentario(");

}

//+------------------------------------------------------------------+

//| Función de iteración de indicadores personalizada |

//+------------------------------------------------------------------+

void start()

{

doble cci0,cci1,cci2;

int nb1,nb2;

int InicioDeBucle,sh;


if(NumberOfBars==0) LoopBegin=Bars-1;

else LoopBegin=NúmeroDeBarras-1;

LoopBegin=MathMin(Bars-1,LoopBegin);


for(sh=LoopBegin; sh>=0; sh--)

for(st=LoopBegin; st<0; st--)

{

nb1=iBarShift(NULL, TF_1, Time[sh], False);

nb2=iBarShift(NULL, TF_2, Time[st], False);


cci0=iCCI(NULL, 0 , CCI_Period_0, PRICE_CLOSE, sh);

cci1=iCCI(NULL, TF_1, CCI_Period_1, PRICE_CLOSE, nb1);

cci2=iCCI(NULL, TF_2, CCI_Period_2, PRICE_CLOSE, nb2);


if(cci0>Nivel_0 && cci1>Nivel_1 && cci2>Nivel_2) buf1[sh]=1;

if(cci0<-Nivel_0 && cci1<-Nivel_1 && cci2<-Nivel_2) buf2[st]=-1;



el error es


al final necesitamos dos topes, uno por encima de cero y otro por debajo.


Archivos adjuntos:
12121.jpg  42 kb
ere.mq4  6 kb
 

¡¡¡Querido koziabrrr ! !! Has creado tu propio tema. Hay más temas. ¿Y si alguien empieza a buscar un tema? Y hay muchos temas, es difícil de encontrar. Para facilitar el tema por tema. El tema superior es para ayudar a los novatos. Ahí es donde debería ir tu pregunta. ¡¡¡Creado tema borrar, y allí escribir teniendo en cuenta mis comentarios!!! Entonces usted también escribió en este hilo - bueno, esto es megalomanía, opinión exagerada del valor de su persona

Para llamar la atención, hay que explicar la tarea. 1. 1. Qué aspecto tiene el indicador = captura de pantalla. 2. Qué hace el indicador, cuál es su utilidad (se mostrarán puntos de entrada, tendencia, plano, ...). 3) ¿Por qué necesitamos dos topes? ¿Qué es más útil para ello (muestra mejor la tendencia, el plano, los puntos de entrada)? Es entonces cuando todo el mundo se apresurará a refinarlo!!!! .... Será bueno para ellos y para ti. Deberíamos ser amigos, compartir

 

Aquí hay una repetición. Parece mostrar una tendencia. Pero es una trampa.

En media hora sabremos que deberíamos haber vendido...

Y que es el momento de comprar - es silencioso...

 
Algo así sería mejor:

o MAinColor de algún tipo

 
STARIJ:

Aquí hay una repetición. Parece mostrar una tendencia. Pero es una trampa.

Sabremos en media hora que deberíamos haber vendido...

Y que es el momento de comprar - es silencioso...


Sí, se ve mejor, gracias por el rediseño. Pero sigo sin entender cómo)))

 
koziabrrr: Sí, se ve mejor, gracias por el rediseño. Pero sigo sin entender cómo))
#property indicator_buffers 2
#property indicator_color2 Tomato
double buf0[], buf1[];  //------- Буферы индикатора ------   добавил второй буфер
void init() 
  {
..................
   SetIndexBuffer(1,buf1);
   SetIndexLabel(1,"Вниз");
   SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,2);
   SetIndexEmptyValue(1,0);
  }

void start() 
  {
....................
..................

      buf0[sh]=0;buf1[sh]=0;
      if(cci0>Level_0 && cci1>Level_1 && cci2>Level_2) buf0[sh]=1;
      if(cci0<-Level_0 && cci1<-Level_1 && cci2<-Level_2) buf1[sh]=-1;
    }
}
 
STARIJ:

STARIJ:

Lo estoy intentando, pero no consigo reunirlo todo. Está bien cuando conoces el tema, pero cuando no lo conoces, cada cosa es un día.

 
koziabrrr:


Lo estoy intentando, pero no consigo reunirlo todo. Está bien cuando conoces el tema, pero cuando no lo conoces, cada cosa es un día.

... Y cada día es una experiencia inestimable que sólo se consigue con tu propio trabajo, no con la solución de un foro.
 
Artyom Trishkin:
... Y cada día es una experiencia inestimable que sólo se consigue con el propio trabajo, no con una decisión en un foro.

¡Esto es Sí!


¡¡¡¡STARIJ: Gracias por su ayuda!!!!


Se ha resuelto el problema)))

 

Hola Yuri.

Descripción del indicador: cuando se parte de 3 velas que se mantienen en el mismo nivel o casi en el mismo nivel, envía una alerta al correo electrónico y transmite un sonido. También mostraba el instrumento y el marco temporal en la pantalla hasta que lo cancelé. Mira los archivos adjuntos por favor, hay ejemplos

Archivos adjuntos:
11.png  25 kb
12.png  24 kb
13.png  24 kb
14.png  27 kb