Preguntas de un "tonto" - página 166

 
Alphazavr:

Qué pasa con el código. ¿Por qué siguen apareciendo los errores"falló la orden de cancelación #0 compra 0.00 en el mercado [Solicitud inválida]"?

¿Dónde está la selección de posiciones?

¿Qué tienen que ver las órdenes con las operaciones?

¿Qué está tratando de hacer? ¿Cerrar una posición?


y el nombre order_remove_mql_trade_request es un mal sueño.

 
sergeev:

¿dónde está la selección de posiciones?

¿qué tienen que ver las órdenes con las operaciones?

¿Qué es lo que intenta hacer? ¿Cerrar una posición?


y el nombre order_remove_mql_trade_request es un mal sueño.

sí, tengo que aclararlo.

El propósito del código - si hay una posición abierta, entonces cancela todas las órdenes limitadas de la misma dirección que la posición.

por ejemplo, si una posición está abierta BAY. entonces cancela todas las órdenes como límite de compra

Me olvidé de seleccionar la posición =). Pues el error no es de eso (comprobado).

 
Alphazavr:

Qué pasa con el código. ¿Por qué siguen apareciendo los errores"falló la orden de cancelación #0 compra 0.00 en el mercado [Solicitud inválida]"?


   MqlTradeRequest order_remove_mql_trade_request = {0};
   order_remove_mql_trade_request.action = TRADE_ACTION_REMOVE;

   i = OrdersTotal();
   if(i > 0){
      if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY){
         for(i2 = 0;i2 <= i;i2++){
            ul = OrderGetTicket(i2);
            OrderSelect(ul);
            if(OrderGetInteger(ORDER_TYPE) == ORDER_TYPE_BUY_LIMIT){
               order_remove_mql_trade_request.order = ul;
               OrderSend(order_remove_mql_trade_request,mql_trade_result);}}}
      if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL){
         for(i2 = 0;i2 <= i;i2++){
            ul = OrderGetTicket(i2);
            OrderSelect(ul);
            if(OrderGetInteger(ORDER_TYPE) == ORDER_TYPE_SELL_LIMIT){
               order_remove_mql_trade_request.order = ul;
               OrderSend(order_remove_mql_trade_request,mql_trade_result);}}}}


eliminar estas igualdades.
 
sergeev:
quitar esos signos de igualdad.
Ya lo he hecho, no funciona. No sé dónde está el error. Además, no entiendo por qué estos errores son sólo con órdenes BAY LIMIT, no hay errores con Sell Limits.
 
Alphazavr:
Ya lo hice, no funciona.
No es bueno engañar a los mayores.
 
sergeev:
No es bueno engañar a los mayores.

No es bueno hacer trampa. Yo no lo hago.


Acabo de comprobar todo con este código:

   i = OrdersTotal();
   if(i > 0){
      PositionSelect(_Symbol);
      if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY){
         for(i2 = 0;i2 < i;i2++){
            ul = OrderGetTicket(i2);
            OrderSelect(ul);
            if(OrderGetInteger(ORDER_TYPE) == ORDER_TYPE_BUY_LIMIT){
               order_remove_mql_trade_request.order = ul;
               OrderSend(order_remove_mql_trade_request,mql_trade_result);}}}
      if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL){
         for(i2 = 0;i2 < i;i2++){
            ul = OrderGetTicket(i2);
            OrderSelect(ul);
            if(OrderGetInteger(ORDER_TYPE) == ORDER_TYPE_SELL_LIMIT){
               order_remove_mql_trade_request.order = ul;
               OrderSend(order_remove_mql_trade_request,mql_trade_result);}}}}


El resultado es el mismo. el error mencionado anteriormente se produce a menudo

 
Alphazavr:

el resultado es el mismo. el error se produce a menudo

"a menudo" es una frase vacía.

¿Crees que 2+2 suele ser igual a 4?

no sea perezoso - haga un análisis de envío y un análisis del error devuelto.

compruebe lo que está tratando de eliminar?

¿hay pedidos disponibles en el momento del cierre?

tal vez usted está tratando de eliminar un pedido que ya ha sido eliminado.


En tercer lugar, ¿quién te ha enseñado a cerrar órdenes para que creas que puedes cerrar todas las órdenes? Crees que después de cada uno de tus cierres, el OrdersTotal disminuirá en 1. Y sigues batiendo tu i2++ hasta ganar, hasta la i primaria.

Ni siquiera se molesta en comprobar si OrderGetTicket o OrderSelect devuelven un error

malo, muy malo.

Es a causa de estas plumas que nuestros satélites salen de órbita.

 
sergeev:

"a menudo" es una frase vacía.

¿Crees que 2+2 suele ser igual a 4?

no sea perezoso - haga un análisis de envío y un análisis de error de retorno.

¿comprobar qué es lo que está tratando de borrar?

¿hay pedidos disponibles en el momento del cierre?

tal vez usted está tratando de eliminar un pedido que ya ha sido eliminado.


En tercer lugar, ¿quién te ha enseñado a cerrar las órdenes de esa manera? Crees que pasas todas las órdenes, pero no es así. Después de cada uno de tus cierres, OrdersTotal disminuye en 1. Y sigues superando tu i2++ hasta que ganas, hasta la i primaria.

Ni siquiera se molesta en comprobar si OrderGetTicket o OrderSelect devuelven un error

Esto es malo, muy malo.

Es debido a estas plumas que nuestros satélites se salen de órbita.

Estaba seguro de que no era eso, de lo contrario habría habido errores en la prueba no sólo con los bylimits, sino también con los selllimits. Gracias por intentar ayudarme y orientarme.

 

Saludos señores.

Este es un prototipo de una función de Windows que emula la pulsación de una tecla:

VOID WINAPI keybd_event(__in  BYTE bVk,               // Тип BYTE, занимает 1 байт
                        __in  BYTE bScan,             // Тип BYTE, занимает 1 байт
                        __in  DWORD dwFlags,
                        __in  ULONG_PTR dwExtraInfo
);

El caso es que esta función se llama en MT4 con int's en lugar de bytes. Se ve así:

void keybd_event(int bVk,                 // Тип int, занимает 4 байта
                 int bScan,               // Тип int, занимает 4 байта
                 int dwFlags,
                 int dwExtraInfo);
¿Cuál es el problema? ¿Transfiere al menos 4 bytes? ¿Depende del hardware?
 
220Volt:

Saludos señores.

Este es un prototipo de una función de Windows que emula la pulsación de una tecla:

El caso es que esta función se llama en MT4 con int's en lugar de bytes. Se ve así:

¿Cuál es el problema? ¿Transfiere al menos 4 bytes? ¿Depende del hardware?

Cuando se pasan parámetros a una función, el quantum mínimo es un entero de 32 bits. Es decir, bVk y bScan en su caso serán convertidos al tipo int antes de ser pasados a la función

Por eso, los prototipos de funciones indicados anteriormente no se contradicen entre sí

Документация по MQL5: Основы языка / Функции / Передача параметров
Документация по MQL5: Основы языка / Функции / Передача параметров
  • www.mql5.com
Основы языка / Функции / Передача параметров - Документация по MQL5
Razón de la queja: