Gewinnberechnung von abgeschlossenen Aufträgen "HELP" - Seite 3 123456789 Neuer Kommentar Renat Akhtyamov 2016.12.11 16:19 #21 Vitaly Muzichenko: Es passt nicht, es gibt keine Informationen für 10 Jahre.Für Sie ist es auch nicht dasselbe.Die t-Variable wird sich ändern und Sie werden aghtung sein.Sie muss auswendig gelernt werden, bevor Sie mit dem Schließen der Serie beginnen.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 Fragen von Neueinsteigern zu Wie programmiert man? Vitaly Muzichenko 2016.12.11 16:24 #22 Renat Akhtyamov: Für Sie ist es auch nicht dasselbe.Die t-Variable wird sich ändern und Sie werden erschrecken.Sie muss auswendig gelernt werden, bevor die Serie zu Ende ist.Haben Sie es ausprobiert? Es wird vor dem Schließen gespeichert, in dem Moment, in dem das Signal zum Schließen gegeben wird. Alekseu Fedotov 2016.12.11 16:25 #23 Vitaly Muzichenko: Sie ist nicht geeignet, es gibt keine Informationen für 10 Jahre.Aktueller Gewinn, , alle Historien.Sie kann übrigens auf ein beliebiges Datum und eine beliebige Uhrzeit eingestellt werden. [Gelöscht] 2016.12.11 16:26 #24 Vitaly Muzichenko: Versuchen SieComment( 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);}Gewinn merkt sich jeder Neue, aber dann zählt etwas Unbekanntes. In Bildschirmfoto Nr. 3 sollte es 4 sein, nicht 190. Renat Akhtyamov 2016.12.11 16:28 #25 Vitaly Muzichenko: Haben Sie es ausprobiert? Es merkt sich, bevor es schließt, den Moment, in dem das Schließsignal empfangen wird Lesen Sie einfach den Code. [Gelöscht] 2016.12.11 16:37 #26 Auch das, 190if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap(); Vitaly Muzichenko 2016.12.11 16:39 #27 Natashe4ka: Gewinn merkt sich jeder Neue, aber dann zählt etwas Unbekanntes. In Bildschirm Nr. 3 sollte es 4 sein, nicht 190.Hier ist der Code, es funktioniert gut für mich, aber vielleicht, weil die Serie korrekt geschlossen ist Dateien: info.mq4 9 kb Renat Akhtyamov 2016.12.11 16:40 #28 Natashe4ka: Also auch 190if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();Wo befindet sich der Befehl zum Schließen von Aufträgen?Haben Sie die Variable t dort hineingeschrieben?t=TimeCurrent();//разместить в блоке сигнала на закрытие серии ордеров [Gelöscht] 2016.12.11 16:42 #29 Renat Akhtyamov: Wo befindet sich der Befehl zum Schließen von Aufträgen?Haben Sie die Variable t dort hineingeschrieben? t=TimeCurrent();//Platz im Signalblock für den Abschluss einer Reihe von AufträgenEs ist natürlich alles da.if(t<=OrderCloseTime()) { t=OrderCloseTime();if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap(); Renat Akhtyamov 2016.12.11 16:48 #30 Natashe4ka: Es ist natürlich alles da.if(t<=OrderCloseTime()) { t=OrderCloseTime();if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();Nein, diese Zeile wird entfernt. Dies ist bereits eine Gewinnberechnung, die so nicht funktionieren wird. Wo der Befehl in den Code zu schließen - es, aber nicht eine solche ZeileLesen Sie oben. 123456789 Neuer Kommentar
Es passt nicht, es gibt keine Informationen für 10 Jahre.
Für Sie ist es auch nicht dasselbe.
Die t-Variable wird sich ändern und Sie werden aghtung sein.
Sie muss auswendig gelernt werden, bevor Sie mit dem Schließen der Serie beginnen.
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);
}
Für Sie ist es auch nicht dasselbe.
Die t-Variable wird sich ändern und Sie werden erschrecken.
Sie muss auswendig gelernt werden, bevor die Serie zu Ende ist.
Haben Sie es ausprobiert?
Es wird vor dem Schließen gespeichert, in dem Moment, in dem das Signal zum Schließen gegeben wird.
Sie ist nicht geeignet, es gibt keine Informationen für 10 Jahre.
Aktueller Gewinn, , alle Historien.
Sie kann übrigens auf ein beliebiges Datum und eine beliebige Uhrzeit eingestellt werden.
Versuchen Sie
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();
}}}}
}
Gewinn merkt sich jeder Neue, aber dann zählt etwas Unbekanntes. In Bildschirmfoto Nr. 3 sollte es 4 sein, nicht 190.
Haben Sie es ausprobiert?
Es merkt sich, bevor es schließt, den Moment, in dem das Schließsignal empfangen wird
Auch das, 190
Gewinn merkt sich jeder Neue, aber dann zählt etwas Unbekanntes. In Bildschirm Nr. 3 sollte es 4 sein, nicht 190.
Hier ist der Code, es funktioniert gut für mich, aber vielleicht, weil die Serie korrekt geschlossen ist
Also auch 190
Wo befindet sich der Befehl zum Schließen von Aufträgen?
Haben Sie die Variable t dort hineingeschrieben?
Wo befindet sich der Befehl zum Schließen von Aufträgen?
Haben Sie die Variable t dort hineingeschrieben?
t=TimeCurrent();//Platz im Signalblock für den Abschluss einer Reihe von AufträgenEs ist natürlich alles da.
t=OrderCloseTime();
if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
Es ist natürlich alles da.
t=OrderCloseTime();
if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
Nein, diese Zeile wird entfernt. Dies ist bereits eine Gewinnberechnung, die so nicht funktionieren wird.
Wo der Befehl in den Code zu schließen - es, aber nicht eine solche Zeile
Lesen Sie oben.