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: 4588
Beiträge: 41432
Benutzer: 6.973
Aktive Benutzer: 205
Links: 82
Wir begrüßen unseren neuesten Benutzer: chippbutty
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 4 Tagen
- chippbutty
vor 5 Tagen
- M0rtis
vor 6 Tagen
- Alexander2...
vor einer Woche
- Geldman041...
vor einer Woche
- jomaka

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 120
Gesamt: 120
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 30.07.20
Neues Mitglied
 
Registriert seit: Jul 2020
Beiträge: 5
BodoM befindet sich auf einem aufstrebenden Ast
Standard Je ein Trade auf verschiedenen Chartfenstern

Hallo zusammen,

ich hätte da mal eine Frage.
Ich habe einen EA programmiert und möchte diesen zu drei verschiedenen Zeiten starten lassen.
Dazu habe ich den EA einfach drei mal als MQ4-Datei abgespeichert (...A,B,C), die entsprechenden Zeitenänderungen in jedem EA vorgenommen, die jeweilige
MagicNumber geändert und diese dann auf drei Chartfenster desselben Symbols verteilt.

Jetzt kommt das eigentliche Problem: Da ich möchte, dass jeder EA für sich immer nur EINEN Trade startet, habe ich das Starten mehrerer Trades mittels "if (OrdersTotal()==0)" unterbunden (also es darf nur EIN Trade starten, wenn keiner aktiv ist, was ja auch funktioniert). Leider scheint sich aber auch auf die anderen beiden EAs in den anderen beiden Chartfenster auszuwirken und solange der erste EA seinen Trade gestartet hat, weigern sich leider die anderen beiden, ebenfalls einen Trade zu starten.
Ich vermute jetzt, dass das OrdersTotal() sich auf alle Trades im Konto bezieht, weiß jedoch keine Lösung, wie ich den Befehl dahingehend umschreiben könnte, damit sich das nur auf den entsprechenden EA bezieht. Geht das überhaupt?

Wenn ich jetzt z.B. statt (OrdersTotal()==0) dann (OrdersTotal()< 3) schreiben würde, befürchte ich, dass dann drei Trades im selben EA gestartet würden, was ich ja vermeiden möchte.
Weiß jemand eine Lösung hierfür?

Bin irgendwie ein wenig am verzweifeln...

Grüße
BodoM
Mit Zitat antworten
  #2 (permalink)  
Alt 30.07.20
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.448
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Also, erstens würde man nur 1 EA benutzen, indem die drei Zeitvorgaben definiert werden.
Wenn wie in Deinem Fall, dann werden über OrderSelect() ganz normal die offenen Orders durchsucht und lediglich nach der MagicNumber gefiltert.

D.h wenn nach OrderSelect() dann die Abfrage über
if (OrderMagicNumber() == MagicNumber) true ist, existiert bereits für diesen EA eine Order. Lässt man dann also bei true jeweils ein Flag (z.B. flag1, flag2 und flag3 für die jeweiligen drei EAs) setzen, weiss man am Ende von OrderSelect(), zu welchem EA bereits die Order gesetzt wurde. Ist ein Flag false ist keine Order in diesem EA offen und könnte ggf. gesetzt werden.

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

Zitat:
Zitat von traderdoc Beitrag anzeigen
Lässt man dann also bei true jeweils ein Flag (z.B. flag1, flag2 und flag3 für die jeweiligen drei EAs) setzen, weiss man am Ende von OrderSelect(), zu welchem EA bereits die Order gesetzt wurde. Ist ein Flag false ist keine Order in diesem EA offen und könnte ggf. gesetzt werden.

traderdoc
Hi traderdoc ,
erst mal herzlichen Dank für deine Antwort.

Den Abschnitt oben habe ich jedoch nicht wirklich richtig verstanden. Kannst du das mit dem "flag" noch etwas näher erläutern. Vielleicht anhand eines Codeschnipsels?

Gruß
BodoM
Mit Zitat antworten
  #4 (permalink)  
Alt 30.07.20
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.448
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Code:
flag = false;
for (int i = OrdersTotal()-1; i >= 0; i--) {  
   if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
         if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
            flag = true;
         }
      }
   }
}
if (!flag) {
   //ggf. Action
}
traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #5 (permalink)  
Alt 31.07.20
Neues Mitglied
 
Registriert seit: Jul 2020
Beiträge: 5
BodoM befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
Code:
flag = false;
for (int i = OrdersTotal()-1; i >= 0; i--) {  
   if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
         if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
            flag = true;
         }
      }
   }
}
if (!flag) {
   //ggf. Action
}
traderdoc
Oh, wow - und das um diese Uhrzeit. Vielen herzlichen Dank. Das werde ich ausprobieren.
Mit Zitat antworten
  #6 (permalink)  
Alt 03.08.20
Neues Mitglied
 
Registriert seit: Jul 2020
Beiträge: 5
BodoM befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
Code:
flag = false;
for (int i = OrdersTotal()-1; i >= 0; i--) {  
   if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
         if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
            flag = true;
         }
      }
   }
}
if (!flag) {
   //ggf. Action
}
traderdoc
Das hat leider irgendwie nicht funktioniert.
Es startet nach wie vor nur ein Trade.
Ich habe das so umgesetzt:

Code:
flag = false;
for (int i = OrdersTotal()-1; i >= 0; i--) {  
  
	 if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
    	
		  if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
        
			 if (OrderType() == OP_BUY || OrderType() == OP_SELL)  {
            flag = true;
         }
      }
   }
}



if (flag != true)	

	{ action... }
Fehlermeldung beim Kompilieren bekomme ich keine, aber es gelingt mir trotzdem nicht, mehrere Trades in mehreren Fensten zu starten.
Sieht irgendjemand meinen Denkfehler?

Gruß
BodoM
Mit Zitat antworten
  #7 (permalink)  
Alt 12.08.20
Neues Mitglied
 
Registriert seit: Jul 2020
Beiträge: 5
BodoM befindet sich auf einem aufstrebenden Ast
Standard

Hi alle,

ich kann es nicht wirklich erklären, aber jetzt ging das mit diesem Script DOCH. Ich habe keine Ahnung warum das vorher nicht ging, aber jetzt, nach undendlicher Herumprobiererei, ist dann doch ein zweiter Trade in einem anderen Währungspaar gestartet.
herzlichen Dank nochmals an den traderdoc.

Wollte ich nur loswerden, falls jemand ein ähnliches Problem hat.

Grüße
BodoM
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
expert advisor, orderstotal

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 04:26 Uhr.





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