Erros, bugs, perguntas - página 1914

 
nys2000:

Poderia ser mais específico?


começar do zero

 
nys2000:

Poderia ser mais específico?

for(i=1; i <=OrdensTotal(); i+++) As encomendas desta lista são numeradas de zero a OrdensTotal()-1 inclusive (deixem Artem Trishkin desculpar-me, apenas encurtou a espera para nys2000).
 
Aleksei Beliakov:

começar do zero


Estas são duas opções equivalentes. Se para (i=1...) então OrderSelect(i-1,...), se para (i=0,...) - OrderSelect(i,...)

 
Vladimir:
for(i=1; i <=OrdensTotal(); i+++) As encomendas desta lista são numeradas de zero a OrdensTotal()-1 inclusive (deixem Artem Trishkin desculpar-me, apenas encurtou a espera para nys2000).

Obrigado, mas a numeração das encomendas de 0 a OrderTotal()-1 é tida em conta em OrderSelect(i-1,...)

 
int OrdersTotalT(int _type)
  {
   int _total=0;
   for(int cnt=OrdersTotal()-1;cnt>=0;cnt--)
     {

      bool select=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
      if(OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol() && OrderType()==_type)
        {
           _total++;
        }
     }
   return(_total);
  }
 
nys2000:

Obrigado, mas a numeração das encomendas de 0 a OrderTotal()-1 é contabilizada em OrderSelect(i-1,...)


Faça a ordem inversa da pesquisa ...

 
nys2000:

Este é um código simples como este:

No momento em que a função é iniciada, duas posições de compra estão abertas. A função imprime duas vezes a presença de duas ordens: Passagem 1, Passagem 2.

Retiramos os comentários e voltamos a executar a função. Retira vigorosamente uma ordem de compra, declara "Passage #1" e deixa o laço. A mensagem "Passage #2" não aparece.

O que é a magia?


1. i=1, calculámos as encomendas ... condição verificada 1<= 2 ? sim. Seleccionou e fechou a encomenda.

2. i++ (i=2)

3. OrderTotal()=1 <---------- fechando a ordem dentro do laço mudou realmente a condição para sair do laço

4. 2<=1 ? não <----------- aqui a sua "magia" e consequentemente sair do laço

void CloseAllOrders()
{
bool Ans;
int total=OrdersTotal();
   for(int i=1; i <=total; i++)     
      {      
      Print("Проход № ", i);      
      if (OrderSelect(i-1,SELECT_BY_POS)==true) 
         {  
         if (OrderSymbol() != Symbol())
            continue;
         if (OrderType()==0)
             {
//            Ans=OrderClose(OrderTicket(),OrderLots(), NormalizeDouble(Bid,Digits),25);
             }           
         if (OrderType()==1)
             {
//            Ans=OrderClose(OrderTicket(),OrderLots(), NormalizeDouble(Ask,Digits),25);
             } 
         }
      }      
         
return;
   
}
 

porque é que existe um gráfico adicionalCHART_WINDOW_HANDLE ID, para que serve?

 
Konstantin:

porque é que existe um gráfico adicionalCHART_WINDOW_HANDLE ID, para que serve?

Vou assumir que o ID da carta é para mql ambiente e HWND é para winapi.
 

Erro durante a execução

int f( int t )
{
union U {
        U( int t ) : t1( t ) {}
        int t2;
        int t1;
};
	U u( t );
        return u.t2;
}
void OnStart()
{
        Print( f( 3 ));
}

Resultado: número aleatório (certamente não 3)