[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 4

 
splxgf:

Como você determina qual é qual dos dois?

https://book.mql4.com/ru/trading/orderclose

E filtrar por símbolo, se necessário, exemplo plenamente funcional

https://book.mql4.com/ru/trading/ordermodify


Estou usando o seguinte exemplo para determinar, mas fecha apenas a última ordem pendente em vez da primeira, embora todas as condições sejam cumpridas para a primeira ordem pendente. Ajude-me a encontrar um erro!!!!!!!!!!!!!

 if (Bid>=Openup-0.0005)
 {
 for(int count = OrdersTotal()-1; count >= 0; count--)
  {  
     OrderSelect(count, SELECT_BY_POS, MODE_TRADES);
     if (OrderType() == OP_BUYLIMIT)
       {  
        OrderDelete(ticket,CLR_NONE);
       }
  }
 }
 
Andreev:


Estou usando o seguinte exemplo para determinar, mas fecha apenas a última ordem pendente em vez da primeira, embora todas as condições sejam cumpridas para a primeira ordem pendente. Ajude-me a encontrar um erro!!!!!!!!!!!!!


A maneira mais fácil de determinar qual ordem das duas a fechar é pelo número mágico. Atribua-lhes números diferentes quando você os configurar. O exemplo que você mostrou acima carece desta verificação. Também escreva OrderTicket() em vez de ticket.
 
tol64:

A maneira mais fácil de determinar qual ordem das duas a fechar é pelo número mágico. Atribua-lhes números diferentes quando você os configurar. O exemplo que você mostrou acima carece desta verificação. Também escreva OrderTicket() em vez de ticket.

Obrigado pela resposta! Já fui aconselhado um número mágico, mas onde colocá-lo ao definir uma ordem pendente e como vinculá-lo a um bilhete - não entendo.
 
Andreev:

Obrigado pela resposta! Já fui aconselhado a usar o número mágico, mas não entendo onde colocá-lo ao definir uma ordem pendente e como relacioná-lo a um bilhete.


A magia deve ser definida ao abrir uma ordem, mas certifique-se de que o número de ordens diferentes seja diferente, caso contrário não fará sentido. Abaixo está um link para uma descrição completa da função OrderSend onde todas as variáveis que podem ser definidas ao abrir uma ordem, é VOCÊ que deve estar interessado na variável mágica, mas para trabalhar corretamente todas as variáveis antes que ela seja preenchida, todas as variáveis depois - como você julgar conveniente

https://docs.mql4.com/ru/trading/OrderSend

 
LazarevDenis:


A magia deve ser definida ao abrir uma ordem, mas certifique-se de que o número de ordens diferentes seja diferente, caso contrário não faz sentido, abaixo está um link para uma descrição completa da função OrderSend onde todas as variáveis que podem ser definidas ao abrir uma ordem, VOCÊ deve estar interessado na variável mágica, mas para trabalhar corretamente todas as variáveis antes de ela ser preenchida, todas as variáveis depois - como você julgar conveniente

https://docs.mql4.com/ru/trading/OrderSend


Por que ordens diferentes precisam de magia diferente?
 

Por favor, me dê o código correto. Eu escrevi um EA e ele gera apenas dois erros durante a compilação - eu não sei como me livrar deles.

estes erros 1) 'SL' - variável já definida C:\Program Files\MetaTrader Finam\$.mq4 (43, 11)

e 2) 'TP' - variável já definida C:³ Files\MetaTrader Finam\$.mq4 (45, 11)

O código do Conselheiro Especialista abaixo:

 
extern int  

            Diapazon=1200,
            Slipege=500,
            TP=1500,
            SL=15000;   
            
double pa, pb, pt;
int    ls, dg;                  

  int start()                                // Спец. функция start()
  {  
   
   pa=MarketInfo(Symbol(),MODE_ASK);
   pb=MarketInfo(Symbol(),MODE_BID);
   pt=MarketInfo(Symbol(),MODE_POINT);
   dg=MarketInfo(Symbol(),MODE_DIGITS);
   ls=MarketInfo(Symbol(),MODE_STOPLEVEL);
   
   //---------------------------------------+
    
   if
   
   {
   
   double variable1 = NormalizeDouble(pa+ls*pt,dg); 
  
   double variable2 = NormalizeDouble(pb-ls*pt,dg);
   
   //---------------------------------------------+ 
  
   double pa = NormalizeDouble(Ask+Diapazon*Point,Digits);
   
   double SL = NormalizeDouble(Bid+(Diapazon-SL)*Point,Digits);
  
   double TP = NormalizeDouble(Ask+(Diapazon+TP)*Point,Digits);

 
  
   double pb = NormalizeDouble((Bid+Diapazon*Point,Digits);
  
   double SL = NormalizeDouble(Bid+(Diapazon+SL)*Point,Digits);
  
   double TP = NormalizeDouble(Bid+(Diapazon-TP)*Point,Digits);
   
   }
  
                                       // Открытие BUY
                                         
   OrderSend(Symbol(),OP_BUYSTOP, 0.05,Ask+Diapazon*Point,3,Bid+(Diapazon-SL)*Point,Ask+(Diapazon+TP)*Point);
   
                                     // Открытие SELL
   
   OrderSend(Symbol(),OP_SELLSTOP,0.05,Bid+Diapazon*Point,3,Bid+(Diapazon+SL)*Point,Bid+(Diapazon-TP)*Point);  

   return;                                   // Выход из start()
  }
  
 
Vinin:

E por que garantias diferentes precisam de magik diferentes?

Aparentemente para isso - alguns posts acima :-)))) - "A maneira mais fácil de determinar qual ordem dos dois a fechar é pelo número mágico. Atribua-lhes números diferentes quando você os configurar. O exemplo que você mostrou acima carece desta verificação. Também escreva OrderTicket() em vez de ticket".
 
tol64:

A maneira mais fácil de determinar qual ordem dos dois a fechar é pelo número mágico. Atribua-lhes números diferentes quando você os configurar. O exemplo que você mostrou acima carece desta verificação. Além disso, escreva OrderTicket() em vez de ticket.

Lembre-se do tempo de definição das ordens, depois compare o tempo no laço e apague o mais antigo.
 
Andreev:


Estou usando o seguinte exemplo para determinar, mas fecha apenas a última ordem pendente em vez da primeira, embora todas as condições sejam cumpridas para a primeira ordem pendente. Ajude-me a encontrar um erro!!!!!!!!!!!!!


Não excluir a variante de transformação da primeira ordem em uma ordem de mercado e, como conseqüência, a impossibilidade de sua remoção por este ciclo em ordens limitadas?
Razão: