Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Nein, ich meine nicht das, was Sie bereits geschrieben haben.
Nennen Sie mir in Worten die Gewinnberechnung für die abgeschlossenen Aufträge, an denen Sie interessiert sind
- täglich
- verlustreich
- letzte Bestellung
oder etwas anderes?
Beschreiben Sie die Serie
Eine Reihe letzter abgeschlossener Aufträge "vorläufig"
Reihe der letzten abgeschlossenen Aufträge "vorläufig"
Das heißt, Sie benötigen Informationen über die zuletzt abgeschlossene Reihe von Aufträgen, wenn ich das richtig verstehe?
Um diesen Ansatz zu implementieren, sollten Sie zunächst das Array der Auftragstickets bei jedem erfolgreichen Abschluss füllen und dann die Informationen zu den abgeschlossenen Aufträgen in der benötigten Form herausziehen
Können Sie es selbst tun?
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();
}}}}
}
Versuchen Sie
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);
}
Was ist, wenn sie nicht zur gleichen Zeit geschlossen wird?
Nicht ganz richtig.
Und wenn Sie sich bei der Übermittlung des Abschlussauftrags daran erinnern, dann ist alles in Ordnung.
aber diese Zeile...
ist nicht erforderlich.
Es wird die Gesamtzahl für die gesamte Serie ermittelt
Aber Madam möchte genauere Informationen, wie ich dem ersten Beitrag entnommen habe
Was ist, wenn sie nicht zur gleichen Zeit geschlossen wird?
Sie benötigen also Informationen über die letzte abgeschlossene Reihe von Aufträgen, wenn ich das richtig verstehe?
Um diesen Ansatz zu implementieren, sollten Sie zunächst ein Array von Auftragstickets bei erfolgreichem Abschluss erstellen und dann Informationen über abgeschlossene Aufträge abrufen
Können Sie es selbst tun?
Bitte geben Sie uns ein Beispiel.
D.h.
Und dann vergleichen?
Nennen Sie mir lieber ein Beispiel.
D.h.
Und dann vergleichen?
Kein Problem.
Jetzt bleibt nur noch zu klären, wie die Informationen über die abgeschlossenen Aufträge der Serie aussehen sollen ?
Handelt es sich um eine Überweisung oder muss der Betrag durch + und - geteilt werden?
Es gibt einen Indikator für
i-Profit
Gibt dieaktuellen Gewinne für heute, Woche, Monat und Jahr aus.
Ein besseres Beispiel wäre
Hier ist ein Beispiel:
GlobalVariableSet(GetGlobalVariableName("LastProfit"), TimeCurrent()); // запомним время закрытия
// здесь код закрытия всех и сразу, нужен цикл, чтоб не выходил с функции до полного закрытия всех
}
Der Rest der Geschichte
//| Возвращает суммарный профит в валюте депозита серии закрытых позиций |
//+----------------------------------------------------------------------------+
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);
}}
Diese Meldung erscheint auch, wenn wir das Terminal neu starten
{
Comment( LastProfitCL(-1, (datetime)GlobalVariableGet(GetGlobalVariableName("LastProfit"))) );
}
Es gibt einen Indikator für
i-Profit
Gibt dieaktuellen Gewinne für heute, Woche, Monat und Jahr aus.