Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 885

 
AlexeyVik:

Perdona que insista, pero quiero entender por qué no quieres usar el traductor, si sabes inglés tan bien como yo.

Eso es lo que significa esta advertencia.

Para ser más específicos, la función OrderClose() devuelve true si se ejecuta con éxito o false si falla, por lo que hay que comprobarlo... si la función se ha ejecutado con éxito.

¿Y por qué cree que la advertencia está asociada de algún modo al número de orden en la lista? No entiendo...

Bueno, puedo manejar el inglés sin ayuda de nadie, pero de alguna manera no puedo hacerlo con mql4. ¿Cómo compruebo el éxito - no el éxito, qué función o qué otra cosa? Y asociado con el número de billete no es una advertencia, y mi búsqueda de una comprobación de la función, llevado a cabo sin entender la esencia.

 
rapid_minus:

Bueno, yo puedo manejar el inglés sin ayuda, pero el mql4 no es tan bueno. Explique cómo comprobar el éxito - no el éxito, ¿qué función o qué más? No es una advertencia, es mi búsqueda de la comprobación de la función sin entender la esencia de la misma.


No es nada bueno. Vladimir, has citado una frase que contiene una respuesta inequívoca y clarísima a tu pregunta; e inmediatamente has repetido esta pregunta reprochando al que la ha respondido:

" ... La función OrderClose() devuelve true si se ejecuta con éxito o false si no se ejecuta, eso es lo que hay que comprobar...si la función se ejecutó con éxito... "

¿No es hora de empezar a pensar en ello?

 
tara:

Bzzzzz... Bueno, me haces aprender mql4.

No me propuse tal objetivo. Mi tarea era puramente local: escribir un EA que funcionara con mi propia estrategia, estudiando el lenguaje sólo dentro del alcance mínimo requerido. Después de leer un montón de mensajes en varios hilos del foro, tengo más confianza en la realidad de esta tarea, porque he visto muchos comerciantes que escriben EAs en mql, mientras que permanecen analfabetos incluso en ruso.

Pero veo que en este hilo los expertos no quieren ayudar, sino que quieren obligarme a aprender el idioma. No como se proclama: "cualquier pregunta...", sino: "no hagas preguntas estúpidas". Incluso asomar la nariz a un capítulo de un libro de texto o de referencia o a un ejemplo donde se resuelva esta cuestión es indigno de Grandes Maestros.

Creo que te equivocas un poco: los recién llegados no vienen aquí a admirarte y a aplaudir tus conocimientos.

Los adolescentes no necesitan ser luchadores de karate para protegerse de los acosadores, sólo necesitan saber un par de cosas.

ZS: En realidad, me da la impresión de que usted mismo para responder a la pregunta necesita mirar en un libro de texto, pero no quiere...

Y Dios me libre de reprocharle a alguien algo aquí. Sólo expongo mi opinión. Y gracias por perder el tiempo conmigo.

 

Tuve que indagar en la documentación para entender lo incomprensible...

La documentación sigue teniendo el ejemplo antiguo.

En general: si una función devuelve algún valor, entonces este valor debe ser asignado a una variable del tipo correspondiente y el valor de esta variable debe ser comprobado.

Es así:

bool res;

res = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 40);
if(!res) Print("нихрена ордер не заерылся. Ошибка ", GetLastError());
 
AlexeyVik:

Tuve que indagar en la documentación para entender lo incomprensible...

La documentación sigue teniendo el ejemplo antiguo.

En general: si una función devuelve algún valor, entonces este valor debe ser asignado a una variable del tipo correspondiente y el valor de esta variable debe ser comprobado.

Es así:

Vuelve a comprobarlo más a menudo. Habrá menos preguntas. El conocimiento será mejor.
 
AlexeyVik:

Tuve que indagar en la documentación para entender lo incomprensible...

La documentación sigue teniendo el ejemplo antiguo.

En general: si una función devuelve algún valor, entonces este valor debe ser asignado a una variable del tipo correspondiente y el valor de esta variable debe ser comprobado.

Se ve así:

bool res;

res = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 40);
if(!res) Print("нихрена ордер не заерылся. Ошибка ", GetLastError());

¿Por qué habría una variable adicional? La comprobación directa funciona bien:

if(!OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 40)) Print("нихрена ордер не заерылся. Ошибка ", GetLastError());
Se debe crear una variable cuando se quiera ver el valor de una función desde diferentes puntos del programa, para no tener que llamarla varias veces.
 
evillive:

¿Por qué habría una variable adicional? El cheque directo funciona bien:

La variable debe ser creada cuando el valor de una función debe ser visto desde diferentes puntos del programa para que no tenga que ser llamada varias veces.

¡Oh, Dios mío! Semejante debate, y se me exige que "piense al pie de la letra"...

He solucionado los errores, la compilación da 0 mensajes de error, 0 avisos, pero hay otro problema (o más bien dos): cuando tengo la primera oportunidad de abrir una orden se abren sin parar, hasta que se acaban los fondos, y luego, cuando llegan las condiciones de cierre, se cierran todas y no se abren nuevas órdenes, aunque las órdenes cerradas acaban dando beneficios.

 
rapid_minus:

¡Oh, Dios mío! Tal debate, y se me exige que "llegue al fondo"...

He arreglado los errores, la compilación da 0 mensajes de error y 0 avisos, pero hay otro problema (o más bien dos): cuando tengo la primera oportunidad de abrir una orden se abren sin parar hasta que me quedo sin dinero, y luego, cuando la orden se cierra, se cierran todas y no se abren nuevas órdenes, aunque las órdenes cerradas acaban dando beneficios.

Hay varias formas de limitar el número de pedidos:

1) por cantidad - cuenta el número de pedidos ya abiertos y lo compara con el número establecido por el usuario, si el número de pedidos abiertos ya ha sido establecido, entonces no se deben abrir más pedidos;

2) por tiempo: considere el tiempo transcurrido desde la última orden abierta, si el tiempo transcurrido es inferior al especificado, no opere

3) por la distancia en pips entre el precio de apertura de la orden anterior y el precio de mercado actual (o el precio calculado para las órdenes pendientes); si la distancia es menor, no opere.

Normalmente se utilizan diferentes combinaciones de estas limitaciones.

 
evillive:

Hay varias formas de limitar el número de pedidos:

1) por cantidad - cuenta el número de pedidos ya abiertos y lo compara con el establecido por el usuario, si se abre tanto como el establecido, no abre más;

2) por tiempo: considere el tiempo transcurrido desde la última orden abierta, si el tiempo transcurrido es inferior al especificado, no opere

3) por la distancia en pips entre el precio de apertura de la orden anterior y el precio de mercado actual (o el precio calculado para las órdenes pendientes); si la distancia es menor, no opere.

Normalmente se utilizan diferentes combinaciones de estas limitaciones.

Gracias, intentaré poner el número 1
 

Qué hacer...

...todos están cerrados y no se abren nuevos pedidos...
Se debe comprobar la posibilidad de una nueva sesión de negociación al menos una vez por cada nueva barra (en la apertura), o en cada tick, según las condiciones de la estrategia.
Razón de la queja: