Por lo que tengo entendido, una vez identificado el cruce y puesto el stop=1, hay una salida inmediata del ciclo. Bien, entonces hay que ir más allá y recordar el número de la vela donde se produjo el cruce. Es decir
Es más fácil escribirlo uno mismo:
for( int i = 1; i < 1000; i++ )
{
iMaValue = ...; // Значение МА на i свече
if( iMaValue < High[ i ] && iMaValue > low[ i ] )
{
num = i; // Запоминаем номер свечи, на котором произошло пересечениеbreak; // Выходим из цикла
}
}
Esto es que has identificado el número de la vela. Si el número = 2 y no se tiene en cuenta el actual, entonces desde el cruce se formó una vela (o interpretarlo como quieras).
Por lo que tengo entendido, una vez identificado el cruce y puesto el stop=1, hay una salida inmediata del ciclo. Bien, entonces tienes que ir más allá y recordar el número de la vela donde se produjo el cruce. Es decir
Es más fácil escribirlo uno mismo:
Esto es que has identificado el número de la vela. Si el número = 2 y se ignora el actual, entonces se ha formado una vela desde el cruce (bueno, o interpretarlo como se quiera).
alph: ¿Puede decirme si se trata de una cifra de prueba realista? ¿Y es un buen o mal resultado para un año con una deposición de 3.000 dólares?
La respuesta es sencilla: la actuación del probador NO ES REAL si está probando un EA. El Probador de Estrategias es utilizado por los operadores para comprobar el rendimiento del ATC, o para probar las estrategias manuales en línea.
No deberías escribirlo así, porque si no hubo cruce durante las últimas 1000 barras, primero, el bucle continuará, y segundo, puede dar un bucle/error, porque si la historia termina y no hay cruce, no habrá salida del bucle, porque Stop = 0. Es mejor escribirlo de la manera que mencioné anteriormente.
No deberías escribirlo así, porque si no hubo cruce durante las últimas 1000 barras, en primer lugar, el ciclo continuará, y en segundo lugar, puede hacer un bucle/error, porque si la historia termina y no hay cruce, no habrá salida del ciclo, porque Stop = 0. Es mejor escribirlo de la manera que mencioné anteriormente.
El signo "o" no funciona: según la expresión, el bucle se sobrepasará en 1000 barras o terminará en cuanto se encuentre el resultado deseado. ¿O se acabará antes de las 1000 barras si el resultado requerido, es decir, el cruce de la MA?
-Aleks-: El signo "o" no funciona - la condición dice que o bien llega a 1000 barras o bien termina en cuanto se encuentra el resultado deseado. ¿O se acabará antes de 1000 barras, si el resultado deseado, es decir, el cruce de la MA?
|| significa que si al menos una de las condiciones de los paréntesis es cierta, el ciclo se repetirá. Por lo tanto, incluso cuando i >= 1000, pero stop = 0, el ciclo continuará y i seguirá incrementándose, lo que provocará valores incorrectos de MA (en caso de que se salga del historial). Y el operador break se encarga de la terminación del bucle cuando se encuentra el resultado deseado;
Tapochun: || significa que si al menos una de las condiciones entre paréntesis es verdadera, el bucle se repetirá, por lo tanto, incluso cuando i >= 1000, pero stop = 0, el bucle continuará, i continuará incrementándose, lo que provocará el valor incorrecto de MA (en caso de que haya un valor atípico en el historial). Y el operador de ruptura es responsable de la terminación del bucle al encontrar el resultado deseado;
Entendido, ¡gracias por la aclaración! Pensé que una de las condiciones estaría mal y entonces el bucle se detendría...
Hola 2015.09.19_02:13AM MSC. En la función ArrayResize() de todos modos el compilador escribe
frente al tamaño del array -- se espera una coma, tanto si se escribe int como si no. Si no escribes int, dice: "-.
Lo he cambiado sin tipo. Y eliminé la referencia & y los corchetes - ¡funcionó! Advertencias: cuando se escribió normalmente, -- el compilador escribió: oculta el identificador
declaración a nivel global. Y cuando eliminé la declaración del identificador a nivel global, - escribí
escribe: "Error, identificador no declarado. Y he cambiado los arrays High[] y Low[] por HighP[] y LowP[]. No
ayudado. El compilador escribe lo mismo. 02:27 MSC. Adjunto un archivo de capturas de pantalla.
Hola 2015.09.19_02:13AM MSC. En la función ArrayResize() de todos modos el compilador escribe
frente al tamaño del array -- se espera una coma, tanto si se escribe int como si no. Si no escribes int, dice: "-.
"sin tipo". Y eliminé la referencia & y los corchetes - ¡ayudó! Advertencias: cuando se escribió normalmente, -- el compilador escribió: oculta el identificador
declaración a nivel global. Y cuando eliminé la declaración del identificador a nivel global, - escribí
escribe: "Error, identificador no declarado. Y he cambiado los arrays High[] y Low[] por HighP[] y LowP[]. No
ayudado. El compilador escribe lo mismo. 02:27 MSC. Adjunto el archivo de capturas de pantalla.
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
¿Pueden decirme qué estoy haciendo mal?
Necesito calcular cuántas barras han pasado desde que el precio cruzó por última vez la MA - excluyendo la barra cero.
if(Bars>1400)
{
int Stop;
double MATcycle;
for(int i=0;i!=1000 || Stop!=1; i++)
{
MATcycle=iMA(Symbol(),TFT,pMAT,shiftMAT,typeMAT,priceMAT,i+1);
if(MATcycle<High[i+1] && MATcycle>Low[i+1])
{
Stop=1;
Print("MATcycle=",MATcycle," i=",i);
}
else return (0);
}
¿Pueden decirme qué estoy haciendo mal?
Necesita - contar cuántas barras han pasado desde que el precio cruzó por última vez la MA - sin incluir la barra cero.
if(Bars>1400)
{
int Stop;
double MATcycle;
for(int i=0;i<1000 || Stop==1; i++)
{
MATcycle=iMA(Symbol(),TFT,pMAT,shiftMAT,typeMAT,priceMAT,i+1);
if(MATcycle<High[i+1] && MATcycle>Low[i+1])
{
Stop=1;
Print("MATcycle=",MATcycle," i=",i);
}
else return (0);
}
Por lo que tengo entendido, una vez identificado el cruce y puesto el stop=1, hay una salida inmediata del ciclo. Bien, entonces hay que ir más allá y recordar el número de la vela donde se produjo el cruce. Es decir
Es más fácil escribirlo uno mismo:
Esto es que has identificado el número de la vela. Si el número = 2 y no se tiene en cuenta el actual, entonces desde el cruce se formó una vela (o interpretarlo como quieras).
Por lo que tengo entendido, una vez identificado el cruce y puesto el stop=1, hay una salida inmediata del ciclo. Bien, entonces tienes que ir más allá y recordar el número de la vela donde se produjo el cruce. Es decir
Es más fácil escribirlo uno mismo:
Esto es que has identificado el número de la vela. Si el número = 2 y se ignora el actual, entonces se ha formado una vela desde el cruce (bueno, o interpretarlo como se quiera).
Gracias, así es como me ha funcionado
int Stop=0;
if(Bars>1400)
{
double MATcycle;
for(int i=1;(i!=1000 || Stop==0); i++)
{
MATcycle=iMA(Symbol(),TFT,pMAT,shiftMAT,typeMAT,priceMAT,i);
if(MATcycle<=High[i] && MATcycle>=Low[i])
{
Print("MATcycle=",MATcycle," i=",i);
Stop=i;
break;
}
}
}
¿Puede decirme si se trata de una cifra de prueba realista? ¿Y es un buen o mal resultado para un año con una deposición de 3.000 dólares?
Gracias, así es como me ha funcionado
int Stop=0;
if(Bars>1400)
{
double MATcycle;
for(int i=1;(i!=1000 || Stop==0); i++)
{
MATcycle=iMA(Symbol(),TFT,pMAT,shiftMAT,typeMAT,priceMAT,i);
if(MATcycle<=High[i] && MATcycle>=Low[i])
{
Print("MATcycle=",MATcycle," i=",i);
Stop=i;
break;
}
}
}
No deberías escribirlo así, porque si no hubo cruce durante las últimas 1000 barras, primero, el bucle continuará, y segundo, puede dar un bucle/error, porque si la historia termina y no hay cruce, no habrá salida del bucle, porque Stop = 0. Es mejor escribirlo de la manera que mencioné anteriormente.
No deberías escribirlo así, porque si no hubo cruce durante las últimas 1000 barras, en primer lugar, el ciclo continuará, y en segundo lugar, puede hacer un bucle/error, porque si la historia termina y no hay cruce, no habrá salida del ciclo, porque Stop = 0. Es mejor escribirlo de la manera que mencioné anteriormente.
El signo "o" no funciona - la condición dice que o bien llega a 1000 barras o bien termina en cuanto se encuentra el resultado deseado. ¿O se acabará antes de 1000 barras, si el resultado deseado, es decir, el cruce de la MA?
|| significa que si al menos una de las condiciones entre paréntesis es verdadera, el bucle se repetirá, por lo tanto, incluso cuando i >= 1000, pero stop = 0, el bucle continuará, i continuará incrementándose, lo que provocará el valor incorrecto de MA (en caso de que haya un valor atípico en el historial). Y el operador de ruptura es responsable de la terminación del bucle al encontrar el resultado deseado;
Hola 2015.09.19_02:13AM MSC. En la función ArrayResize() de todos modos el compilador escribe
frente al tamaño del array -- se espera una coma, tanto si se escribe int como si no. Si no escribes int, dice: "-.
Lo he cambiado sin tipo. Y eliminé la referencia & y los corchetes - ¡funcionó!
Advertencias: cuando se escribió normalmente, -- el compilador escribió: oculta el identificador
declaración a nivel global. Y cuando eliminé la declaración del identificador a nivel global, - escribí
escribe: "Error, identificador no declarado. Y he cambiado los arrays High[] y Low[] por HighP[] y LowP[]. No
ayudado. El compilador escribe lo mismo. 02:27 MSC. Adjunto un archivo de capturas de pantalla.
Hola 2015.09.19_02:13AM MSC. En la función ArrayResize() de todos modos el compilador escribe
frente al tamaño del array -- se espera una coma, tanto si se escribe int como si no. Si no escribes int, dice: "-.
"sin tipo". Y eliminé la referencia & y los corchetes - ¡ayudó!
Advertencias: cuando se escribió normalmente, -- el compilador escribió: oculta el identificador
declaración a nivel global. Y cuando eliminé la declaración del identificador a nivel global, - escribí
escribe: "Error, identificador no declarado. Y he cambiado los arrays High[] y Low[] por HighP[] y LowP[]. No
ayudado. El compilador escribe lo mismo. 02:27 MSC. Adjunto el archivo de capturas de pantalla.
Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias
Preguntas de los principiantes
Karputov Vladimir, 2015.09.17 18:46