Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 134

 

Hay un problema con el Asesor Experto en el probador. Estoy probando con datos de 1 minuto. Yo mismo calculo el estocástico para el TF superior utilizando los datos de los minutos.

El historial de actas se ha descargado desde 2001. En la pestaña "Gráficos", establezca el número máximo de barras en el historial, y que se muestren.

Todo el historial del gráfico se desplaza.

El problema es que, como resultó con la impresión de depuración, no importa desde qué fecha inicie el probador, el número máximo de barras

en la variable Bars en la primera barra de la prueba (al inicio) es siempre 1001 o 1002. El valor de Bares aumenta en 1 con cada barra siguiente.

Por lo tanto, es imposible contar con los TF más altos al principio.

Hay una solución. Deberíamos añadir la prohibición de comerciar antes de que Bars alcance el valor deseado.

¿Podemos resolver este problema de otra manera? ¿Aumenta de alguna manera este valor inicial de Bares en el probador?

 
Igor733:

Hay un problema con el Asesor Experto en el probador. Estoy probando con datos de 1 minuto. Yo mismo calculo el estocástico para el TF superior utilizando los datos de los minutos.

El historial de actas se ha descargado desde 2001. En la pestaña "Gráficos", establezca el número máximo de barras en el historial, y que se muestren.

Todo el historial del gráfico se desplaza.

El problema es que, como resultó con la impresión de depuración, no importa desde qué fecha inicie el probador, el número máximo de barras

en la variable Bars en la primera barra de la prueba (al inicio) es siempre 1001 o 1002. El valor de Bares aumenta en 1 con cada barra siguiente.

Por lo tanto, es imposible calcular la TF más alta al principio.

Hay una solución. Deberíamos añadir la prohibición de comerciar antes de que Bars alcance el valor deseado.

¿Podemos resolver este problema de otra manera? ¿Aumenta de alguna manera este valor inicial de Bares en el probador?

No, no es así. Utilice su propia solución.
 
Cuál podría ser el problema. Cuando escribo un EA, tengo que probarlo muchas veces para seguir los cambios. Después de un número aleatorio de pruebas, el probador de estrategias no acepta los cambios realizados en el código. A veces se llega al punto de lo absurdo. Basta con eliminar un trozo de código y el búho funcionará en el probador siguiendo el algoritmo escrito anteriormente. Lo mismo ocurre con el análisis sintáctico de los cálculos en el CSV. Después de un cierto número de pruebas se analiza una mierda al azar en el CSV.

P.D. He pulsado el botón de compilación.
 

Realmente necesito entender el algoritmo para calcular la media móvil suavizada. Hay varias razones por las que la función iMA no es adecuada.

Según he entendido la información de https://www.metatrader5.com/ru/terminal/help/indicators/trend_indicators/ma#smma

El primer elemento se calcula como la suma de los precios de cierre dividida por el periodo.

Los siguientes se calculan según la fórmula SMMA (i) = (SMMA (i - 1) * (N - 1) + CLOSE (i)) / N.

Tomemos un período de 5 y los precios de cierre de EUR/USD H1 para el período de 24.02.2017 19:00 a 24.02.2017 23.00 (GMT+2) es decir, las últimas 5 velas

Los precios de cierre son 1,05681; 1,05702; 1,05639; 1,05612; 1,05592.

Correspondientemente, 1º elemento - 1,056452; 2º elemento - 1,056852 3º elemento - 1,05676 4º elemento - 1,056632 5º elemento - 1,056489

Pero en el gráfico del SMMA 5, el cierre es de 1,05706, es decir, la diferencia ya está en el tercer dígito

¿Qué estoy contando mal?

¿Y cómo debo calcular correctamente para obtener 1,05706?

 
zsu1970:

Realmente necesito entender el algoritmo para calcular la media móvil suavizada. Hay varias razones por las que la función iMA no es adecuada.

Según he entendido la información de https://www.metatrader5.com/ru/terminal/help/indicators/trend_indicators/ma#smma

El primer elemento se calcula como la suma de los precios de cierre dividida por el periodo.

Los siguientes se calculan según la fórmula SMMA (i) = (SMMA (i - 1) * (N - 1) + CLOSE (i)) / N.

Tomemos un período de 5 y los precios de cierre de EUR/USD H1 para el período de 24.02.2017 19:00 a 24.02.2017 23.00 (GMT+2) es decir, las últimas 5 velas

Los precios de cierre son 1,05681; 1,05702; 1,05639; 1,05612; 1,05592.

Correspondientemente, 1º elemento - 1,056452; 2º elemento - 1,056852 3º elemento - 1,05676 4º elemento - 1,056632 5º elemento - 1,056489

Pero en el gráfico del SMMA 5, el cierre es de 1,05706, es decir, la diferencia ya está en el tercer dígito

¿Qué estoy contando mal?

¿Y cómo debo calcular correctamente para obtener 1,05706?

Mira en el propio indicador, tendrá más sentido.
 
Aleksey Maryaskin:
¡Señores promotores! Buenos días a todos. Me interesa la cuestión de la creación de una plantilla para un Asesor Experto (script) al crearlo. ¿Se puede editar en algún sitio y cómo se hace?
Un enlace directo aquí probablemente no se podrá... Puedes buscar en Google "Voy a publicar el curso MQL4 en este hilo" (sin las comillas). Busca "plantilla" (creo que está en la 2ª página).
 
Vitaly Muzichenko:
Mira el propio indicador, tendrá más sentido.
Mirado Es lo mismo que el enlace que te di.

double SMMA(int period)
{

//llenar la matriz con los precios de cierre
int k=periodo;
for(int i=1; i<=periodo; i++)
{
H1_Close[i]=Close[k];
// Print("H1_Close [",i,"] ",H1_Close[i]," Close [",k,"] ",Close[k]);
k--;
}
//calcular el primer elemento como el precio medio de cierre
doble Suma=0;
for (int i=1; i<=periodo;i++)
Summ=Summ+H1_Close[i]; //SUM1 = SUM(CLOSE, N)
double TmpSMMA=Summ/periodo; //SMMA1 = SUM1/N
//calcular el elemento i-ésimo como SMMA (i) = (SMMA (i - 1) * (N - 1) + CLOSE (i)) / N
for(int i=2;i<=periodo;i++)
TmpSMMA=(TmpSMMA*(periodo-1)+H1_Close[i])/periodo;
}
El resultado sigue siendo muy diferente de los datos del indicador en el terminal. ¿POR QUÉ?
 
zsu1970:

Realmente necesito entender el algoritmo para calcular la media móvil suavizada. Hay varias razones por las que la función iMA no es adecuada.

Según he entendido la información de https://www.metatrader5.com/ru/terminal/help/indicators/trend_indicators/ma#smma

El primer elemento se calcula como la suma de los precios de cierre dividida por el periodo.

Los siguientes se calculan según la fórmula SMMA (i) = (SMMA (i - 1) * (N - 1) + CLOSE (i)) / N.

Tomemos un período de 5 y los precios de cierre de EUR/USD H1 para el período de 24.02.2017 19:00 a 24.02.2017 23.00 (GMT+2) es decir, las últimas 5 velas

Los precios de cierre son 1,05681; 1,05702; 1,05639; 1,05612; 1,05592.

Correspondientemente, 1º elemento - 1,056452; 2º elemento - 1,056852 3º elemento - 1,05676 4º elemento - 1,056632 5º elemento - 1,056489

Pero en el gráfico del SMMA 5, el cierre es de 1,05706, es decir, la diferencia ya está en el tercer dígito

¿Qué estoy contando mal?

¿Y cómo debo calcular correctamente para obtener 1,05706?

Por lo tanto, hay un algoritmo de cálculo en el inclusionnik.

 
Alexey Viktorov:
Hay un algoritmo de cálculo en el inluder.

Parece que hago todo como en los cálculos, pero el resultado no sale. Día 4 no puedo entenderlo.
Escribí el código de la función en la respuesta de Vitaly Muzichenko , pero no puedo averiguar cuál es el error
 
zsu1970:
Así que parece que hago todo como en los cálculos, pero el resultado no sale. Estoy sentado aquí por cuarto día y no puedo entenderlo.
Escribí el código de la función en la respuesta de Vitaly Muzichenko , pero no puedo averiguar cuál es el error
¿Pones los precios de inmediato, o los obtienes y luego los pegas en el cálculo?