[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 429

 
Dimka-novitsek:

Bom dia!!! Devo ter entendido mal algo sobre arrays ou algo assim. A função não coloca um lucro na matriz!!! É zero em todas as circunstâncias. Zero e ponto final!

int Orderasthitaem[6][3];
void Orderasthitaem()
{
 int BUY = 0, SELL = 0, BUYLIMIT = 0, BUYSTOP = 0, SELLLIMIT = 0, SELLSTOP = 0;
 double BUY_Profit = 0, SELL_Profit = 0;
 for (int i = 0; i < OrdersTotal(); i++)
  {
   OrderSelect(i, SELECT_BY_POS);  
   if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magicnumber)
    {            
     int type = OrderType();
     if (type == 0) {BUY++; BUY_Profit = BUY_Profit + OrderProfit();}
     if (type == 1) {SELL ++; SELL_Profit = SELL_Profit + OrderProfit();}
     if (type == 2) {BUYLIMIT++;}
     if (type == 3) {SELLLIMIT++;}
     if (type == 4) {BUYSTOP++;}
     if (type == 5) {SELLSTOP++;}}}
       
     Orderasthitaem[0][1] = BUY;
     Orderasthitaem[0][2] = BUY_Profit;
     Orderasthitaem[1][1] = SELL;
     Orderasthitaem[1][2] = SELL_Profit;
     Orderasthitaem[2][1] = BUYLIMIT;
     Orderasthitaem[3][1] = SELLLIMIT;
     Orderasthitaem[4][1] = BUYSTOP;
     Orderasthitaem[5][1] = SELLSTOP;        
    }
  }
}
Função.

O obiagrama está fora de todas as funções.

 
Obrigado!!!
 

Por que uma série como a int? E se os lucros forem fracionários, mas não acho que isso seja significativo... Sim, aparentemente não há necessidade de um dowble!

Vou redefini-lo agora e experimentá-lo. Mas será que isso fará diferença? Por que não funcionou? Vou tentar...

 
ruslanchik:
Se o bilhete do pedido estiver armazenado no servidor do corretor, onde estão armazenadas as ordens majik e de comentário?

No servidor do corretor.
 
Ah, eu vejo o que você está atribuindo aos elementos da matriz. Sim, obrigado!!!!!!!!
 
Olá, estou estudando o tutorial MQL4 de Sergey Kovalev e ainda não descobri como acessar as séries temporais de outros pares de moedas. Ou seja, preciso carregar conjuntos de séries temporais de vários pares de moedas em um único EA. Sei que alguns dados podem ser acessados usando a função MarketInfo(), mas o problema é que os IDs de solicitação não contêm dados próximos ou outros parâmetros para séries de preços. Por favor, informe onde posso ler como organizar o trabalho (se houver) com arrays-timeseries e vários instrumentos, ou talvez como contornar esta limitação.
 
Eu ainda não compilei ou tentei nada, só de olhar para ele. Tuck, a questão é que ao sair dos loops os valores BUY_Profit e os valores das variáveis não são salvos, certo? O programa é executado sequencialmente, ou não é salvo?
 
Dimka-novitsek:
Eu ainda não compilei ou tentei nada, só de olhar para ele. Tuck, a questão é que na saída dos loops, BUY_Profit e BUT valores não são salvos, certo? O programa é executado sequencialmente, ou não é salvo?
Dimka-novitsek:
Ah, eu vejo o que você está atribuindo aos elementos da matriz. Sim, obrigado!!!!!!!!

Qualquer tipo é possível. Só não percebi que uma das variáveis é o dobro. Se você precisar do dobro, coloque o dobro.

Será que funciona?

 

Estou apenas olhando. И... OOOOOOOOO!!!!!! Fi-lo assim no meu, assim o declarei Orderasthitaem[6][2]; no elemento duas matrizes, isto é, você entendeu, e já abordou o terceiro Orderasthitaem[0,2] !!!!!!!

Com certeza, aqui está o cão no buraco!!!!!!!!!!! OOO!!!

 
Dimka-novitsek:
Eu ainda não compilei ou tentei nada, só de olhar para ele. Takm, a questão é que na saída dos loops, BUY_Profit e prue valores de variáveis não são salvos, certo? O programa é executado sequencialmente, ou não é salvo?

...você também poderia fazer isso:

double Orderasthitaem[6][2];
void Orderasthitaem()
{
    double ld_Profit = 0.;
    int li_Total = OrdersTotal();
    ArrayInitialize (Orderasthitaem, 0.);
    if (li_Total == 0) return;
    for (int i = 0; i < OrdersTotal(); i++)
    {
        OrderSelect (i, SELECT_BY_POS);  
        if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magicnumber)
        {            
            int type = OrderType();
            ld_Profit = OrderProfit();
            Orderasthitaem[type][0]++;
            if (type > 1) continue;
            Orderasthitaem[type][1] += ld_Profit;
        }
    }
}
- Depende de quem você gosta.
Razão: