Cálculo do lucro de pedidos fechados "HELP - página 6

 
Aleksey Semenov:
Se você tiver um terminal cheio de centenas de variáveis globais não utilizadas, por exemplo, então sim - o anteparo terminará tristemente, se não, funcionará muito rapidamente, se escrito corretamente
você pode construir seu próprio tronco
 
Aleksey Semenov:
Se, por exemplo, seu terminal estiver cheio de centenas de variáveis globais não utilizadas, então sim - a granel terminará tristemente, se não, funcionará muito rapidamente, se escrito corretamente
Eu não me importo, mas é melhor encontrar maneiras mais fáceis se possível. Ou não estamos procurando por caminhos fáceis) ?
 
Vitaly Muzichenko:
Eu não me importo, mas é melhor encontrar maneiras mais fáceis se possível. Ou não estamos procurando maneiras fáceis?
o principal é começar a escrever você mesmo
 
Vitaly Muzichenko:
Eu não me importo, mas é melhor encontrar maneiras mais fáceis se possível. Ou não estamos procurando uma maneira fácil?
Portanto, onde está o caminho mais fácil, a questão ainda não está resolvida.
 

Ainda não resolvemos o problema, embora esta seja uma função necessária e muitos comerciantes a utilizam sem saber que ela não calcula corretamente o lucro das ordens fechadas.
É por isso que uma solução simples: LastProfit+=OrderProfit()+OrderComission()+OrderSwap(); não funcionará e todos continuam a parafusar com os pedidos do histórico em seus códigos.

Não existe uma solução competente mesmo em toda a rede - diz "google". Então, acontece que todos usam a solução padrão incorreta, ou a correta, mas somente a última encomenda?

 
Natashe4ka:

Ainda não resolvemos o problema, embora esta seja uma função necessária e muitas pessoas a utilizam e não sabem que o lucro de pedidos fechados não é considerado correto.
É por isso que uma solução simples: LastProfit+=OrderProfit()+OrderComission()+OrderSwap(); não funcionará e todos continuam a parafusar com os pedidos do histórico em seus códigos.

Não existe uma solução competente mesmo em toda a rede - diz "google". Então, acontece que todos usam a solução padrão incorreta, ou a correta, mas somente a última encomenda?

Aconselhamos, você não entendeu....
 
Renat Akhtyamov:
Aconselhamos, você não entendeu....

OK, então vamos quebrar: há um horário de fechamento de pedidos, há um bilhete ou número de pedidos que coincide com o horário de fechamento. Como combinar e calcular o lucro desses pedidos?
Parece ser simples, mas ainda não entendemos.

 

Conta corretamente, mas somente se 1-3 ordens forem fechadas, se mais de 3, então o lucro com um valor pouco claro é obtido.
O que mais podemos acrescentar aqui?

//+----------------------------------------------------------------------------+
//     Возвращает суммарный профит в валюте депозита серии закрытых ордеров    |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1){ //"op" позиция (-1 любая позиция)
  double LastProfit=0;
  datetime t=0;
   for(i=OrdersHistoryTotal()-1;i>=0;i--)
     if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && (OrderType()==OP_BUY || OrderType()==OP_SELL) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) {
       if (OrderSymbol()!=Symbol()||OrderMagicNumber()!=magic) continue;
       if (t<OrderCloseTime()) {t=OrderCloseTime();}
       if ((op<0||OrderType()==op) && t==OrderCloseTime()) {LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();}
       }
  return(LastProfit);
   }
 
Natashe4ka:

Conta corretamente, mas somente se 1-3 ordens forem fechadas, se mais de 3, então o lucro está com um valor pouco claro.
O que mais podemos acrescentar aqui?

//+----------------------------------------------------------------------------+
//     Возвращает суммарный профит в валюте депозита серии закрытых ордеров    |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1){ //"op" позиция (-1 любая позиция)
  double LastProfit=0;
  datetime t=0;
   for(i=OrdersHistoryTotal()-1;i>=0;i--)
     if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && (OrderType()==OP_BUY || OrderType()==OP_SELL) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) {
       if (OrderSymbol()!=Symbol()||OrderMagicNumber()!=magic) continue;
       if (t<OrderCloseTime()) {t=OrderCloseTime();}
       if ((op<0||OrderType()==op) && t==OrderCloseTime()) {LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();}
       }
  return(LastProfit);
   }

Você já tentou se perguntar "Por que e o que está escrito no meu código?

Já lhes disse três vezes acima o que fazer e como fazê-lo.

Você não será capaz de sair do ponto morto, caso contrário não poderá fazê-lo.

 
Natashe4ka:

OK, então vamos quebrar: há um horário de fechamento de pedidos, há um bilhete ou número de pedidos que coincide com o horário de fechamento. Como combinar e calcular o lucro desses pedidos?
Parece ser fácil, mas ainda não o entendo.

Você guarda tudo isso em algum lugar em uma variável ou em uma matriz? Mostre-nos onde você o guarda primeiro, depois veremos o que fazer a seguir.