Errores, fallos, preguntas - página 849

 
Heroix:

Se trata de 2 terminales en 1 ordenador. A todas las sugerencias del terminal de actualizar - respondo "sí".

El archivo fue transferido a flash desde otro ordenador como .mql5, abierto y compilado por diferentes editores de dos terminales.

De todos modos, según he entendido, necesito actualizar MT...

Si estás actualizando manualmente, también necesitas transferir la carpeta /MQL5, porque contiene un gran número de librerías estándar que estás utilizando.

Como sólo has transferido los ejecutables y tu código fuente como un archivo mq5, has cometido un error.

 
OrderLots() y iClose como es posible en MQL 5???
 

Actualizado a bild 695. Ha aparecido un error al compilar Object.mqh.


 
denkir:

Actualizado a bild 695. Ha aparecido un error al compilar Object.mqh.

¿Actualizó automáticamente o sólo movió los archivos?

Si lo hizo automáticamente, al almacenar los archivos en UserData, copie el directorio /MQL5 desde la raíz del programa al directorio de datos (puede abrirlo desde el menú Archivo).

 
A los desarrolladores

¿Qué pasó con el calendario económico, existe?

Pregunta adicional: ¿En qué datos se ha basado y cómo se puede "enchufar" a la CC?

 
papaklass: Los datos no coinciden, pero deberían hacerlo, porque el segundo y el tercer caso son partes separadas de la primera condición. No puedo entender cuál es el problema.

Esta es la condición

if( mn < STP || mn >= STP )

- Tal y como está redactado, funcionará para cualquier mn y STP. ¿Por qué tenemos que introducirlo? Y las dos siguientes opciones - hay un corte específico de ciertas situaciones.

Pero todo parece lógico: uno + dos == tri (sin entrar en detalles de los cálculos uno, dos y tres) en las tres variantes.

 
papaklass:

A eso me refiero. Quiero dividir el espacio común (caso 1) en dos grupos (casos 2 y 3). Lógicamente, la expresión uno + dos == tri debería ser verdadera, pero no lo es. En la primera condición uno=148, y en la segunda 172. Tampoco es un partido para dos y para tri. No sé cuál es el problema.

¿Quizás el problema radica en una condición común? ¿Este código depende de algo más?

Sólo un ejemplo trivial:

condición (a): abrir si la barra en H1 sube. TP=SL=100

condición (b): Abrir si la barra en H1 disminuye. TP=SL=100

Condición adicional: no comprobamos las condiciones por segunda vez, si ya tenemos una posición.

Entonces si habilitamos (a) más (b) abriremos cada vez que se dispare el TP/SL.

si incluimos (a) abriremos en todas las primeras veces más (!!!!) unas cuantas veces más en las que no abrimos porque abrimos antes con la condición (b)

y para incluir sólo la condición (b) de forma similar

 
papaklass: Lógicamente, la expresión uno + dos == tri debería ser correcta, pero no me funciona.

Fíjate bien: esta es exactamente la comparación (uno + dos == tri) que se realiza, para cada una de las opciones.

papaklass: En la primera condición uno=148, y en la segunda 172.

Pues bien, esta es una cuestión diferente, a saber, por qué el valor de uno de la primera variante no es igual al valor de uno de la segunda y tercera variantes.

Usted introduce una condición restrictiva en la segunda y tercera variantes en comparación con la primera variante. Considere por qué, por ejemplo, en la segunda variante el valor de uno aumenta en comparación con la primera variante. No está claro en la parte citada del código hasta ahora.

 
papaklass:

Al puesto anterior.

En el tercer caso: uno=0, dos=124, tri=124.

Los datos no coinciden, pero deberían hacerlo, porque el segundo y el tercer caso son partes separadas de la primera condición. No puedo entender cuál es el problema.

PS: entrada int STP=200;

Resultado correcto con el cambio de conjunto de datos, ya que el espacio mn<STP lo has excluido.

if( /*mn < STP || */ mn >= STP ){
 
papaklass: En mis ejemplos sólo hago un muestreo:

1. Elijo tanto el espacio2 (uno) como el espacio3 (dos); 230 = 148 + 82, es decir, espacio2 (uno) = 148 y espacio3 (dos)=82.

2. ... Debería seguir siendo 148, y se convirtió en 172.

3. ... Debería seguir siendo 82, y se convierte en 124.

A eso me refiero: la pregunta para ti espor qué el valor de uno de la primera opción no es igual al valor de uno de la segunda y tercera opción.

Los valores de spaces2 y space3 deben ser constantes, porque las condiciones para obtener estos espacios son las mismas en los tres ejemplos que he dado en los posts anteriores.

Para encontrar un error en esta suposición lógica, sugiero hacer muy simple: imprimir cada caso de aumento de "spacesX" en las tres variantes, comparar los resultados y analizar por qué razón los "valores de spaces2 y spaces3" no son los mismos.

Adenda. ilunga ya ha insinuado que algunas transacciones pueden perderse al pasar de una variante a otra. Tienes una función/método asesino OpenPosition() incrustado en el cuerpo del operador if(). Y funciona en diferentes tiempos dependiendo de la condición comprobada por el operador if().

Razón de la queja: