![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Markt geschlossen!
#1 - Ich rufe das Button Object nie mit OnTick(), Start() auf, ist das normal?
#2- Kann ich auf das Button-Objekt 'ANCHOR_RIGHT_UPPER' anwenden?
#3 - Also, ich brauche immer noch Hilfe für mein Anliegen #145, bitte.
Danke!
#1 - I never call Button Object by OnTick(), Start(), so is it normal?
Ja
#2- Kann ich auf das Button-Objekt 'ANCHOR_RIGHT_UPPER' anwenden?
Nein, der Ankerpunkt ist auf ANCHOR_LEFT_UPPER festgelegt
#3 - Also, ich brauche immer noch Hilfe für mein Anliegen #145, bitte.
Ja, Sie haben Recht - EventSetMillisecondTimer(250)
Ja
Nein, der Ankerpunkt ist auf ANCHOR_LEFT_UPPER festgelegt
Ja, Sie haben recht - EventSetMillisecondTimer(250)
#Profit Orders Counting - Open
Ich versuche gerade, alle profitablen Positionen für die Berechnung in einem Wert zu bekommen.
Es gibt mir separate Werte.
Ich habe wirklich meinen Verstand verloren. Ich habe versucht, einige Möglichkeiten, und die Forschung eine Menge über sie, aber keine guten Ergebnisse.
Bitte, helfen Sie mir, wenn es möglich ist, erklären ein bisschen mehr über die Gewinnberechnung, sehr zu schätzen.
Ich hoffe, ich bekomme bald eine gute Antwort.
{
double trueprofit = 0;
for ( int i = OrdersTotal() - 1; i >= 0; i-- )
{
if ( ! OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) ) continue;
if ( closeothers == false && OrderSymbol() != Symbol() ) continue;
trueprofit = OrderProfit() + OrderSwap() + OrderCommission();
if ( trueprofit >= 0 )
{
Print( "Profit: ", trueprofit );
ObjectSetString ( 0, "all profit counting object", OBJPROP_TEXT, DoubleToString( trueprofit, 2 ) );
}
}
//---
return;
}
Vielen Dank im Voraus.
Sie überschreiben den Wert von trueprofit bei jeder Iteration der Schleife, anstatt den Wert zu erhöhen.
Merken Sie sich dies:
wurde in dies geändert:
Sie müssen sich darüber im Klaren sein, was bei jeder Iteration der Schleife passieren soll (jeder Auftrag) und was nach der Schleife passieren soll (nachdem Sie alle Aufträge überprüft haben).
Vielen Dank für Ihre schnelle Antwort.
Vielleicht bin ich so müde, tut mir leid. ( Ich kann einfach nicht verstehen, was ich tunkönnte. )
Ich muss ein bisschen mehr mein Anliegen beschreiben ( wie viel ich kann ).
Also, ich habe 2 Funktionen:
Zum Schluss möchte ich, dass diese ( mein letzter Kommentar-Code) Gewinnberechnungsfunktion beide Arten von Orders " OP_SELL und OP_BUY " nur profitabel berechnen kann.
Vielen Dank im Voraus.
Wie versuchen Sie, alle gewinnbringenden Werte in einem Label anzuzeigen?
Meinen Sie alle addierten AcountProfit() oder für jeden einzelnen OrderProfit().
Wenn Sie so etwas benötigen:
Bitte lesen Sie diesen Artikel:
https://www.mql5.com/en/articles/2723
Danke für Ihren Kommentar.
Entschuldigung für die Verwirrung.
Nein, ich denke, ich brauche etwas anderes als sie.
Ich werde versuchen, mein Problem zu klären.
Ich habe 3 Positionen für EURUSD. Zwei von ihnen sind gewinnbringende Positionen, eine von ihnen ist eine Verlustposition. Ich brauche also nur zwei von ihnen zu berechnen, die sie profitabel sind.
Z.B.: wenn jeder von ihnen +1.00 ( 2 profitable Positionen = +2.00 ) nur ich brauche, um alle profitablen Positionen Wert zu erhalten.
Ich habe gerade schnell gemacht unten Registerkarte für hilft mir, was ich versuche zu sagen. ( unten in der Bilddatei dieses Kommentars )
( Englisch ist nicht meine Muttersprache - manchmal habe ich damit zu kämpfen )
Ich wünsche Ihnen alles Gute.
// in your orderselect loop put
if(OrderProfit()>0)
{
totalprofit=totalprofit+OrderProfit();
}
#Profit Orders Counting - Closed
{
totalprofit=totalprofit+OrderProfit();
}
Ich habe mein Problem nach deinem tollen Beispielcode gelöst.
Toller Mann, vielen Dank!
Sie überschreiben den Wert von trueprofit bei jeder Iteration der Schleife, anstatt den Wert zu erhöhen.
Denken Sie daran:
Sie müssen sich darüber im Klaren sein, was bei jeder Iteration der Schleife passieren soll (jede Bestellung) und was nach der Schleife passieren soll (nachdem Sie alle Bestellungen überprüft haben).
Ich habe gerade das untenstehende Skript fertiggestellt.
Noch einmal prüfe ich Ihren Kommentar, dann weiß ich, dass Sie es mir erklären. Aber mein Englisch verhindert, es zu verstehen.
Alles Gute für jeden von euch Männern.
{
double trueprofit = 0;
double totalprofit = 0;
for ( int i = OrdersTotal() - 1; i >= 0; i-- )
{
if ( ! OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) ) continue;
if ( closeothers != true && OrderSymbol() != Symbol() ) continue;
trueprofit = OrderProfit() + OrderSwap() + OrderCommission();
if ( trueprofit >= 0 )
{
totalprofit += OrderProfit() + OrderSwap() + OrderCommission();
Print( "Profit: ", DoubleToString( totalprofit, 2 ) );
ObjectSetString ( 0, _Checkthisout_name_Label, OBJPROP_TEXT, "Total Profit: " + DoubleToString( totalprofit, 2 ) );
}
}
//---
return;
}
Ich hoffe, dass dieser Code gut funktionieren wird. Wenn etwas falsch im obigen Code, lassen Sie mich bitte wissen.
Vielen Dank für alles.