Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Non, je ne veux pas dire ce que vous avez déjà écrit.
Dites-moi en quelques mots - le calcul du bénéfice pour les ordres fermés qui vous intéressent.
- quotidien
- déficitaire
- dernière commande
ou autre chose ?
Décrire la série
Une série de derniers ordres fermés "pour l'instant".
Série de dernières commandes fermées "pour l'instant".
En d'autres termes, vous avez besoin d'informations sur la série d'ordres la plus récemment clôturée, si je comprends bien ?
Pour mettre en œuvre cette approche, vous devez d'abord remplir le tableau des tickets de commande à chaque clôture réussie, puis extraire les informations sur les commandes clôturées sous la forme dont vous avez besoin.
Pouvez-vous le faire vous-même ?
Essayez
return(LastProfit);Comment( LastProfitCL(-1, 0) );
//+----------------------------------------------------------------------------+
//| Возвращает суммарный профит в валюте депозита серии закрытых ордеров |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1, datetime t=0){ //"op" позиция (-1 любая позиция)
double LastProfit=0;
for(int i=OrdersHistoryTotal()-1;i>=0;i--) {
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) {
if((op<0||OrderType()==op) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic){
if(t<=OrderCloseTime()) {
t=OrderCloseTime();
LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
}}}}
}
Essayez
Comment( LastProfitCL(-1, 0) );
//+----------------------------------------------------------------------------+
//| Возвращает суммарный профит в валюте депозита серии закрытых ордеров |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1, datetime t=0){ //"op" позиция (-1 любая позиция)
double LastProfit=0;
for(int i=OrdersHistoryTotal()-1;i>=0;i--) {
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) {
if((op<0||OrderType()==op) && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){
if(t<=OrderCloseTime()) {
t=OrderCloseTime();
LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
}
}
return(LastProfit);
}
Et si ça ne se ferme pas en même temps ?
Ce n'est pas tout à fait ça.
Et si vous vous en souvenez au moment de soumettre l'ordre de fermeture, alors tout ira bien.
mais cette ligne...
n'est pas nécessaire.
Le total de toute la série sera affiché
Mais madame veut des informations plus détaillées, comme je l'ai compris dans le premier message.
Et si ça ne se ferme pas en même temps ?
Vous avez donc besoin d'informations sur la dernière série d'ordres clôturés, si je comprends bien ?
Pour mettre en œuvre cette approche, vous devez d'abord créer un tableau de tickets de commande à la clôture réussie, puis extraire des informations sur les commandes clôturées.
Pouvez-vous le faire vous-même ?
Veuillez nous conseiller d'utiliser un exemple.
I.e.
Et ensuite comparer ?
Vous feriez mieux de me donner un exemple.
I.e.
Et ensuite comparer ?
Pas de problème.
Maintenant, il ne reste plus qu'à clarifier comment les informations sur les ordres fermés de la série devraient se présenter ?
S'agit-il d'un transfert ou le montant doit-il être divisé par + et - ?
Il existe un indicateur pour
i-Profit
Produit lesbénéfices actuels pour aujourd'hui, la semaine, le mois, l'année.
Un meilleur exemple serait
Voici un exemple :
GlobalVariableSet(GetGlobalVariableName("LastProfit"), TimeCurrent()); // запомним время закрытия
// здесь код закрытия всех и сразу, нужен цикл, чтоб не выходил с функции до полного закрытия всех
}
La suite de l'histoire
//| Возвращает суммарный профит в валюте депозита серии закрытых позиций |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1, datetime t=0){ //"op" позиция (-1 любая позиция)
double LastProfit=0;
for(int i=OrdersHistoryTotal()-1;i>=0;i--) {
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) {
if((op<0||OrderType()==op) && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){
if(t<=OrderCloseTime()) {
t=OrderCloseTime();
LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
}}}}
return(LastProfit);
}
//===============================================================================================
//----------------------- Создает и возвращает имя глобальной переменной -----------------------+
//===============================================================================================
string GetGlobalVariableName(string name="", string symb="0") {
if(symb=="0") { symb=Symbol();}
if(!MQLInfoInteger(MQL_TESTER)) {
return(prefix+symb+"_"+(string)AccountInfoInteger(ACCOUNT_LOGIN)+"_"+MQLInfoString(MQL_PROGRAM_NAME)+"_"+name);
} else {
return(prefix+symb+"_"+(string)AccountInfoInteger(ACCOUNT_LOGIN)+"_"+MQLInfoString(MQL_PROGRAM_NAME)+"_tester"+"_"+name);
}}
Nous l'obtenons même si nous redémarrons le terminal
{
Comment( LastProfitCL(-1, (datetime)GlobalVariableGet(GetGlobalVariableName("LastProfit"))) );
}
Il existe un indicateur pour
i-Profit
Produit lesbénéfices actuels pour aujourd'hui, la semaine, le mois, l'année.