Gewinnberechnung von abgeschlossenen Aufträgen "HELP" - Seite 9

 
Natashe4ka:

Ich dachte auch, dass es richtig gezählt wurde.
Ich hätte diese Information nicht in den Code aufnehmen sollen, dann wäre mein Leben einfacher gewesen).

Und jetzt frage ich mich, wie die Funktion die ganze Zeit nicht richtig funktionieren konnte!!!

Verstehe, ich muss das Häkchen bei Gewinn = positiv entfernen, deshalb stoppt das Konto später, ich musste nur meinen vorherigen Verlust mit einbeziehen.

double lastloss()
{
double lastlos=0.0,lastlot=0.0,op=0.0;
int cnt=0;
datetime time=0;
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
{
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic && OrderType()<2)
         {
            if(cnt==0 && OrderCloseTime()!=0) time=OrderCloseTime();
            if(OrderCloseTime()+PeriodSeconds()<time/* && op>0.0*/) break;
            op=OrderProfit()+OrderSwap()+OrderCommission();
            lastlos+=op;
            cnt++;
         }
      }
}
return(lastlos);
}
 
Natashe4ka:

Ich hatte auch den Eindruck, dass alles so zählt, wie es sollte.
Ich hätte diese Information nicht in den Code einfügen sollen, dann wäre das Leben einfacher gewesen).

Und jetzt ist es rätselhaft, wie die Funktion die ganze Zeit über nicht richtig funktionieren konnte!!!

Sie verwenden die Funktion aus den ersten Seiten Ihres Anfängerbuchs zum Schließen. Im Test schließt er fast normal, aber im realen Handel schließt der Bot oft im roten Bereich, besonders wenn er einen kleinen Gewinn macht.

Haben Sie schon einmal versucht, auf dem realen Markt zu handeln oder nur in der Testversion?

Haben Sie jemals eine solche Situation erlebt, in der eine Reihe von Positionen geschlossen wird? Beachten Sie die Differenz in Pips zwischen dem Signal zum Schließen und zum Schließen der letzten Position

Um nicht zu spammen, werde ich nur 3 Screenshots anhängen, obwohl es in Wirklichkeit mehr als hundert davon gibt:


Alle Funktionen funktionieren bei allen korrekt, nur bei Ihnen funktioniert es nicht. Haben Sie sich jemals gefragt, warum?

Und schließlich die Frage, die Sie sich stellen müssen und auf die wir keine Antwort brauchen: Werden Sie das Terminal jederzeit neu starten oder über das Wochenende schließen, ...? Wenn ja, wie werden Sie den Gewinn beim nächsten Start des Terminals erhalten, um die Arbeit des Expert Advisors fortzusetzen, die beim letzten Schließen der Serie gemacht wurde, wenn Sie ihn nirgendwo speichern wollen?

 

Es gibt noch mehr:

Warum habe ich gefragt, was das Entfernen eines Auftrags zwischen geschlossenen Positionen bewirkt?


Jetzt haben wir eine Situation: Ein EA beginnt, Positionen zu schließen, wenn er einen Gewinn erreicht hat, und dann bekommt er einen Auftrag, der überhaupt keinen Nutzen hat, d.h. er macht weder Gewinn noch Verlust, aber ein Auftrag zur Entfernung dieses Auftrags wird gesendet, und während er entfernt wird, verlässt der Preis den Kurs und der EA schließt weiter. Das Ergebnis ist wie folgt: Wir haben begonnen, den Gewinn zu schließen, aber da wir alles falsch geschlossen haben, haben wir die Serie mit einem Verlust abgeschlossen. Ist das normal? Schreiben Sie keine Codes nur für den Tester, schreiben Sie zumindest einen Code für die Arbeit auf einem Demokonto.

 
Vitalie Postolache:

Ich habe es verstanden, ich muss das Häkchen für Gewinn = positiv entfernen, es macht das Konto später zu stoppen, ich musste nur meinen vorherigen Verlust als auch zu berücksichtigen.

double lastloss()
{
double lastlos=0.0,lastlot=0.0,op=0.0;
int cnt=0;
datetime time=0;
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
{
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic && OrderType()<2)
         {
            if(cnt==0 && OrderCloseTime()!=0) time=OrderCloseTime();
            if(OrderCloseTime()+PeriodSeconds()<time/* && op>0.0*/) break;
            op=OrderProfit()+OrderSwap()+OrderCommission();
            lastlos+=op;
            cnt++;
         }
      }
}
return(lastlos);
}

Es funktioniert, zählt wie es soll, genial, super!!!
Vielen Dank - vielen Dank - vielen Dank !!!!!!!!!!!!)))))))))))))

Das haben Sie gut gemacht))

 
Vitaly Muzichenko:

Es gibt noch mehr:

Warum habe ich gefragt, was das Entfernen eines Auftrags zwischen geschlossenen Positionen bewirkt?


Jetzt haben wir eine Situation: Ein EA beginnt, Positionen zu schließen, wenn er einen Gewinn erreicht hat, und dann erhält er einen Auftrag, der überhaupt keinen Nutzen hat, d.h. er macht weder Gewinn noch Verlust, aber ein Auftrag zur Entfernung dieses Auftrags wird gesendet, und während er entfernt wird, verlässt der Preis den Kurs und der EA fährt fort, weiter zu schließen. Das Ergebnis ist wie folgt: Wir haben begonnen, den Gewinn zu schließen, aber da wir alles falsch geschlossen haben, haben wir die Serie mit einem Verlust abgeschlossen. Ist das normal? Schreiben Sie keine Codes nur für den Tester, schreiben Sie zumindest einen Code für die Arbeit auf einem Demokonto.

Ja, sie werden dort nicht der Reihe nach geschlossen, sondern erst, wenn der Schließzyklus bei Null beginnt.
 
Vitalie Postolache:
Sie werden nicht in beliebiger Reihenfolge geschlossen, sondern nur, wenn der Schließzyklus bei Null beginnt.

Von welchem Nullpunkt aus?

Warum also Zeit mit der Löschung von Aufträgen zum Zeitpunkt der Netzschließung verschwenden? Sie wissen selbst, dass die Löschung eines Auftrags Zeit kostet, warum also Zeit verschwenden, und wenn Ihr Maklerunternehmen nicht schnell ist, sind wir aufgeschmissen. Ich habe einen Screenshot mit 15 Positionen gezeigt, die in 1 Minute und 34 Sekunden geschlossen wurden, und wir müssen uns darüber im Klaren sein, dass der Preis in dieser Zeit um mehr als ein Dutzend Punkte steigen kann, und wir werden Glück haben, wenn er in unsere Richtung und nicht gegen uns geht.

 
Vitaly Muzichenko:

Von welchem Nullpunkt aus?

Warum also Zeit mit der Löschung von Aufträgen zum Zeitpunkt der Netzschließung verschwenden? Sie wissen selbst, dass die Löschung eines Auftrags Zeit kostet, warum also Zeit verschwenden? Und wenn Ihr Maklerunternehmen nicht schnell ist, sind wir am Ende. Ich habe einmal einen Screenshot gepostet, wo 15 Positionen in 1min.34s geschlossen wurden, und wir müssen verstehen, dass der Preis durch mehr als ein Dutzend Punkte während dieser Zeit gehen kann und wir werden Glück haben, wenn es in unsere Richtung geht und nicht gegen uns.

Ab diesem Nullpunkt for(int i=0;i<OrdersHistoryTotal();i++) - Auf diese Weise werden die Aufträge im günstigsten Fall nacheinander abgeschlossen, wenn sie nach Ordnungsnummer ausgewählt werden.

Ja, ich weiß, ein schwebender Auftrag darf nicht mitten im Prozess des Abschlusses einer Serie gelöscht werden, und es wäre besser, sie in der Reihenfolge zu schließen, aber das kommt mit der Erfahrung.