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
Die Aufträge werden nacheinander geschlossen, aber wenn es keine Abschlussbedingungen gibt, werden die Aufträge ein oder zwei Tage lang gesammelt usw.
Wenn die Serie praktisch während eines Zyklus geschlossen wird, z. B. während der Lebensdauer eines Balkens, dann können wir das Kriterium der Serie um den Zeitpunkt des Schließens plus einen Balken nehmen. Das heißt, dass alle Aufträge, deren Abschlusszeitpunkt unter diesem Wert liegt, verworfen werden sollten.
Es besteht jedoch die Sorge, dass dies nur im Testprogramm funktioniert; jeder manuelle Eingriff führt zu einer falschen Gewinnberechnung (nur der Gewinn des EA wird berücksichtigt, der manuelle Handel jedoch nicht).
Wenn die Serie praktisch während eines Zyklus geschlossen wird, z. B. während der Lebensdauer eines Balkens, dann können wir das Serienkriterium durch den Zeitpunkt des Schließens plus einen Balken nehmen. Das heißt, dass alle Aufträge, deren Abschlusszeitpunkt unter diesem Wert liegt, verworfen werden sollten.
D.h.
(t==OrderCloseTime()||t==OrderCloseTime()+60)?
D.h.
+60 ?
PeriodSeconds() wäre korrekter. Oder werden Sie nur auf der M1 arbeiten?
Etwa so:
{
double lastlos=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) time=OrderCloseTime();
op=OrderProfit()+OrderSwap()+OrderCommission();
if(OrderCloseTime()+PeriodSeconds()<time && op>0.0) break;
lastlos+=op;
if(cnt!=0) cnt++;
}
}
}
return(lastlos);
}
Etwa so:
Und Sie können die Aufträge im Kommentar auch nummerieren, für diejenigen DCs, die den Kommentar nicht überschreiben. Und wenn man die Nummer aus dem Kommentar ausprobiert, ist die Serie zu Ende, sobald die Nummer nicht mehr in Ordnung ist.
Beispiel: Auftragsseriennummer 1,2,3,4,5. Geschlossen in der Reihenfolge 5,4,3,2,1 - die Schleife sieht 1 und unterbricht. Schließen in der Reihenfolge 1,2,3,4,5 und 1 (die Ordnungsnummer der vorherigen Reihe) - die Schleife sieht die Differenz 5-1>1 und bricht ab. Ich muss mir überlegen, wie ich das in Code übersetzen kann ))))
Es wird also ein neuer Wert zum vorherigen Wert hinzugefügt. Und jeder neue Abschluss bedeutet einen neuen Wert für den Gewinn.
Ich weiß nicht, das ergibt für mich keinen Sinn.
Legen Sie die Informationen an und Sie werden sehen, dass es sich summiert.
if(lastloss()<0) ProfitColor=Red;
if(lastloss()>0) ProfitColor=LimeGreen;
if(lastloss()==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(lastloss(),2)),10,"Arial",ProfitColor);
Geben Sie die Daten ein, und Sie werden sofort sehen, was sich summiert.
Hmm, ja, in der Tat... Denken wir weiter: ))))
Ich war auch der Meinung, dass es so gezählt wurde, wie es sollte.
Ich hätte diese Information nicht in den Code aufnehmen 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!!!