Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools  
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4204
Beiträge: 39117
Benutzer: 6.496
Aktive Benutzer: 235
Links: 80
Wir begrüßen unseren neuesten Benutzer: truongquochung54
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor einem Tag
- truongquoc...
vor einem Tag
- victorfall
vor 2 Tagen
- jannes
vor 3 Tagen
- stoffel
vor 3 Tagen
- marioo

Onlineuser
'Wer ist online' anzeigen Benutzer: 2
Gäste: 77
Gesamt: 79
Team: 0
Team:  
Benutzer:  Creator, Cyryx
Freunde anzeigen

Empfehlungen

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt vor 3 Wochen
Neues Mitglied
 
Registriert seit: Oct 2016
Beiträge: 17
dundale befindet sich auf einem aufstrebenden Ast
Standard Änderung des Takeprofit wenn sich Tradeanzahl ändert

Hallo alle zusammen,

ich möchte beispielsweise 3 Buy-Trades alle aufeinmal zu einem TP schließen. Dieser TP errechnet sich durch Breakeven plus eine Anzahl von ProfitPips.

Bisher habe ich mit einer Funktion gearbeitet, welche den TP der Trades erst bei einem neuen Trade modifiziert.

Wenn ich einen Trade manuell schließe, möchte ich gerne, dass dann auch der TP sofort geändert wird. Da sich ja der Breakeven durch das Schließen verändert hat.

Wie prüfe ich ab, ob sich die Tradeanzahl verändert hat?
Ich kriege das mit dem Vergleich der alten mit der neuen Tradeanzahl nicht hin.

Kann mir jemand einen Tipp geben.

Vielen Dank
Tom
Mit Zitat antworten
  #2 (permalink)  
Alt vor 3 Wochen
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.193
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Wenn keine weiteren BuyOrders geöffnet werden, dann speichert man einfach die Anzahl der BuyOrders ab und vergleicht die Zahl mit der Anzahl BuyOrders beim nächsten ankommenden Tick.

Oder man fragt die Close-Zeit der letzten geschlossenen BuyOrder ab. Wenn die sich ändert, dann ist wieder eine BuyOrder geschlossen worden.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #3 (permalink)  
Alt vor 3 Wochen
Neues Mitglied
 
Registriert seit: Oct 2016
Beiträge: 17
dundale befindet sich auf einem aufstrebenden Ast
Standard

Hallo traderdoc,

ich verstehe, was du meinst aber ich kann das nicht programmieren, da sind zu viele gedankliche Lücken in meinem Kopf.

Ich habe eine TotalOpenBuyOrders()-Funktion, somit habe ich die aktuelle Anzahl der offenen BuyOrders.
Aber ich weiß nicht, wie und an welcher Stelle ich den neuen Wert "ermittle", mit dem ich dann die TotalOpenBuysOrders-Anzahl vergleiche.

Ich dachte ich könnte in die OnTick-Funktion folgendes eintragen:

Check_Veraenderung_BuyOrders(); // Die Funktion läuft bei jdem Tick durch

und dann wollte ich die folgende Funktion nutzen:
Code:
bool Check_Veraenderung_BuyOrders()
{
   int total=0,
   OrderAnzahl = TotalOpenBuyOrders();
   
   if(OrdersTotal()>0)
      for(int i=OrdersTotal()-1; i>=0; i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
           {
            if(OrderSymbol() == Symbol())
               if(OrderType() == OP_BUY)
                  if(OrderAnzahl != //neuer Wert// )
                     OrderModify( ... )
           }
        }
   return(true);
}
Ich kam aber beim Tüfteln einfach nicht weiter.

Mir gehts erstmal um die Funktion, dass der EA die Veränderung der Tradeanzahl realisiert und dann die Aktualisierung des TP vornimmt.
Mit Zitat antworten
  #4 (permalink)  
Alt vor 3 Wochen
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.193
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Code:
int previous_anzahl_buyorders = 0;  //Deklaration im Teil der globalen Variablen
...
Check_Veraenderung_BuyOrders();
...

void Check_Veraenderung_BuyOrders() {
   int anzahl_buyorders = 0,

   for (int i = OrdersTotal()-1; i >= 0; i--) {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol() == Symbol()) {
            if (OrderType() == OP_BUY) {
               anzahl_buyorders ++;        
            }
         }
      }
   }

   if (anzahl_buyorders < previous_anzahl_buyorders) {
      OrderModify( ... );
   }
   previous_anzahl_buyorders = anzahl_buyorders;
   return;
}
Das wäre die Variante nach meiner ersten Beschreibung.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #5 (permalink)  
Alt vor 3 Wochen
Neues Mitglied
 
Registriert seit: Oct 2016
Beiträge: 17
dundale befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank dafür, dass hilft mir weiter zu kommen
Mit Zitat antworten
Antwort

Lesezeichen


Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +2. Es ist jetzt 20:25 Uhr.


Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2019 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2017 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------