expert advisor - verschiedene Fragen - Seite 16

 

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)

 
honest_knave:

Ja
Nein, der Ankerpunkt ist auf ANCHOR_LEFT_UPPER festgelegt
Ja, Sie haben recht - EventSetMillisecondTimer(250)

Ich weiß das sehr zu schätzen. Vielen Dank, Mann.
 

#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.

void profitcalcfnc()
{
    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.

 
trueprofit = OrderProfit() + OrderSwap() + OrderCommission();

Sie überschreiben den Wert von trueprofit bei jeder Iteration der Schleife, anstatt den Wert zu erhöhen.

Merken Sie sich dies:

profit = OrderProfit();

wurde in dies geändert:

profit_buy += OrderProfit();
Sie müssen sich darüber im Klaren sein, was bei jeder Iteration der Schleife (bei jedem Auftrag) geschehen soll und was nach der Schleife (nachdem Sie alle Aufträge überprüft haben) geschehen soll.
 
honest_knave:
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:

  1. Ich verwende die erste von ihnen für die Button-Funktion - wenn ich darauf klicke, werden alle profitablen Positionen geschlossen. Es funktioniert gut so weit. (Ich kann es nicht genug testen - mein Broker ist deaktiviert Trades)
  2. Ich verwende die zweite davon für die Label-Funktion - die mir alle profitablen Werte in einem einzigen Label-Objekt anzeigen könnte. ( Aber ich kann es nicht tun )

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

Graphical Interfaces X: Updates for Easy And Fast Library (Build 3)
Graphical Interfaces X: Updates for Easy And Fast Library (Build 3)
  • 2016.10.17
  • Anatoli Kazharski
  • www.mql5.com
The next version of the Easy And Fast library (version 3) is presented in this article. Fixed certain flaws and added new features. More details further in the article.
 

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.

Print( "Profit: ", 2.00 ); // absolutely no separately - I just need - could adds profitable values 1.00 + 1.00 = 2.00

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.

Trade Panel Tab Bilddatei

 
double totalprofit=0;

// in your orderselect loop put
if(OrderProfit()>0)
{
  totalprofit=totalprofit+OrderProfit();
}
 

#Profit Orders Counting - Closed

Marco vd Heijden:
if(OrderProfit()>0)
{
  totalprofit=totalprofit+OrderProfit();
}

Ich habe mein Problem nach deinem tollen Beispielcode gelöst.
Toller Mann, vielen Dank!



ehrlich_knave:

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.

void calc()
{
    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.