Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 134
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
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?
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?
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?
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?
¡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?
Mira el propio indicador, tendrá más sentido.
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É?
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?
Hay un algoritmo de cálculo en el inluder.
Escribí el código de la función en la respuesta de Vitaly Muzichenko , pero no puedo averiguar cuál es el error
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