[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 331

 

Sepulca

entonces de un vistazo puedes probar esto como en el archivo adjunto. Los cambios van acompañados del comentario "// Modificar para Elektronik".


Lamentablemente, no puedo comprobar su modificación, hay un error

No puedoabrir una VENTA de EURUSD 2 a 1,2445 , Error 4109.

Y el guión es este.

Archivos adjuntos:
reverse.mq4  16 kb
 

Buenas tardes.

¿Podría decirme por qué el resultado está distorsionado al convertir double a int

int init()

{

int sum=(1.3167+0.001)*10000;

Alert (sum);

return(0);

}

El resultado se imprime como 13176.

Lógicamente debería ser 13177.

Y este problema sólo aparece al añadir. Al restar

int sum=(1.3167-0.001)*10000;

produce el resultado correcto: 13157

Me pregunto si al abrir los paréntesis

int sum=1.3167*10000+0.001*10000; 

entonces lo hace bien. ¿Cuál es la diferencia?

Gracias de antemano.

 
GygaByte:

Buenas tardes.

Me pueden decir por qué al convertir double a int el resultado está distorsionado

Anota:

int sum=NormalizeDouble((1.3167+0.001)*10000,Digits);
y se leerá correctamente.
 

Gracias por el consejo de Sepulca , lo tengo solucionado.

      if (OrderComment()==""){
         MyComment="";
      } else {
         MyComment="[" + OrderComment() + "]";
      }
 

Gracias por el consejo de Sepulca , lo tengo solucionado.

      if (OrderComment()==""){
         MyComment="";
      } else {
         MyComment="[" + OrderComment() + "]";
      }
 
hoz:


Pues bien, tengo en mi código una fijación de cuando el valor del indicador es mayor que el nivel del indicador y menor que(nivel del indicador + desviación permitida, una especie de gap). Aquí:

El0,1 lo tomé como una suposición. Pero las aperturas se producen en el momento equivocado.

A juzgar por tus palabras, ¿tienes que comparar el valor de alguna barra, que es inferior al nivel del indicador, con el valor de la barra cero superior (nivel + holgura) y no al revés?

Pero si encontramos el cruce del valor del indicador en la barra anterior y el valor en la barra actual (a través del nivel especificado), entonces para la barra actual el valor, y en consecuencia, el precio puede volar muy lejos y, en consecuencia, esto no es una opción en absoluto. ¿Cómo explicar entonces con claridad la condición de la que escribí? Aquí hay una captura de pantalla que explica la situación:

De la captura de pantalla, debe comprobar: si el RSI de la primera barra es menor que el nivel y el RSI de la barra cero es mayor o igual que el nivel, entonces compre. Al mismo tiempo, el RSI debe contarse en los precios de apertura, de lo contrario no se pueden evitar los falsos positivos en la barra cero. Si quiere leer el RSI a otros precios (precios de cierre, por ejemplo), entonces compruebe la segunda y la primera barra en consecuencia.
 
hoz:


Boris, tienes el valor extraído del plazo de 1M. Y no se compara con el nivel sino con el cero. No entiendo por qué el valor se tomará en cada tic. Quizá no sea complicado, pero no he trabajado antes con indicadores y no parece lógico a primera vista.

De nuevo, si los valores se toman en cada tic, ¿cómo se compara con un nivel específico para que en cada tic el examinador siga ese nivel?

En mi caso, para comprar en M5 escribí de la siguiente manera:

Aquíi_RSIToUpLimit es el nivel del indicador RSI. Entiendo que el periodo de M1 debe multiplicarse por 5 para utilizar el nivel en M5, ¿verdad? Entonces el periodo será de 70 y no de 14.

Víctor, en lugar de cero, pon tu nivel en una dirección con un más y en la otra con un menos. Y al igual que con el Cierre en la barra cero, en la que pasará su nivel, ¡también dará una señal! El periodo de RSI determinará la optimización. En general, Artem tiene razón. Haz lo que te aconseja.
 
abolk:

Escríbelo:

Y todo contará correctamente.


Correcto, pero como la práctica ha demostrado, no siempre...

int init()
  {
//----
double bid=NormalizeDouble(Bid,Digits);
double b=NormalizeDouble(0.0005,Digits);
double bid_minus=NormalizeDouble(bid-b,Digits);
double bid_plus=NormalizeDouble(bid+b,Digits);

Alert ("bid= ",bid," bid_minus= ",bid_minus," bid_plus= ",bid_plus, " Bid = ",DoubleToStr(Bid,6));
//----
   return(0);
  }

Si el quinto decimal = 5 (1,xxxx5), el valor sigue estando distorsionado:

Alertas

la pregunta sigue siendo válida...

P.D. En realidad necesito asignar un valor de precio a MagicNumber... Y escribe MagicNumber - int, aquí e intenta convertir por

int MN=NormalizeDouble(Bid*10000,Digits);

¿Quién más puede aconsejarme?

Gracias.

 

¡Saludos a todos! ¡Feliz Día de la Victoria!

Me pueden decir por qué el terminal no se conecta, da el mensaje "No hay conexión", aunque hay un ping. Aunque hay un ping, de hecho hay una conexión con el servidor. Esta es una captura de pantalla: http://snag.gy/UFNFL.jpg

Prueba de ping

Los datos para el registro no se crean http://snag.gy/i8cmn.jpg

No se registra

Este "Por favor, espere" lleva más de una hora. Normalmente debería ser instantáneo.

No entiendo qué estoy haciendo mal. ¿Por qué no hay conexión, si tengo una, por qué tengo ping?

He probado M5 de la misma manera y me he registrado, pero M4 no puedo, lo he intentado 20 veces.

Por favor, avise, ¡quién sabe!

 
Buenas noches. ¿Podría decirme si hay algún indicador de perfil de mercado? ¿Y también una documentación o descripción de cómo utilizarlos? ¿Al menos las señales más sencillas para entrar en el mercado utilizando indicadores de perfil de mercado?