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: 4973
Beiträge: 43265
Benutzer: 7.221
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: Thomas75
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 13 Stunden
- JosephTK
vor 2 Tagen
- Hopfen&Mal...
vor 3 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107

Onlineuser
'Wer ist online' anzeigen Benutzer: 1
Gäste: 454
Gesamt: 455
Team: 0
Team:  
Benutzer:  Thomas75
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 28.10.21
Neues Mitglied
 
Registriert seit: Jun 2021
Beiträge: 29
droyo33 befindet sich auf einem aufstrebenden Ast
Standard Schleife schließt nicht alle Positionen

Hallo Zusammen,

ich habe folgendes Problem und zwar schließt mein EA in der Schleife (siehe Bilder) nicht alle Positionen eines Paares...
Habe hier zum Testen versucht ab 4 Positionen alle Positionen eines Paares zu schließen, leider läuft er komischerweise immer nur 2x durch und hört dann auf. Ich weiß leider überhaupt nicht wieso...

Kann mir jemand beim Verstädnis helfen?

Vielen Dank!

MFG Dennis
Angehängte Grafiken
Dateityp: png Schleife.PNG (13,9 KB, 4x aufgerufen)
Dateityp: png Positionen.PNG (11,9 KB, 1x aufgerufen)
Dateityp: png Geschlossene Orders.PNG (10,2 KB, 1x aufgerufen)
  #2 (permalink)  
Alt 28.10.21
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Dann setze mal statt Deiner for-Schleife die ein:

for (i = OrdersTotal()-1; i >= 0; i--)

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #3 (permalink)  
Alt 28.10.21
Neues Mitglied
 
Registriert seit: Jun 2021
Beiträge: 29
droyo33 befindet sich auf einem aufstrebenden Ast
Standard

Danke ich denke es funktioniert.
Was genau ist jetzt aber der unterschied zwischen den Beiden Schleifen?
An sich werden doch alle orders durchgegangen, egal ob vorwärts oder rückwärts.

Komischerweise funktionioter die Schleife rückwärts ebenfalls nicht, wenn ich
ordersTotal() <-- meine eigene Funktion benutzte.
Es ist echt sehr suspekt...

MFG Dennis
  #4 (permalink)  
Alt 28.10.21
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Durch die for-Schleife werden beim Vorwärtszählen bereits gelöschte Orders im nächsten Schleifendurchgang "nicht gebührend berücksichtigt".
Z.B. beträgt anfangs OrdersTotal() = 4, i ist z.B. 2, wenn die erste Order gelöscht wird und i gibt ja die Position in der Orderliste an.
Im nächsten Schleifendurchgang ist aber OrdersTotal() nur noch 3 (also i = 0 bis i = 2). Da i aber bereits 3 ist würde hier die letzte Order nicht mehr abgefragt werden, weil vorher die Schleife schon beendet ist.

Zählt man rückwärts, dann wird immer die aktuelle Zahl für OrdersTotal() benutzt, bis i < 0 wird.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #5 (permalink)  
Alt 29.10.21
Neues Mitglied
 
Registriert seit: Jun 2021
Beiträge: 29
droyo33 befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank für die Antwort traderdoc, schätze ich sehr!
  #6 (permalink)  
Alt 29.10.21
Neues Mitglied
 
Registriert seit: Jun 2021
Beiträge: 29
droyo33 befindet sich auf einem aufstrebenden Ast
Standard

Habe noch eine Frage, für die ich eigentlich einen neuen Topic erstellen müsste, aber vllt geht es ja auch hier.

Ich möchte in meinem EA die Anzahl von Positionen eines ANDEREN Paares zählen.
Also z.B. ist der EA auf GBPNZD angewandt, ich habe aber auch 5 Positionen von GBPJPY offen, die ich im EA von GBPNZD zählen möchte.

Leider funktioniert dieser Code nicht..

int ordersTotal(){
count = 0;
for(i = 0 ; i < OrdersTotal(); i++){
if(OrderSelect(i, SELECT_BY_POS) == false) continue;
if(OrderSymbol() == Symbol()) continue;
for(int j = 0; j < OrdersTotal(); j++){
if(OrderSelect(j, SELECT_BY_POS) == false) continue;
if(OrderSymbol() == Symbol()) continue;
count++;
Print("andere Orders eines Paars ", count);
}
count = 0;
}

return count;
}
  #7 (permalink)  
Alt 29.10.21
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Ja klar, weil mit
if(OrderSymbol() == Symbol())
nur das Symbol abgefragt wird, auf welchem der EA auch gerade läuft.

Das sollte weiterhelfen:

if(OrderSymbol() == "GBPJPY")

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #8 (permalink)  
Alt 29.10.21
Neues Mitglied
 
Registriert seit: Jun 2021
Beiträge: 29
droyo33 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
Ja klar, weil mit
if(OrderSymbol() == Symbol())
nur das Symbol abgefragt wird, auf welchem der EA auch gerade läuft.

Das sollte weiterhelfen:

if(OrderSymbol() == "GBPJPY")

traderdoc
ja so würde es natürlich auch gehen aber ist ziemlich statisch.
Wenn ich 25 Paare trade und den EA auf jedes Paar anwende, dann sollte er auf jedem Paar schauen, ob auf anderen Paaren bereits 5 Positionen geöffnet sind...
if(OrderSymbol() == "GBPJPY")
if(OrderSymbol() == "GBPNZD")
if(OrderSymbol() == "GBPCHF")
usw. wäre sehr umständlich...
  #9 (permalink)  
Alt 29.10.21
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Prinzipiell geht das nicht anders.
Codevereinfachend könnte man die verwendeten Währungspaare vorher in ein String-Array (z.B. mit dem Namen WP) schreiben und dann den Indexzähler über die Anzahl der gespeicherten Paare laufen lassen, also in etwa so:

Code:
int i = ArraySize(WP);
for (cnt = 0; cnt < i; cnt ++) {
   if (OrderSymbol() == WP[cnt]) {
      ...
   }
}
traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #10 (permalink)  
Alt 14.11.21
Neues Mitglied
 
Registriert seit: Jun 2021
Beiträge: 29
droyo33 befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank traderdoc!
Thema geschlossen

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 +1. Es ist jetzt 11:34 Uhr.





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