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: 5018
Beiträge: 43482
Benutzer: 7.274
Aktive Benutzer: 17
Links: 84
Wir begrüßen unseren neuesten Benutzer: RonaldFrume
Mit 20.431 Benutzern waren die meisten Benutzer gleichzeitig online (vor 6 Tagen um 22:05).
Neue Benutzer:
vor 2 Tagen
- RonaldFrum...
vor 4 Tagen
- AanielCob
vor 2 Wochen
- heinzkral
21.05.26
- Seniully
07.05.26
- Igor

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

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 20.09.15
Premium Mitglied
 
Registriert seit: Apr 2015
Beiträge: 422
Raul0 befindet sich auf einem aufstrebenden Ast
Standard while Schleife für Sparsamkeit?

Moin Moin,

einen Unterstützung für das manuelle Handeln.

Sehe ich das richtig, dass der EA solange in der while bleibt, bis eine Order vorhanden ist?
Das ist ein Teil in einer Funktion.

PHP-Code:
   bool Go = false;

   while( 
Go == false ) {

      if( 
OrdersTotal() > 0 ) {
         
Go = true; 
         return(
true);
      }
   } 
Mir gehts vorrangig den EA so sparsam wie möglich laufen zu lassen.
Sprich er muss nicht ständig den ganzen Code durchlaufen, wenn er auf eine Order wartet.

Gruss, Raul
  #2 (permalink)  
Alt 20.09.15
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.762
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

while-Schleifen sind immer mit Vorsicht zu benutzen, da es schnell passieren kann, dass der EA drin versackt.
Den u.g. Code würde ich erst einmal wie folgt schreiben:
Code:
bool Go = false;
while(!Go) {
   if(OrdersTotal() > 0) break;
}
Ob der Code einen Nutzen hat, hängt vom Rest ab. Fakt ist, dass der Rest nicht! durchlaufen wird, solange nicht eine MarketOrder geöffnet bzw. PendingOrder gesetzt wurde. Ich halte aber nichts von solchen "Endlosschleifen".
Und ohne das der EA in der Schleife hängt, würde ich diese Abfrage in eine separate Funktion packen oder noch besser direkt am Anfang in den Code einfügen, also:
Code:
void OnTick() {
...
 if(OrdersTotal() == 0) return;
...
}

//oder mit unnötigem Einsprung: 

void OnTick() {
...
 if (!CheckOrders()) return;
...
}

bool CheckOrders() {
   bool Go = false;
   while(!Go) {
      if(OrdersTotal() > 0) return(true);
   }
   return(false); //ist eigentlich überflüssig, aber ohne würde ein Warnhinweis kommen
}
traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #3 (permalink)  
Alt 21.09.15
Premium Mitglied
 
Registriert seit: Apr 2015
Beiträge: 422
Raul0 befindet sich auf einem aufstrebenden Ast
Standard

Das ich den Befehl: Go = true; in der Schleife setze, ist vermutlich überflüssig. Mit break, oder return(true) ist die Schleife auch erlöst.

Jedoch stürzte der MT4 ab, den Grund fand ich dann schnell. Da ich Buy und Sell Abfrage in der Ordercheck-Funktion habe, entsteht HickHack.

Ich werde kommende Woche den Code nochmal ändern in zwei Abschnitte.
Erstmal gut für heute, vielen Dank für die Rückinfo.


PHP-Code:
   //OPEN Order
   
if( orders < 1 ) //Anzahl der Orders einhalten
   
{
      if( 
Ordercheck(OP_BUY) )
      {
         if( 
TakeProfit ) tp =  Ask + TakeProfit * Point;
         if( 
StopLoss )   sl = Ask - StopLoss * Point;
         
openOrder(BaseLot,OP_BUY, sl, tp,"Start");
      }
      
      if( 
Ordercheck(OP_SELL) )
      {
         if( 
TakeProfit ) tp =  Bid - TakeProfit * Point;
         if( 
StopLoss )   sl = Bid + StopLoss * Point;
         
openOrder(BaseLot,OP_SELL, sl, tp,"Start");
      }            
   } 
Thema geschlossen

Lesezeichen

Stichworte
mql4, programmierung, programmierung metatrader, schleife, sparen, while schleife


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 06:58 Uhr.





Suchmaschine - Reisen - Werbefilme - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2026 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.
-----------------------------------------------------------------------------------------------------------------------------