[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 503

 

a sergeev:

Sim, eu fiquei um pouco confuso lá, obrigado. Mas ainda nenhuma ordem com Take Profit é selecionada.


a Roger, abolk:

Oops, esqueceu-se dos problemas e nem notou. Obrigado!

 
Solree:

Sim, eu fiquei um pouco confuso lá, obrigado. Mas ainda nenhuma ordem com lucro é selecionada.

Onde está o código de laço corrigido?
 

a sergeev:

Pensei que houvesse apenas uma correção, que você não precisa escrever. Mas se for preciso, lá vai você:

for (int a = 0; a < OrdersTotal(); a++)
    if (OrderSelect(a, SELECT_BY_POS, MODE_TRADES))
        if (OrderComment() == "Aelit" && OrderType() == OP_SELL)
            OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), 0);
 
Solree:

Pensei que havia ali apenas uma correção que não precisava ser escrita. Mas se for preciso, lá vai você:

Você ainda não entendeu. Deixe-me explicar a você.

no início do loop você tem a=0 e OrdensTotal()=2

após a primeira eliminação, você tem a=1 e OrderTotal()=1

é isso. não haverá segunda iteração. e só resta uma ordem. você entende?

que conclusões você pode tirar? ou seja, quais são as duas soluções para o problema?
 

Olá! Por favor, me ajude. Eu preciso do indicador para calcular a soma dos volumes. Algo não está funcionando para mim.

#property indicator_separate_window    
#property indicator_buffers 1       
#property indicator_color1 Blue  
 
double Buf_0[];           
//--------------------------------------------------------------------
int init()                        
  {
//--------------------------------------------------------------------
   SetIndexBuffer(0,Buf_0);       
   SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);
//--------------------------------------------------------------------
   return;                     
  }
//--------------------------------------------------------------------
int start()                        
  {
   int i,                         
       n,                         
       Counted_bars;              
       double
       Sum;                      

//--------------------------------------------------------------------
   Counted_bars=IndicatorCounted(); 
   i=Bars-Counted_bars-1;           
   while(i>=0)                     
     {
      Sum=0;                 
      for(n=i;n<=i+1;n++) 
        {
         Sum=Sum + Volume[n];    
        }
      Buf_0[i]=Sum;   
      i--;                         
     }
//--------------------------------------------------------------------
   return;                         
  }
//--------------------------------------------------------------------
 

a sergeev:

Na OrderSelect 0 também é uma posição, ou seja, se houver 2 ordens, suas posições são 0 e 1.

 
Solree:

Na OrderSelect 0 também é uma posição, ou seja, se houver 2 ordens, suas posições são 0 e 1.

Sim. Há duas ordens. E a OrdersTotal retornará 2.

Por favor, leia novamente.

Se você não acredita em mim, então use a impressão na revista

 
prom18:

Olá! Por favor, me ajude. Eu preciso do indicador para calcular a soma dos volumes. Algo não está funcionando para mim.


Sim, parece estar funcionando.

 
prom18:

Olá! Por favor, me ajude. Eu preciso do indicador para calcular a soma dos volumes. Algo não está funcionando para mim.


Sim, parece estar funcionando.

 
Vinin:


Parece estar funcionando.

Eu quis dizer Volume[100]+Volume[99]+...+Volume[1]. O gráfico deve parecer uma curva crescente.
Razão: