Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 18
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
Esto no es bueno. ¿Probablemente te aparezcan advertencias en tiempo de compilación? En estos casos hay que deshacerse de las causas de las advertencias, no de la #propiedadestricta
He recargado mi saldo y ahora no encuentro el terminal con la cuenta real.
Cuando se deletrea #property strict, el compilador genera errores en cada bucle for() que las variables deben tener un tipo, por lo que tenía que escribir int i e int p en cada bucle. Después de eso el compilador no generó errores, pero la línea no se construyó. Cuando eliminé #property strict, el compilador no requirió declarar el tipo en cada bucle, y la línea se construyó.
Un caso típico de aprovechamiento de errores implícitos en la lógica. Una vez que el compilador se ha vuelto "más estricto", el autoengaño va desapareciendo poco a poco.
Me preguntaba por qué había tantos bucles idénticos.
¿Y por qué no se molesta de ninguna manera con el error "out of array" al ejecutar el indicador en el gráfico?
Por ejemplo, aquí:
{
for(int p=0; p<m; p++)
{
sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p];
}
}
He recargado mi saldo y ahora no encuentro el terminal con la cuenta real.
Cuando se deletrea #property strict, el compilador da errores en cada bucle for() de que las variables deben tener un tipo, por lo que tuve que deletrear int i e int p en cada bucle. Después de eso el compilador no generó errores, pero la línea no se construyó. Cuando eliminé #property strict, el compilador ya no requirió declarar el tipo en cada ciclo, y la línea se construyó.
la respuesta es muy simple - usted tiene un rebasamiento de matriz trivial - y su indicador deja de funcionar debido a este error
{
for(int p=0; p<m; p++)
{
sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p];
}
}
for(int i=1; i<n; i++)
{
for(int p=0; p<m; p++)
{
Mx[i][p]=sum_x[p+1][m-1]/(n-1);
My[i][p]=sum_y[p+1][m-1]/(n-1);
puede ver este error en tiempo de ejecución - inicie el indicador y mire el archivo de registro en la pestaña Terminal - Expertos:
Este es un caso típico de explotación de errores lógicos implícitos. ...
Un caso típico de aprovechamiento de errores implícitos en la lógica. Una vez que el compilador se ha vuelto "más estricto", el autoengaño desaparece lentamente.
Me preguntaba, ¿por qué hay tantos bucles idénticos?
¿Y por qué no se molesta de ninguna manera con el error "out of array" al ejecutar el indicador en el gráfico?
Por ejemplo, aquí:
{
for(int p=0; p<m; p++)
{
sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p];
}
}
En cuanto a los mismos ciclos, yo, debido a mis limitados conocimientos de programación y algoritmos, no he pensado en nada mejor para seleccionar el elemento de la matriz de la dimensión requerida, que era necesario para la sustitución en la fórmula.
la respuesta es muy simple - usted tiene un rebasamiento de matriz trivial - y su indicador deja de funcionar debido a este error
{
for(int p=0; p<m; p++)
{
sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p];
}
}
for(int i=1; i<n; i++)
{
for(int p=0; p<m; p++)
{
Mx[i][p]=sum_x[p+1][m-1]/(n-1);
My[i][p]=sum_y[p+1][m-1]/(n-1);
puede ver este error en la etapa de ejecución - inicie el indicador y mire el archivo de registro en la pestaña Terminal - Expertos:
Entonces, ¿cómo se calcula la suma de los precios de cierre en cada dimensión?
En cuanto a los mismos ciclos, debido a mis limitados conocimientos de programación y algoritmos, no se me ocurrió nada mejor para seleccionar ese elemento del array de la dimensión deseada, que era necesario sustituir en la fórmula.
Por ejemplo, así:
for(int i=1; i<n; i++)
{for(int p=1; p<m; p++)
{
sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p];
}
}
¿Pueden decirme cómo solucionar este error?
Para corregir este error, hay que entender la fórmula: qué, por qué y cómo se cuenta.
Y sólo entonces podrás elaborar tu algoritmo y eliminar el error fuera de la matriz.
Con el método de la "corazonada" y sin entender su fórmula, eliminará el error, pero hará un cálculo erróneo.
p.d. Explique detalladamente lo que está calculando -- comente su código en detalle -- y entonces entenderemos cómo solucionar el error.