Calcul du profit d'un ordre fermé "HELP - page 6

 
Aleksey Semenov:
Si vous avez un terminal rempli de centaines de variables glob inutilisées, par exemple, alors oui - la cloison se terminera tristement, sinon, elle fonctionne assez rapidement, si elle est écrite correctement
vous pouvez construire votre propre journal
 
Aleksey Semenov:
Si, par exemple, votre terminal est rempli de centaines de variables glob inutilisées, alors oui - la surenchère sera triste, sinon, cela fonctionne assez rapidement si vous l'écrivez correctement
Cela ne me dérange pas, mais il est préférable de trouver des moyens plus faciles si possible. Ou bien nous ne cherchons pas de solutions faciles) ?
 
Vitaly Muzichenko:
Cela ne me dérange pas, mais il est préférable de trouver des moyens plus faciles si possible. Ou bien ne cherchons-nous pas des moyens faciles ?
l'essentiel est de commencer à écrire soi-même
 
Vitaly Muzichenko:
Cela ne me dérange pas, mais il est préférable de trouver des moyens plus faciles si possible. Ou bien ne cherchons-nous pas un moyen facile ?
Où se trouve donc le chemin le plus facile, la question reste sans réponse.
 

Nous n'avons pas encore résolu le problème, alors qu'il s'agit d'une fonction nécessaire et que de nombreuses personnes l'utilisent et ne savent pas que le bénéfice des ordres fermés n'est pas pris en compte correctement.
C'est pourquoi une solution simple : LastProfit+=OrderProfit()+OrderCommission()+OrderSwap() ; ne fonctionnera pas et tout le monde continue à se foutre de l'historique des ordres dans ses codes.

Il n'y a pas de solution compétente même sur le réseau entier - "google" dit. Ainsi, il s'avère que tout le monde utilise la solution standard incorrecte, ou la solution correcte mais uniquement le dernier ordre ?

 
Natashe4ka:

Nous n'avons toujours pas résolu le problème, alors que cette fonction est nécessaire et que de nombreux traders l'utilisent sans savoir qu'elle ne calcule pas correctement le profit des ordres fermés.
C'est pourquoi une solution simple : LastProfit+=OrderProfit()+OrderCommission()+OrderSwap() ; ne fonctionnera pas et tout le monde continue à se foutre de l'historique des ordres dans ses codes.

Il n'y a pas de solution compétente même sur le réseau entier - "google" dit. Ainsi, il s'avère que tout le monde utilise la solution standard incorrecte, ou la solution correcte mais uniquement le dernier ordre ?

Nous avons conseillé, vous ne l'avez pas eu....
 
Renat Akhtyamov:
Nous vous avons conseillé, vous n'avez pas compris. ....

OK, alors décomposons : il y a une heure de clôture des ordres, il y a un ticket ou un nombre d'ordres qui coïncident avec l'heure de clôture. Comment combiner et calculer le bénéfice de ces commandes ?
Cela semble simple, mais nous ne comprenons toujours pas.

 

Il compte correctement, mais seulement si 1-3 ordres sont fermés, si plus de 3, alors le profit avec une valeur peu claire est obtenu.
Que pouvons-nous ajouter ici ?

//+----------------------------------------------------------------------------+
//     Возвращает суммарный профит в валюте депозита серии закрытых ордеров    |
//+----------------------------------------------------------------------------+
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:

Il compte correctement, mais seulement si 1-3 ordres sont fermés, si plus de 3, alors le profit avec une valeur peu claire est obtenu.
Que pouvons-nous ajouter ici ?

//+----------------------------------------------------------------------------+
//     Возвращает суммарный профит в валюте депозита серии закрытых ордеров    |
//+----------------------------------------------------------------------------+
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);
   }

Avez-vous déjà essayé de vous demander "Pourquoi et qu'est-ce qui est écrit dans mon code ?

Je vous ai déjà dit trois fois ci-dessus ce qu'il faut faire et comment le faire.

Vous ne pourrez pas bouger du point mort, sinon vous ne pourrez pas le faire.

 
Natashe4ka:

OK, alors décomposons : il y a une heure de clôture des ordres, il y a un ticket ou un nombre d'ordres qui coïncident avec l'heure de clôture. Comment combiner et calculer le bénéfice de ces commandes ?
Cela semble facile, mais je ne le comprends toujours pas.

Vous enregistrez tout cela dans une variable ou dans un tableau ? Montrez-nous d'abord où vous le stockez, puis nous verrons ce qu'il faut faire ensuite.