[¡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 674

 
 

Es un problema.

Empecé a modificar el Asesor Experto del tutorial - strings.mq4 (enlace a experthttp://c.mql4.com/book/mq4/experts/strings.mq4)

He añadido un par de líneas, pero no funciona. Está claro que me he equivocado, pero no puedo encontrar el error.

Así que. Todos los cambios se concentran en el bloque 10.

Aquí está el original:

//-------------------------------------------------------------- 10 --
int Create(int Ind_Bar, int Line) // Función personalizada...
{ // ...crear objeto
Color Color; // color del objeto
datetime T_Bar=Time [Ind_Bar]; // hora de apertura de la barra
double O_Bar=Open [Ind_Bar]; // Precio de apertura de la barra
double C_Bar=Close[Ind_Bar]; // Precio de cierre de una barra
double H_Bar=High [Ind_Bar]; // Precio máximo de la barra
double L_Bar=Low [Ind_Bar]; // Precio mínimo de la barra

string Nom_Lin =Línea + "_"; // Cadena - número de línea
// string Nom_Lin = DoubleToStr(Line,0)+"_"; // Esto también es posible
string Str_Time=TimeToStr(T_Bar); // String - tiempo de apertura.
string Su_Nombre=Prefijo+Nom_Lin+Str_Time;// Nombre del objeto creado
if (O_Bar < C_Bar) Color=Azul; // selección de color según...
if (O_Bar > C_Bar) Color=Rojo; // ... dependiendo de las características de la barra
if (O_Bar ==C_Bar) Color=Verde;

switch(Line) // Línea fina o gruesa
{
caso 1: // Línea fina
ObjectCreate(His_Name,OBJ_TREND,0,T_Bar,H_Bar,T_Bar,L_Bar);
break; // Salir del interruptor
caso 2: // línea gruesa
ObjectCreate(His_Name,OBJ_TREND,0,T_Bar,O_Bar,T_Bar,C_Bar);
ObjectSet( His_Name, OBJPROP_WIDTH, 3); // Estilo
}
ObjectSet( Su_nombre,OBJPROP_COLOR,Color); // Color
ObjectSet( Su_Nombre, OBJPROP_RAY, false); // Rayo
ObjectSetText(His_Name, "El objeto fue creado por el Asesor Experto",10); // Descripción
return; // Salir de la función

}

Y esto es lo que he hecho (compila sin errores): (ver también archivo adjunto)

//-------------------------------------------------------------- 10 --
int Create(int Ind_Bar, int Line) // Función personalizada...
{ // ...creación de objetos
Color Color; // Color del objeto
datetime T_Bar=Time [Ind_Bar]; // hora de apertura de la barra
double O_Bar=Open [Ind_Bar]; // Precio de apertura de la barra
double C_Bar=Close[Ind_Bar]; // Precio de cierre de una barra
double H_Bar=High [Ind_Bar]; // Precio máximo de la barra
double L_Bar=Low [Ind_Bar]; // Precio mínimo de la barra
//-------------------изменения---------------------------------------
double Macd_M_D1=iMACD(NULL,1440,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
// arriba - acceso al cálculo del MAACD en los días de la línea principal
double Macd_S_D1=iMACD(NULL,1440,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
// Esta es la referencia del MACD y el cálculo de la Línea de Señal en los días
double Macd_M_H4=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
// Esta es la referencia al MACD y el cálculo de la línea principal en el marco temporal actual
double Macd_S_H4=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
// Esta es la referencia al MACD y el cálculo de la línea de señal en el marco de tiempo actual

string Nom_Lin =Línea + "_"; // Cadena - número de la línea
// string Nom_Lin = DoubleToStr(Line,0)+"_"; // Se puede hacer así
string Str_Time=TimeToStr(T_Bar); // String - tiempo de apertura.
string Su_Nombre=Prefijo+Nom_Lin+Str_Time;// Nombre del objeto creado
if ((Macd_M_D1 < Macd_S_D1)&&(Macd_M_H4 < Macd_S_H4))Color=Azul;
if ((Macd_M_D1 > Macd_S_D1)&&(Macd_M_H4 > Macd_S_H4))Color=Red;
//
//si (O_Bar < C_Bar) Color=Azul; //Selección de color según...
//si (O_Bar > C_Bar) Color=Rojo; // ... dependiendo de las características de la barra
//si (O_Bar ==C_Bar) Color=Verde;

//-------------------изменения---------------------------------------

El objetivo -si las lecturas del MACD en el marco temporal diario y actual son similares- es colorear la vela en rojo o en azul dependiendo de la dirección.

Archivos adjuntos:
 

No se pueden declarar matrices así

datetime T_Bar=Time [Ind_Bar]; // Время открытия бара
double O_Bar=Open [Ind_Bar]; // Цена открытия бара
double C_Bar=Close[Ind_Bar]; // Цена закрытия бара
double H_Bar=High [Ind_Bar]; // Максимальная цена бара
double L_Bar=Low [Ind_Bar]; // Минимальная цена бара

El compilador verá que hay una variable en lugar del tamaño de un array. Simplemente no sabrá cuánta memoria debe asignarse para el futuro array. Por eso tu código no funciona

 
drknn:

No se pueden declarar matrices así

El compilador verá que hay una variable en lugar del tamaño de un array. Simplemente no sabrá cuánta memoria debe asignarse para el futuro array. Y es por eso que su código no funciona

La cosa es que no toqué esa parte del Asesor Experto - y funcionó bien - y la parte especificada del código fue tomada del tutorial de MQL4 - aquí https://c.mql4.com/book/mq4/experts/strings.mq4

 
victor417:

La cosa es que no toqué esta parte del Asesor Experto - y todo funcionó - y la parte mencionada del código está tomada del tutorial de MQL4 - aquí https://c.mql4.com/book/mq4/experts/strings.mq4


Si es así como se declaran los arrays en el tutorial, es bastante extraño. Habría resaltado con un comentario la parte del código que USTED aportó.

Yo tampoco he leído ese libro de texto. ¿Y cuál es el razonamiento del autor sobre la legitimidad de la declaración de la matriz?

 

Me he dado cuenta de una extraña característica: cuanto mayor es el volumen de citas, más se ralentiza el probador... Si empiezo la prueba desde 1999, corre rápido, pero cuanto más cerca del momento actual, más duros son los frenos... 2008 y más cerca de "hoy" - imposible de probar en modo de visualización en absoluto.

¿Cómo se combaten los frenos del probador en absoluto?

 

drknn:

No se pueden declarar matrices así

datetime T_Bar=Time [Ind_Bar]; // Время открытия бара
double O_Bar=Open [Ind_Bar]; // Цена открытия бара
double C_Bar=Close[Ind_Bar]; // Цена закрытия бара
double H_Bar=High [Ind_Bar]; // Максимальная цена бара
double L_Bar=Low [Ind_Bar]; // Минимальная цена бара

El compilador verá que hay una variable en lugar del tamaño del array. Simplemente no sabrá cuánta memoria debe asignarse para el futuro array. Y es por eso que su código no funciona.

Si es así como se definen los arrays en el tutorial, es realmente extraño. ¿Habrías puesto un comentario en la parte del código que has escrito?

Yo tampoco he leído ese libro de texto. ¿Y cuál es el razonamiento del autor sobre la legitimidad de la declaración de la matriz?

Veo la inicialización de variables. ¿Dónde están las matrices?

¿Serie de tiempo? ;)

 
Hola, ¿alguien puede hacer un indicador de zigzag que se dobla la corriente en una desviación mínima de la lowe alta pero en pips... Por ejemplo, si se establece una desviación de 50 pips, cualquier cosa menos que eso, se considera el ruido... Realmente no sé cómo buscar un material tan grande kollichestvo en el foro... Gracias de antemano.
 

Me pueden decir por favor, tengo un problema con el probador.

El informe muestra que la pérdida total = 863 y la reducción máxima = 1427. ¿Cómo puede ser esto?

Si se observa la curva de balance - se puede ver que la reducción máxima - 863.

¿Qué tipo de fallo es este, puedes decirme por favor, o tal vez esto es la forma en que debe ser?

Gracias de antemano)

 
Hola! Alguien puede añadir un trailing stop aquí; y el stoploss se establece de manera diferente cada vez...Arreglarlo por favor.
Archivos adjuntos:
a_sidus_1.mq4  5 kb