[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 309
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
¡Por favor, ayuda!
Sólo se muestran dos líneas MAH, aunque el código es equivalente para las cuatro líneas.¿Cuál es el problema?
#property indicator_separate_window // El indicador se dibuja en una ventana independiente
#property indicator_buffers 4 // Número de buffers
#property indicator_color1 Azul // Color de la primera línea
#property indicator_color2 Red // Color de la segunda línea
#property indicator_color3 Oliva
#property indicator_color4 Teal
double Buf_ROC_MA40[],Buf_ROC_MA20[],Buf_MA40[],Buf_MA20[]; // declaración de array (para los buffers indicadores)
//--------------------------------------------------------------------
int init() // Función especial init()
{
SetIndexBuffer(0,Buf_MA40); // Asignación de un array al buffer
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);// Estilo de línea
SetIndexBuffer(1,Buf_MA20); // Asignación de un array al buffer
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);//Estilo de línea
SetIndexBuffer(3,Buf_ROC_MA40); // Asignar un array al buffer
SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,2);//Estilo de línea
SetIndexBuffer(4,Buf_ROC_MA40); // Asignar un array al buffer
SetIndexStyle(4,DRAW_LINE,STYLE_SOLID,2);// Estilo de línea
return; // Salir de la función especial init()
}
//--------------------------------------------------------------------
int start() // Función especial start()
{
int i, // índice de la barra
Historia=3000,
counted_bars; // número de barras calculadas
double ma20,ma40,MA40[],MA20[],MA40_s[],MA20_s[],ma40_s,ma20_s,ROC_MA40[],ROC_MA20[];
//--------------------------------------------------------------------
// Counted_bars=IndicatorCounted(); // Número de barras contadas
i=Barras;/Barras_contabilizadas-1; // Índice de la primera no contabilizada
while(i>=0) //Ciclo a través de las barras no contadas
{
ma20=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i);
ma20_s=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i+20);
ma40=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i);
ma40_s=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i+40);
Alert("ma20=",ma20, " ma20_s=",ma20_s, " ma40_s=",ma40_s, " ma40=",ma40);
MA40_s[i]=ma40_s;
MA40[i]=ma40;
MA20[i]=ma20;
MA20_s[i]=ma20_s;
Buf_MA40[i]=ma40;
Buf_MA20[i]=ma20;
ROC_MA40[i]=MA40[i]-MA40_s[i];
Buf_ROC_MA40[i]=ROC_MA40[i];
ROC_MA20[i]=MA20[i]-MA20_s[i];
Buf_ROC_MA20[i]=ROC_MA20[i];
i--;
//Calcular el índice de la siguiente barra
}
//--------------------------------------------------------------------
return; // Salir de la función especial start()
}
1.Recomendar, por favor, un depurador (preferiblemente con depuración paso a paso para poder ver los valores intermedios de las variables).
2.¿Cómo puedo mostrar los datos de depuración y dónde (en qué ventana), porque es un inconveniente utilizar las alertas.
3) ¿Cómo puedo actualizar la versión de MQL?
Por favor, aconséjeme.
¿Cómo puedo hacer que mi Asesor Experto opere sólo en la sesión europea?
¡Por favor, ayuda!
Sólo salen dos líneas MAshek, aunque el código es equivalente para las cuatro líneas.¿Cuál es el problema?
He encontrado un error. Después del buffer 1 fue inmediatamente el buffer 3. El búfer 2 fue omitido.
Sólo que no deberías tener la salida de los macerados y la diferencia en una ventana. Tienen más de un orden de magnitud de diferencia.
Por favor, aconséjeme.
¿Cómo puedo hacer que mi EA opere sólo en la sesión europea?
Sólo hay que poner start al principio del módulo
if(Hora()<7 || Hora()>15)return(0);
Por favor, mira el código de nuevo. He eliminado las MAs ya que los nuevos valores recibidos tienen una escala completamente diferente.
Todavía no se muestra nada.
#property indicator_separate_window // El indicador se dibuja en una ventana independiente
#property indicator_buffers 2 // Número de buffers
#property indicator_color1 Azul // Color de la primera línea
#property indicador_color2 Rojo //color de la segunda línea
//#property indicator_color3 Oliva
//#property indicator_color4 Teal
double Buf_ROC_MA40[],Buf_ROC_MA20[],Buf_MA40[],Buf_MA20[]; // Declaración de arrays (para los buffers indicadores)
//--------------------------------------------------------------------
int init() // Función especial init()
{
//SetIndexBuffer(0,Buf_MA40); // Asignación de un array al buffer
//SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);// Estilo de línea
//SetIndexBuffer(1,Buf_MA20); // Asignar array al buffer
//SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);//Estilo de línea
SetIndexBuffer(0,Buf_ROC_MA40); // Asignar un array al buffer
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);//Estilo de línea
SetIndexBuffer(1,Buf_ROC_MA20); // Asignar un array al buffer
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);//Estilo de línea
return; // Salir de la función especial init()
}
//--------------------------------------------------------------------
int start() // Función especial start()
{
int i, // índice de la barra
Historia=3000,
counted_bars; // número de barras calculadas
double ma20,ma40,MA40[],MA20[],MA40_s[],MA20_s[],ma40_s,ma20_s,ROC_MA40[],ROC_MA20[];
//--------------------------------------------------------------------
// Counted_bars=IndicatorCounted(); // Número de barras contadas
i=Barras;/Barras_contabilizadas-1; // Índice de la primera no contabilizada
while(i>=0) //Ciclo a través de las barras no contadas
{
ma20=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i);
ma20_s=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i+20);
ma40=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i);
ma40_s=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i+40);
MA40_s[i]=ma40_s;
MA40[i]=ma40;
MA20[i]=ma20;
MA20_s[i]=ma20_s;
Buf_MA40[i]=ma40;
Buf_MA20[i]=ma20;
ROC_MA40[i]=MA40[i]-MA40_s[i];
Buf_ROC_MA40[i]=ROC_MA40[i];
ROC_MA20[i]=MA20[i]-MA20_s[i];
Buf_ROC_MA20[i]=ROC_MA20[i];
i--;
// Cálculo del índice de la siguiente barra
}
//--------------------------------------------------------------------
return; // Salir de la función especial start()
}
Por favor, mira el código de nuevo. He eliminado las MAs ya que los nuevos valores recibidos tienen una escala completamente diferente.
Todavía no se muestra nada.
#property indicator_separate_window // El indicador se dibuja en una ventana independiente
#property indicator_buffers 2 // Número de buffers
#property indicator_color1 Azul // Color de la primera línea
#property indicador_color2 Rojo //color de la segunda línea
//#property indicator_color3 Oliva
//#property indicator_color4 Teal
double Buf_ROC_MA40[],Buf_ROC_MA20[],Buf_MA40[],Buf_MA20[]; // Declaración de arrays (para los buffers indicadores)
//--------------------------------------------------------------------
int init() // Función especial init()
{
//SetIndexBuffer(0,Buf_MA40); // Asignación de un array al buffer
//SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);// Estilo de línea
//SetIndexBuffer(1,Buf_MA20); // Asignar array al buffer
//SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);//Estilo de línea
SetIndexBuffer(0,Buf_ROC_MA40); // Asignar un array al buffer
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);//Estilo de línea
SetIndexBuffer(1,Buf_ROC_MA20); // Asignar un array al buffer
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);//Estilo de línea
return; // Salir de la función especial init()
}
//--------------------------------------------------------------------
int start() // Función especial start()
{
int i, // índice de la barra
Historia=3000,
counted_bars; // número de barras calculadas
double ma20,ma40,MA40[],MA20[],MA40_s[],MA20_s[],ma40_s,ma20_s,ROC_MA40[],ROC_MA20[];
//--------------------------------------------------------------------
// Counted_bars=IndicatorCounted(); // Número de barras contadas
i=Barras;/Barras_contabilizadas-1; // Índice de la primera no contabilizada
while(i>=0) //Ciclo a través de las barras no contadas
{
ma20=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i);
ma20_s=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i+20);
ma40=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i);
ma40_s=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i+40);
MA40_s[i]=ma40_s;
MA40[i]=ma40;
MA20[i]=ma20;
MA20_s[i]=ma20_s;
Buf_MA40[i]=ma40;
Buf_MA20[i]=ma20;
ROC_MA40[i]=MA40[i]-MA40_s[i];
Buf_ROC_MA40[i]=ROC_MA40[i];
ROC_MA20[i]=MA20[i]-MA20_s[i];
Buf_ROC_MA20[i]=ROC_MA20[i];
i--;
//Calcular el índice de la siguiente barra
}
//--------------------------------------------------------------------
return; // Salir de la función especial start()
}
Hay demasiados errores.
Principalmente error en el trabajo con matrices.
Ayúdame a resolver este problema - hay una señal de compra/venta, el EA abre una operación, establece un beneficio y un stop. Y si la operación se cierra en stop en la misma vela, entonces el asesor abre la operación de nuevo, y necesito que no se abra, es decir, en una señal se abrió una operación.
¿Cómo hacerlo?
¿Cómo hacerlo?
La hora de cierre de la última orden debe ser menor que la hora de apertura de la barra actual.
Si no es así, no abra la operación.
La hora de cierre de la última orden debe ser menor que la hora de apertura de la barra actual.
Si no es así, no abrimos un trato.
>> Estoy confundido.
Bueno, ¿cómo va a abrir la PRIMERA operación si la condición es escribir que no entra hasta que haya al menos una operación?