
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
La opción correcta con un ejemplo sencillo
Creo que es mejor si la orden aún no ha sido contabilizada en la posición, sólo esperar a que se contabilice.
No entiendo la idea.
Este diagrama muestra que cuando se coloca una orden de mercado utilizando OrderSendAsync en MetaQuotes-Demo, es imposible captar de forma fiable la orden correspondiente que se coloca hasta que la orden se ejecuta o se rechaza. Es decir, no hay mecanismos simples en MT5 para evaluar los resultados intermedios de su OrderSendAsync.
parece estar en el tema,
Me gustaría señalar que este código :
funciona sin problemas en la DEMO (result=request),
pero en REAL - es imposible obtener un resultado (resultado=0.0). ... A menos que esperes unos segundos.
Parece que está en el tema,
Me gustaría señalar que dicho código :
En la DEMO funciona sin problemas (result=request),
pero en REAL - es imposible obtener el resultado (resultado=0.0). ... A menos que esperes unos segundos.
Faltan datos - registros, valores de campos de estructura después de OrderSend, nombre del servidor comercial.
La cuestión, en pocas palabras, es la siguiente: si hay una orden de mercado, considérela también una "posición". Entre comillas porque es una posición envuelta. El código resaltado no suele aparecer en ningún sitio. Pero evita reabrir posiciones. Lo más interesante aquí está resaltado en rojo. La necesidad de este chip no es evidente.
Puede que no haya una señal de negociación en el siguiente tick. Yo también uso el estilo MT4, así que no puedo evitar ver esas "posiciones" sin meterme en problemas.
Faltan datos - registros, valores de campos de estructura después de OrderSend, nombre del servidor comercial.
2018.02.20 15:20:35.845 Operaciones orden #66745055 comprar 0.01 / 0.01 EURUSDeur en el mercado hecho en 610.625 ms
2018.02.20 15:20:35.935 Trades deal #5461453 buy 0.01 EURUSDeur at 1.23403 done (based on order #66745055)
2018.02.20 15:20:35.845 TestBUY (EURUSDeur,M15) retcode=10009 deal=0 order=66745055
Si la solicitud se cumple (10009) , por qué tratar=0
Si la solicitud está hecha (10009) , por qué deal=0
Ahí es casi donde empezó la discusión. Los enlaces tienen todos los detalles.
Existe una solución para que OrderSend funcione perfectamente, pero eso sería publicidad.
La opción correcta con un ejemplo sencillo
La cuestión, en pocas palabras, es la siguiente: si hay una orden de mercado, considérela también una "posición". Entre comillas, porque es una posición envuelta. El código resaltado no suele aparecer en ningún sitio. Pero evita reabrir posiciones. Lo más interesante aquí está resaltado en rojo. La necesidad de este chip no es evidente.
El asunto es que existen las llamadas órdenes de cierre de mercado. El mismo SL/TP. Obviamente, no nos gustaría ver esas órdenes de mercado como "posiciones". Y no nos gustaría que se cerraran también esos pedidos que hemos hecho. Así que la condición resaltada es el filtro apropiado.
for (int i = OrdersTotal() - 1; i >= 0; i--) if (OrderGetTicket(i) && (OrderGetInteger(ORDER_TYPE) <= ORDER_TYPE_SELL) && !OrderGetInteger(ORDER_POSITION_ID) && (OrderGetString(ORDER_SYMBOL) == Symb)) Res++;
SZY Inserte este código aquí y compruebe el resultado en un servidor de demostración.
Invito a todos los interesados a debatir esta cuestión. Mi opinión al respecto es la siguiente:
for (int i = OrdersTotal() - 1; i >= 0; i--) if (OrderGetTicket(i) && (OrderGetInteger(ORDER_TYPE) <= ORDER_TYPE_SELL) && !OrderGetInteger(ORDER_POSITION_ID) && (OrderGetString(ORDER_SYMBOL) == Symb)) Res++;
Este bucle añade una posición si se encuentra un pedido que no tiene un identificador de posición (el ID es cero).
Hemos devuelto un puesto más.
¿Qué pasa si el pedido es cancelado por el servidor?
...
Creo que al calcular las órdenes de mercado, deberíamos devolver WRONG_VALUE, por ejemplo, si hemos encontrado una - las posiciones no pueden ser inferiores a cero. Esto será una señal de que hay una orden de mercado no registrada. Pero no para añadir el número de puestos.