Calcul du profit d'un ordre fermé "HELP - page 3 123456789 Nouveau commentaire Renat Akhtyamov 2016.12.11 16:19 #21 Vitaly Muzichenko: Il ne correspond pas, il n'y a aucune information depuis 10 ans.Ce n'est pas la même chose pour vous non plus.La variable t va changer et vous serez aghtung.Il faut le mémoriser avant de commencer à fermer les séries.color ProfitColor;datetime t;// START // //t=TimeCurrent();//разместить в блоке сигнала на закрытие серии ордеров if(LastProfitCL(-1)<0) ProfitColor=Red; if(LastProfitCL(-1)>0) ProfitColor=LimeGreen; if(LastProfitCL(-1)==0)ProfitColor=DarkGray; ObjectCreate("Last Profit", OBJ_LABEL, 0, 0, 0); ObjectSet("Last Profit", OBJPROP_CORNER, 1); ObjectSet("Last Profit", OBJPROP_XDISTANCE, 5); ObjectSet("Last Profit", OBJPROP_YDISTANCE, 15); ObjectSetText("Last Profit",StringConcatenate("Last Profit: ",DoubleToStr(LastProfitCL(-1),2)),10,"Arial",ProfitColor);// END START ////+----------------------------------------------------------------------------+//| Возвращает суммарный профит в валюте депозита серии закрытых ордеров |//+----------------------------------------------------------------------------+double LastProfitCL(int op=-1){ //"op" позиция (-1 любая позиция) double LastProfit=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 (OrderType()!= op || OrderSymbol()!= Symbol() || OrderMagicNumber()!= magic) continue; if (op<0 || OrderType()==op) { if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap(); } } return(LastProfit); } Profit calculation of closed Comment coder ? Toute question des nouveaux Vitaly Muzichenko 2016.12.11 16:24 #22 Renat Akhtyamov: Ce n'est pas la même chose pour vous non plus.La variable t va changer et vous allez être sidéré.Il doit être mémorisé avant la fin de la série.L'avez-vous essayé ? Il est mémorisé avant la fermeture, au moment du signal de fermeture. Alekseu Fedotov 2016.12.11 16:25 #23 Vitaly Muzichenko: Il n'est pas adapté, il n'y a aucune information depuis 10 ans.Bénéfice actuel, , tout l'historique.D'ailleurs, il peut être réglé sur n'importe quelle date et heure. [Supprimé] 2016.12.11 16:26 #24 Vitaly Muzichenko: EssayezComment( 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);}Profit se souvient de chaque nouvelle, mais ensuite quelque chose compte inconnu. Dans l'écran n°3, ce devrait être 4, et non 190. Renat Akhtyamov 2016.12.11 16:28 #25 Vitaly Muzichenko: L'avez-vous essayé ? Il se souvient avant de fermer, au moment où il reçoit le signal de fermeture. Lisez juste le code. [Supprimé] 2016.12.11 16:37 #26 Cela aussi, 190if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap(); Vitaly Muzichenko 2016.12.11 16:39 #27 Natashe4ka: Profit se souvient de chaque nouvelle, mais ensuite quelque chose compte inconnu. Dans l'écran n°3, ce devrait être 4, et non 190.Voici le code, il fonctionne bien pour moi, mais peut-être parce que la série est fermée correctement Dossiers : info.mq4 9 kb Renat Akhtyamov 2016.12.11 16:40 #28 Natashe4ka: Ainsi que 190if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();Où se trouve l'ordre de fermeture des commandes ?Avez-vous écrit la variable t là-dedans ?t=TimeCurrent();//разместить в блоке сигнала на закрытие серии ордеров [Supprimé] 2016.12.11 16:42 #29 Renat Akhtyamov: Où se trouve l'ordre de fermeture des commandes ?Avez-vous écrit la variable t là-dedans ? t=TimeCurrent();//place dans le bloc de signal pour la fermeture d'une série d'ordresTout est là, bien sûr.if(t<=OrderCloseTime()) { t=OrderCloseTime();if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap(); Renat Akhtyamov 2016.12.11 16:48 #30 Natashe4ka: Tout est là, bien sûr.if(t<=OrderCloseTime()) { t=OrderCloseTime();if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();Non, cette ligne est supprimée. Il s'agit déjà d'un calcul de profit, ça ne fonctionnera pas comme ça. Où la commande de fermer dans le code - là, mais pas une telle ligneLire ci-dessus. Toute question de débutant, Erreurs, bugs, questions Toute question des nouveaux 123456789 Nouveau commentaire
Il ne correspond pas, il n'y a aucune information depuis 10 ans.
Ce n'est pas la même chose pour vous non plus.
La variable t va changer et vous serez aghtung.
Il faut le mémoriser avant de commencer à fermer les séries.
color ProfitColor;
datetime t;
// START //
//t=TimeCurrent();//разместить в блоке сигнала на закрытие серии ордеров
if(LastProfitCL(-1)<0) ProfitColor=Red;
if(LastProfitCL(-1)>0) ProfitColor=LimeGreen;
if(LastProfitCL(-1)==0)ProfitColor=DarkGray;
ObjectCreate("Last Profit", OBJ_LABEL, 0, 0, 0);
ObjectSet("Last Profit", OBJPROP_CORNER, 1);
ObjectSet("Last Profit", OBJPROP_XDISTANCE, 5);
ObjectSet("Last Profit", OBJPROP_YDISTANCE, 15);
ObjectSetText("Last Profit",StringConcatenate("Last Profit: ",DoubleToStr(LastProfitCL(-1),2)),10,"Arial",ProfitColor);
// END START //
//+----------------------------------------------------------------------------+
//| Возвращает суммарный профит в валюте депозита серии закрытых ордеров |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1){ //"op" позиция (-1 любая позиция)
double LastProfit=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 (OrderType()!= op || OrderSymbol()!= Symbol() || OrderMagicNumber()!= magic) continue;
if (op<0 || OrderType()==op)
{
if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
return(LastProfit);
}
Ce n'est pas la même chose pour vous non plus.
La variable t va changer et vous allez être sidéré.
Il doit être mémorisé avant la fin de la série.
L'avez-vous essayé ?
Il est mémorisé avant la fermeture, au moment du signal de fermeture.
Il n'est pas adapté, il n'y a aucune information depuis 10 ans.
Bénéfice actuel, , tout l'historique.
D'ailleurs, il peut être réglé sur n'importe quelle date et heure.
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();
}}}}
}
Profit se souvient de chaque nouvelle, mais ensuite quelque chose compte inconnu. Dans l'écran n°3, ce devrait être 4, et non 190.
L'avez-vous essayé ?
Il se souvient avant de fermer, au moment où il reçoit le signal de fermeture.
Cela aussi, 190
Profit se souvient de chaque nouvelle, mais ensuite quelque chose compte inconnu. Dans l'écran n°3, ce devrait être 4, et non 190.
Voici le code, il fonctionne bien pour moi, mais peut-être parce que la série est fermée correctement
Ainsi que 190
Où se trouve l'ordre de fermeture des commandes ?
Avez-vous écrit la variable t là-dedans ?
Où se trouve l'ordre de fermeture des commandes ?
Avez-vous écrit la variable t là-dedans ?
t=TimeCurrent();//place dans le bloc de signal pour la fermeture d'une série d'ordresTout est là, bien sûr.
t=OrderCloseTime();
if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
Tout est là, bien sûr.
t=OrderCloseTime();
if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
Non, cette ligne est supprimée. Il s'agit déjà d'un calcul de profit, ça ne fonctionnera pas comme ça.
Où la commande de fermer dans le code - là, mais pas une telle ligne
Lire ci-dessus.