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

 
Alexey Viktorov:
Así es como cualquiera establece un stop en el precio. Sólo los puntos se multiplican por _Point y se añaden al precio actual. Pero nadie prohíbe especificar un precio concreto.
Tenemos que establecer un stop para todas las órdenes abiertas a un determinado precio. Por ejemplo, abrimos tres órdenes y el precio de parada, digamos, 1,32511, ya está especificado en el Asesor Experto. Esto es lo que necesitamos)
 
Anton Govorukhin:
Necesitamos que establezca un stop para todas las órdenes abiertas a un precio determinado. Por ejemplo, se abren tres órdenes y se escribe un stop, por ejemplo 1,32511, en el Asesor Experto... Así es como debe ser)
Tome cualquier Asesor Experto de Kodobase que utilice stops y modifique la parte donde se establece el stop. Esto es para 15 minutos de trabajo lento.
 

Hola chicos, me podéis explicar la lógica de servidor->terminal->asesor. Tengo esta pregunta debido a la función de manejo de errores en el EA. Por lo que he entendido en el tutorial, las TIC son: SERVIDOR ---> transmite las cotizaciones de precios ---> TERMINAL ---> da el control al EA ---> ASESOR (ciclo de ticks procesados) ---> hacia atrás en definitiva.

PREGUNTA: Al principio, cuando el servidor transmite una cotización, ¿es sólo una cotización, o en este ciclo de TICK hay inmediatamente un dato sobre varios errores en el servidor (si ocurre, por supuesto)?

Es difícil programar sin entender la lógica

 
Evgeniy Oshurkevich:

Hola chicos, ¿podéis explicarme la lógica del servidor->terminal->asesor? Tengo esta pregunta debido a la función de manejo de errores en el EA. Por lo que he entendido en el tutorial, las TIC son: SERVIDOR ---> transmite las cotizaciones de precios ---> TERMINAL ---> da el control al EA ---> ASESOR (ciclo de ticks procesados) ---> hacia atrás en definitiva.

PREGUNTA: Al principio, cuando el servidor transmite una cotización, ¿es sólo una cotización, o en este ciclo de TICK hay inmediatamente un dato sobre varios errores en el servidor (si ocurre, por supuesto)?

Es difícil programar sin entender la lógica

Los errores se producen independientemente de los ticks.
 
Vitalie Postolache:
Los errores se producen independientemente de los ticks.

Entonces no lo entiendo. Las funciones de tratamiento de errores sólo son necesarias para los casos de comercio, ¿he entendido bien? ¿Es antes de abrir una orden o antes de modificar una orden? ¿Es esto correcto? Es decir, antes de abrir un pedido, debo asegurarme de que no hay errores en el servidor; si los hay, abro el pedido?

Mi EA siempre ha estado enviando órdenes sin ningún mensaje de error, probablemente por la tozudez de mi EA. Es posible que por esto mi EA no haya podido operar. No sé cómo hacerlo, tengo que hacerlo con un Asesor Experto, pero no sé cómo hacerlo.

Si los errores vienen sin importar los errores, entonces elmismoGetLastError() pregunta al servidor si hay errores?

 
Evgeniy Oshurkevich:

Entonces no lo entiendo. Las funciones de tratamiento de errores sólo son necesarias para los casos de comercio, ¿he entendido bien? ¿Es antes de abrir una orden o antes de modificar una orden? ¿Es esto correcto? Es decir, antes de abrir un pedido, debo asegurarme de que no hay errores en el servidor; si los hay, abro el pedido?

Mi EA siempre ha estado enviando órdenes sin ningún mensaje de error, probablemente por la tozudez de mi EA. Es posible que por esto mi EA no haya podido operar. No sé qué hacer con ellos, tengo que pedirles ayuda y tengo que pedirles detalles.

Si los errores vienen sin importar los errores, entonces elmismo GetLastError() pregunta al servidor si hay errores?

Bueno, no hay errores del lado del cliente en el servidor, de ninguna manera, nunca, en ningún lugar, en absoluto, entender eso para empezar.

El servidor devuelve un código numérico en respuesta a una orden de negociación del cliente, eso es todo. Código 0 - está bien, el comando pasó sin problemas. Código mayor que cero - hay problemas, el terminal registra el código de error y el descifrado.

El procesamiento del código de retorno del servidor no sólo debe ser considerado en el Asesor Experto, el programador debe considerar los errores antes de enviar el comando al servidor y prevenir el envío de valores erróneos en las órdenes de operación que llevarán a errores. Entonces, el comercio utilizando EAs no será prohibido. De lo contrario, obtendrá una firma.

Ejemplo: No hay suficiente dinero en la cuenta para comprar 1 lote de euros, el Asesor Experto no lo considera y bombardea el servidor con órdenes de compra de 1 lote cada tick. Naturalmente, el servidor, en el mejor de los casos, pondrá la cuenta en modo manual.

Si el Asesor Experto primero comprueba el margen requerido para la compra de 1 lote, luego compara este valor con los fondos disponibles en la cuenta y ve que no hay fondos suficientes y no operará, y en cambio advierte al operador, entonces todo está bien, este es un ejemplo de buen comportamiento.

Debe considerar todas las posibles condiciones de error, corregir el valor cuando sea posible, y bloquear las operaciones y alertar al operador cuando haya un problema.

 
Evgeniy Oshurkevich:

Entonces no lo entiendo. Las funciones de tratamiento de errores sólo son necesarias para los casos de comercio, ¿he entendido bien? ¿Es antes de abrir una orden o antes de modificar una orden? ¿Es esto correcto? Es decir, antes de abrir un pedido, debo asegurarme de que no hay errores en el servidor; si los hay, abro el pedido?

Mi EA siempre ha estado enviando órdenes sin ningún mensaje de error, probablemente por la tozudez de mi EA. Es posible que por esto mi EA no haya podido operar. No sé cómo hacerlo, tengo que hacerlo con un Asesor Experto, pero no sé cómo hacerlo.

Si los errores vienen sin importar los errores, entonces elmismo GetLastError() pregunta al servidor si hay errores?

El principio: a punto de realizar una operación comercial, lógicamente debemos entender "¿habrá suficiente dinero para la transacción? El siguiente paso: "¿Es el nivel adecuado para el pedido, o la distancia lo permite o no? - comprobarlo. Esto es una comprobación por su parte para no tocar el servidor.

A continuación: comprobaciones pasadas y pasadas con éxito - enviamos una orden al servidor y esperamos la respuesta, la funciónGetLastError() recibe una respuesta del servidor, si no hay error "0", si hay errores, devuelve el código de error, respectivamente, y devuelve su orden para la revisión. Además, la tarea consiste en tratar el error recibido y decidir si hay que volver a bombardear el servidor o simplemente calmarse. Los códigos de error están en la ayuda.

PD: mientras escribía, ya me has contestado)

 
Vitalie Postolache yVitaly Muzichenko, ¡un gran agradecimiento humano! )) Imagínate, por fin lo he conseguido)))
 
Evgeniy Oshurkevich:
Vitalie Postolache yVitaly Muzichenko, ¡un gran agradecimiento humano! )) Imagínate, por fin lo he conseguido).
Excelente) Completar los detalles. Imagínese la situación: su empresa de corretaje cotiza hasta las 23-59 del viernes, pero sus solicitudes de comercio se procesan sólo hasta las 23-50. Usted tiene un EA y sus estocásticos se cruzan en algún lugar y comienza a enviar la solicitud al servidor y obtiene el error "El mercado está cerrado", pero los ticks están pasando y envía la orden de nuevo en cada tick. ¿Crees que al servidor le gustará? También es conveniente tener en cuenta estas cosas.
 
Vitaly Muzichenko:
Bien) Entonces déjame añadir. Imagina la situación: tu empresa de corretaje cotiza hasta las 23-59 del viernes, pero las solicitudes de operaciones se procesan sólo hasta las 23-50. Tienes un EA y sus estocásticos se cruzan en alguna parte y comienza a enviar solicitudes al servidor y obtiene el error "El mercado está cerrado", pero los ticks continúan y envía órdenes en cada tick, sin verificación. ¿Crees que al servidor le gustará? También es conveniente tener en cuenta estas cosas.
Ya lo tengo, y en esto gracias. He prescrito la función de manejo de errores antes de cualquier orden, pero todavía me pregunto cómo frenar el Asesor Experto, si habrá errores debido a mi error, y dónde prescribirlo. Es decir, he intentado abrir un pedido, pero se ha producido un error, ¿cómo conseguirlo? Por ejemplo, OrderSend(....); ha realizado una transacción, ¿cómo puedo obtener información sobre si ha funcionado correctamente?
Razón de la queja: