Pregunta sobre la función OrderSelect - página 2

 
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void CheckForClose()
  {
   double ma;
//--- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//--- get Moving Average 
   ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//---
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
      //--- check order type 
      if(OrderType()==OP_BUY)
        {
         if(Open[1]>ma && Close[1]<ma)
           {
            if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,White))
               Print("OrderClose error ",GetLastError());
           }
         break;
        }
      if(OrderType()==OP_SELL)
        {
         if(Open[1]<ma && Close[1]>ma)
           {
            if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,White))
               Print("OrderClose error ",GetLastError());
           }
         break;
        }
     }
//---
  }
for(int i=0;i<OrdersTotal();i++)
 

Un nuevo tipo de arte.

Sátira comercial.

Me encanta.

 
boopa26:

1. no necesita conocimientos de c. mql4 es diferentes funciones

boopa26 no hace perder el tiempo a la gente

  1. Cree que puede escribir código sin saber escribir código. Las funciones son irrelevantes.
    boopa26 : quiere escribir la función order select para cerrar órdenes sin ciclos for o while.
    Entonces, ¿por qué acabas de publicar un código que sí utiliza bucles? Nos estás haciendo perder el tiempo.
  2. En presencia de múltiples órdenes (un EA múltiples gráficos, múltiples EA's, comercio manual)
 
for(last_index_inside_trade_pool=OrdersTotal()-1;last_index_inside_trade_pool>=0;last_index_inside_trade_pool--)

   {if(OrderSelect(last_index_inside_trade_pool,SELECT_BY_POS,MODE_TRADES)==1&&
       OrderMagicNumber()==magic_number&&
       OrderType()==OP_SELL)

       OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Red);


    if(OrderSelect(last_index_inside_trade_pool,SELECT_BY_POS,MODE_TRADES)==0)

       Print("OrderSelectError: ",GetLastError());}

¿perder el tiempo eh? ¿el código de arriba parece que estoy perdiendo el tiempo? uh ... probablemente no WHRoeder

esto no fue una tarea fácil, pero el código de arriba hace cerrar las órdenes. no entiende sin embargo. sería bueno si coder explica más detalles

lo que piensa boopa26

static int ultimo_index_inside_trade_pool = OrdersTotal()-1

while last_index_inside_trade_pool >=0 do code below. do last_index_inside_trade_pool--

el código de abajo encuentra la orden. comprueba la orden. cierra la orden. hace GetLastError()

no entiende sin embargo

if(OrderSelect(last_index_inside_trade_pool,SELECT_BY_POS,MODE_TRADES)==1&&
 
boopa26: ¿Perdiendo el tiempo, eh? ¿Parece que el código de arriba te hace perder el tiempo?
Sí. Hice dos preguntas y las ignoraste totalmente.
 

Entonces, ¿por qué acabas de publicar un código que sí utiliza bucles?

el código de ciclos puede ser escrito de manera diferente para hacer lo mismo sin ciclos. ejemplo

static int last_index_inside_trade_pool;
//below start()
last_index_inside_trade_pool=OrdersTotal()-1;

  if(OrdersTotal()>0&&
     iMA(NULL,0,1,0,MODE_SMMA,PRICE_CLOSE,1)>iMA(NULL,0,10,0,MODE_SMMA,PRICE_CLOSE,1)&&
     OrderSelect(last_index_inside_trade_pool,SELECT_BY_POS,MODE_TRADES)==1&&
     OrderMagicNumber()==99999&&
     OrderType()==OP_SELL)

    {last_index_inside_trade_pool--;
     OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Red);}

sin bucles pero con el mismo resultado. boopa26 prefiere las condiciones if a los ciclos for while

Crees que puedes escribir código sin saber escribir código. Las funciones son irrelevantes.

se como hacer condiciones if mientras ciclos para ciclos matematica basica. eso es un buen comienzo WHRoeder. la programacion c es la programacion c. mql4 es mql4. ¿Por qué? debido a las funciones. mql4 hace ejemplo de programación c * () == etc pero no es lo mismo debido a las funciones

 

¿qué interruptores ordenan la función de selección de 0 a 1?

if(OrderSelect(last_index_inside_trade_pool,SELECT_BY_POS,MODE_TRADES))==1

¿la función order select pasa de 0 a 1 cuando el total de pedidos es mayor que cero?


documentación

"Valor devuelto

Devuelve true si la función tiene éxito, en caso contrario, falsea. Para obtener la información de error, hay que llamar a la función GetLastError()."

¿retorna 1 si la función tiene éxito?

 

Me encanta este tipo :-)

¿Escribes sólo en este foro o tienes otros enlaces?

Si lo haces en un escenario, ¿dónde puedo conseguir entradas?

 

solo este foro

eddie ¿sabes algo sobre la función de selección de pedidos?

 
boopa26:

Entonces, ¿por qué acabas de publicar un código que sí utiliza bucles?

El código de los ciclos puede ser escrito de manera diferente para hacer las mismas funciones sin ciclos.

sin bucles pero con el mismo resultado. boopa26 prefiere las condiciones if a los ciclos for while

Crees que puedes escribir código sin saber escribir código. Las funciones son irrelevantes.

se como hacer condiciones if mientras ciclos para ciclos matematica basica. eso es un buen comienzo WHRoeder. la programacion c es la programacion c. mql4 es mql4. ¿Por qué? por las FUNCIONES

¿Y te preguntas por qué tu código sigue sin funcionar? ¡Porque todavía no conoces los "fundamentos", que si hubieras seguido el "paso 1" y aprendido a codificar correctamente en "C", habrías sido mucho más hábil en la codificación en MQL (porque es similar a C y C ++)!

¡Incluso fallas en la comprensión de las "funciones" (paso 3)! ¿Desde cuándo"OrderSelect()" devuelve un entero, cuando la documentación dice claramente que devuelve un booleano? Ni siquiera compruebas el resultado de "OrderClose()" o si se ha producido un error de ejecución en alguna parte de tu código.

Su resultado: Has acabado con "carbón quemado" y como te niegas a seguir nuestros consejos, ¡también nos haces perder el tiempo!

Razón de la queja: