Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 242
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
No puedo resolver un problema aparentemente sencillo. En algún lugar del gráfico había un cruce de MA. Encontramos un bar después de la travesía. ¿Cómo puedo calcular el número de barras desde esa barra hasta la barra actual?
No puedo resolver un problema aparentemente sencillo. En algún lugar del gráfico había un cruce de MA. Encontramos un bar después de la travesía. ¿Cómo puedo calcular el número de barras desde esta barra hasta la actual?
Parece que está hecho (al menos el comentario en la pantalla es correcto). Gracias al"número de barras" creo que he encontrado la solución. Utilizo la función iTime para determinar la fecha de la barra necesaria. El boceto tiene este aspecto:
void OnTick()
{
int nBarsUp, nBarsDn;
datetime date_dn = iTime(NULL, 0, IntersectionDN());
datetime date_up = iTime(NULL, 0, IntersectionUp());
datetime date_1 = iTime(NULL, 0, 1);
nBarsUp = Bars(Symbol(), 0, date_up, date_1);
nBarsDn = Bars(Symbol(), 0, date_dn, date_1);
Comment("Número de barras largas: " + nBarsUp + "\n "+ "Número de barras cortas: " + nBarsUp + "\n".
"Número de barras cortas:" + nBarsDn);
}
//+------------------------------------------------------------------+
int IntersecciónDN()
{
for(int i = 0; i < 36; i++)
{
if(iMA(Symbol(), 0, 5, 0, MODE_EMA, PRICE_CLOSE, i) > iMA(Symbol(), 0, 21, 0, MODE_EMA, PRICE_CLOSE, i)
&& iMA(Symbol(), 0, 5, 0, MODE_EMA, PRICE_CLOSE, i-1) < iMA(Symbol(), 0, 21, 0, MODE_EMA, PRICE_CLOSE, i-1))
retorno(i-1);
}
return(-1);
}
int IntersectionUp()
{
for(int i = 0; i < 36; i++)
{
if(iMA(Symbol(), 0, 5, 0, MODE_EMA, PRICE_CLOSE, i) < iMA(Symbol(), 0, 21, 0, MODE_EMA, PRICE_CLOSE, i)
&& iMA(Symbol(), 0, 5, 0, MODE_EMA, PRICE_CLOSE, i-1) > iMA(Symbol(), 0, 21, 0, MODE_EMA, PRICE_CLOSE, i-1))
retorno(i-1);
}
return(-1);
}
Parece que ha funcionado (al menos el comentario en la pantalla es correcto). Gracias al"número de barras", creo que he encontrado una solución. He utilizado la función iTime para determinar la fecha de la barra deseada. El boceto tiene este aspecto:
Está buscando un cruce en el bucle. Y desde la barra de cero hasta lo más profundo de la historia. Así que su función IntersectionXX() devuelve el número de barra.
¿Para qué es todo esto?
Está buscando un cruce en el bucle. Y desde la barra cero hasta el final de la historia. Así que IntersectionXX() devuelve el número de barra.
¿Para qué es todo esto?
El número del bar, sí. Pero necesito saber el número de barras - desde esta barra en el fondo de la historia hasta la barra cero. En resumen, necesito el ángulo de inclinación de la barra desde la MA. Pero como no se puede calcular como me parece (el precio en la línea vertical y las barras en la línea horizontal colocadas a cierta distancia una de otra - son valores incompatibles). Hace tiempo se sugirió en el foro introducir un coeficiente: la diferencia de precio dividida por el número de barras. La idea me parece razonable. Quiero ponerlo en práctica, pero como yo mismo soy un maniquí, intento encontrar algo y probarlo yo mismo por ensayo y error.
P.D. ¿Cómo se inserta el código en MQL4 (como el tuyo, no como el mío)?¿Alguien puede aconsejar cómo solucionar este problema?
Después de cambiar el TF, el panel se deforma
El número de barras, sí. Pero necesito saber el número de barras - desde esta barra en el fondo de la historia hasta la barra 0. En resumen, necesito el ángulo de la barra desde el MA. Pero como no se puede calcular, me parece (el precio en la línea vertical y las barras en la línea horizontal colocadas a cierta distancia entre sí - son valores incompatibles). Hace tiempo se sugirió en el foro introducir un coeficiente: la diferencia de precio dividida por el número de barras. La idea me parece razonable. Quiero ponerlo en práctica, pero como soy un dummie, intento encontrar algo y probar yo mismo por ensayo y error.
P.D. ¿Cómo se inserta el código en el MQL4 (como lo tienes tú, no como lo tengo yo)?Hola! Los dosnúmerosmenosq y wse comparan incorrectamente, cuando son iguales, el operador if piensa que uno es mayor que el otro.¿Cuál es el error? Cuando q = -0,0002 y w es también -0,0002, res12=falso, ¿por qué?
Hola! Los dosnúmerosmenosq y wse comparan incorrectamente, cuando son iguales, el operador if piensa que uno es mayor que el otro.¿Cuál es el error? Cuando q = -0,0002 y w es también -0,0002, res12=falso, ¿por qué?
Hola! Los dosnúmerosmenosq y wse comparan incorrectamente, cuando son iguales, el operador if piensa que uno es mayor que el otro.¿Cuál es el error? Cuando q = -0,0002 y w es también -0,0002, res12=falso, ¿por qué?
Creo que hay que normalizar y ya está, no se pueden comparar los dobles entre sí sin normalizar.
si NormalizarDoble (q<=w)Creo que tengo que normalizar y ya está, ya que no es posible comparar el doble entre ellos sin normalizar.
Gracias, ha funcionado, ¡sólo que he normalizado q y w por separado!