Pergunta sobre a função 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++)
 

Um novo tipo de arte.

A sátira comercial.

Eu amo.

 
boopa26:

1. não precisa de conhecimento c. mql4 é função diferente

boopa26 não faz perder tempo às pessoas

  1. Você acha que pode escrever código sem saber como escrever código. As funções são irrelevantes.
    boopa26 : quer escrever a função de seleção de ordem para fechar ordens sem por ciclos ou enquanto ciclos.
    Então por que você acabou de postar código que usa loops? Você está perdendo nosso tempo.
  2. Na presença de várias ordens (um gráfico de EA múltiplo, vários EA's, negociação 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());}

perda de tempo huh? o código acima parece que estou perdendo seu tempo? uh... provavelmente não WHRoeder

não foi uma tarefa fácil, mas o código acima faz encomendas fechadas. no entanto, não entende. seria bom se o codificador explicasse mais detalhes

o que pensa o boopa26

static int last_index_inside_trade_pool = OrderTotal()-1

enquanto last_index_inside_inside_trade_pool >=0 do code below. do last_index_inside_trade_pool...

código abaixo encontra ordem. verifica ordem. fecha ordem. faz GetLastError()

não entende, no entanto

if(OrderSelect(last_index_inside_trade_pool,SELECT_BY_POS,MODE_TRADES)==1&&
 
boopa26: Perda de tempo, hein? o código acima parece que estou perdendo seu tempo?
Sim. Eu fiz duas perguntas e você as ignorou totalmente.
 

Então por que você acabou de postar código que usa loops?

O código dos ciclos pode ser escrito de forma diferente para fazer o mesmo sem ciclos. exemplo

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);}

sem loops mas com o mesmo resultado. boopa26 prefere se condições para ciclos enquanto ciclos

Você acha que pode escrever código sem saber como escrever código. As funções são irrelevantes.

eu sei como fazer se as condições enquanto ciclos para ciclos matemáticos básicos são um bom começo WHRoeder. c programação é c programação. mql4 é mql4. Por quê? por causa de FUNÇÕES. mql4 faz a programação c exemplo * () == etc. mas não é o mesmo por causa de funções

 

qual ordem de comutação selecionar função de 0 a 1?

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

a ordem de seleção da função muda de 0 para 1 após o total de ordens ser maior que zero?


documentação

"Valor devolvido

Ele retorna verdadeiro se a função for bem sucedida, caso contrário, é falsa. Para obter as informações de erro, é preciso chamar a função GetLastError()".

ela retorna 1 se a função for bem sucedida?

 

Eu amo este cara :-)

Você está escrevendo apenas neste fórum ou você tem outros links?

Se você está fazendo isso em um palco, onde eu posso, por ingressos?

 

apenas este fórum

Eddie, você sabe algo sobre a função de seleção de pedidos?

 
boopa26:

Então por que você acabou de postar código que usa loops?

O código de ciclos pode ser escrito de forma diferente para fazer as mesmas funções sem ciclos. exemplo

sem loops mas com o mesmo resultado. boopa26 prefere se condições para ciclos enquanto ciclos

Você acha que pode escrever código sem saber como escrever código. As funções são irrelevantes.

eu sei como fazer se as condições enquanto ciclos para ciclos matemáticos básicos são um bom começo WHRoeder. c programação é c programação. mql4 é mql4. Por quê? por causa das FUNÇÕES

E você se pergunta por que seu código ainda não funciona? Porque você ainda não conhece o "básico", que se você tivesse seguido o "passo 1" e aprendido a codificar corretamente em "C", você teria sido muito mais hábil em codificar em MQL (porque é similar ao C e C++)!

Você até falha em entender as "funções" (passo 3)! Desde quando"OrderSelect()" retorna e inteiro, quando a documentação diz claramente que retorna um Booleano? Você nem mesmo verifica o resultado do "OrderClose()" ou se ocorreu um erro de tempo de execução em qualquer parte de seu código!

Seu resultado: Você acabou com o "carvão queimado" e como você se recusa a seguir nossos conselhos, você também perde nosso tempo!