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
Sí, un buen consejo...
Repita
Tenemos que comprobarlos resultados.orden.
Si el pedido se realiza, no significa que el trato ya esté hecho.
Además, también debemos comprobar el estado del pedido y si ya ha aparecido en el historial o no.
La bolsa no funciona con posiciones, sólo con órdenes.
Hace poco planteé un tema sobre la reapertura de pedidos. Pensé que había resuelto el problema, ya que todo funcionó sin problemas durante una semana. Pero hoy me he encontrado con un problema similar sólo al abrir.
Se abrieron muchas órdenes en Finam, y 9 en Otkritie... aunque sólo debería haberse abierto una orden en todos los casos.
Este es un fragmento de código del EA
es decir, podemos ver en el código que si la operación tiene éxito, aumenta la variableOpenOrders, que inicialmente es igual a 0
Si es superior a 0, no debe haber más apertura de la orden, sino que toda la pila de órdenes se abre con el comentario Orden1.
Compruebo si hay una respuesta positiva en la función de apertura de la orden y si se ha recibido el ticket de la orden, pero por alguna razón esta función devuelve false, aunque la orden esté realmente establecida.
Explique qué es lo que falla, cómo resolver este problema.
Dígame, ¿para qué mercado está escribiendo este código?
Para el corredor de bolsa.
Repita
Aparte de eso, también debe comprobar el estado del pedido y si ya ha aparecido en el historial o no.
La bolsa no maneja posiciones, sólo órdenes.
Bueno Sergei, ver....esto es de la documentación del resultado de la consulta
Oferta
Un acuerdo sobre el billete, si se ha ejecutado. Se comunica durante una transacción comercialTRADE_ACTION_DEAL
pedir
Orden de compra de entradas, si se ha realizado una entrada. Notificado durante una operación comercialTRADE_ACTION_PENDING
No tengo una orden pendiente, usoTRADE_ACTION_DEAL
Debe estar trabajando con limitadores, entonces todo es correcto.... y aquí está la entrada del mercado al precio actual.Bueno Sergei, ver....esto es de la documentación del resultado de la consulta
acuerdo
Oferta de entradas, si la hay. Se debe informar sobre una operaciónTRADE_ACTION_DEAL
pedir
Orden de compra de entradas, si se ha realizado una entrada. Notificado durante una operación comercialTRADE_ACTION_PENDING
No tengo una orden pendiente, usoTRADE_ACTION_DEAL
Debes trabajar con limitadores, entonces todo es correcto.... y aquí estás entrando desde el mercado al precio actual.SetTypeFilling
SetTypeFilling
Establece el tipo de pedido al rellenar
Usted establece lo que considere oportuno.
Por cierto, acabo de comprobar los resultados del envío del pedido con las impresiones
por lo que el billete da 0 en todos los casos
res=OrderSend(Request,Results);
if(res)
{
Print(_Symbol+" Test True order "+(string)Results.deal);
if(Results.deal>0) return(true);
else return(false);
}
Print(_Symbol+" Test False order "+(string)Results.deal);
return(false);
Por cierto, acabo de comprobar los resultados de enviar un pedido con las impresiones
El billete muestra 0 en todos los casos
Se han hecho progresos... ))
Por cierto, acabo de comprobar con la imprenta los resultados del envío del pedido
por lo que el billete da 0 en todos los casos
res=OrderSend(Request,Results);
if(res)
{
Print(_Symbol+" Test True order "+(string)Results.deal);
if(Results.deal>0) return(true);
else return(false);
}
Print(_Symbol+" Test False order "+(string)Results.deal);
return(false);
¿Dónde están los códigos de devolución? ¿Cómo puedo saber si hubo un error o no?
Te puse un ejemplo: la doble protección y la salida del ticket y el código de retorno.
No he podido encontrar un ejemplo. Permítanme decirlo de esta manera.
Cuando usted envía una orden a través del mercado, la orden debería ejecutarse o ser rechazada (ya que tiene un relleno FOK).
Por lo tanto, no es necesario esperar un billete, sino conseguir un TICKET.
Una vez que se recibe un ticket, se "pasa" a OnTradeTransaction() con el ticket
se escucha TRADE_TRANSACTION_HISTORY_ADD porque las órdenes de mercado siempre llegan al historial
y mirar el ticket para ver qué ha pasado con el pedido.