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.


Portalsuche


Werbung

Login
Benutzername:
Kennwort:


Statistik
Themen: 3947
Beiträge: 37722
Benutzer: 6.242
Aktive Benutzer: 419
Links: 80
Wir begrüßen unseren neuesten Benutzer: Marcel83
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 2 Tagen
- Marcel83
vor 5 Tagen
- Megaule
vor 5 Tagen
- faanx
vor 5 Tagen
- baldwinlol
vor 6 Tagen
- adaba

Onlineuser
'Wer ist online' anzeigen Benutzer: 1
Gäste: 46
Gesamt: 47
Team: 0
Team:  
Benutzer:  traderdoc
Freunde anzeigen

Empfehlungen

Werbung

Like Tree1Likes
  • 1 Post By AVT
Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt vor 4 Wochen
Neues Mitglied
 
Registriert seit: Jul 2017
Beiträge: 3
toltek befindet sich auf einem aufstrebenden Ast
Standard Order selektieren und modifizieren

Halle an alle,
ich versuche gerade meine erste EA zu schreiben und würde mich vorab freuen für die Unterstützung. Ich poste hier die Code. Die EA soll in einem Bullenmarkt die offene Shortorder modifizieren (Stoploss und Takeprofit neu setzen) und umgekehrt. Bei selektieren und modifizieren funktioniert aber nicht.
Kann mir jemand mitteilen, wo meine Fehler liegt?

PHP-Code:
    if(TotalOrder(OP_BUY)==0)
         {
            if(
Close[1]>Movingaverage)
               {
                  if(
StopLoss>0)
                  
SL Ask-StopLoss*_Point;
                  if(
TakeProfit>0)
                   
TP Ask+TakeProfit*_Point;
                  
//....
                  
Longorder1 OrderSend(Symbol(),OP_BUY,Handelsvolumen,Ask,0,SL,TP,"ersteEA",MagicNumber,0,clrBlue);
               } 
               
         }
//+------------------------------------------------------------------+
//|  Bärenmarkt Markt:                                            |
//+------------------------------------------------------------------+        
      
if(TotalOrder(OP_SELL)==0)
         {
            if(
Close[1]<Movingaverage)
               {
                  if(
StopLoss>0)
                  
SL Bid+StopLoss*_Point;
                  if(
TakeProfit>0)
                   
TP Bid-TakeProfit*_Point;
                  
//....
                  
Shortorder1 OrderSend(Symbol(),OP_SELL,Handelsvolumen,Bid,0,SL,TP,"ersteEA",MagicNumber,0,clrBlue);
               } 
         } 
//+------------------------------------------------------------------+
//| Bullenmarkt                                            |
//+------------------------------------------------------------------+ 
      
if(TotalOrder(OP_BUY)==0)
         {
            if(
Close[1]>Movingaverage && Close[1]>LowestClose)
               {
                  if(
StopLoss>0)
                  
SL Ask-StopLoss*_Point;
                  if(
TakeProfit>0)
                   
TP Ask+TakeProfit*_Point;
                  
//....
                  
Longorder1 OrderSend(Symbol(),OP_BUY,Handelsvolumen,Ask,0,SL,TP,"ersteEA",MagicNumber,0,clrBlue);
               } 
               
         }
 
//+------------------------------------------------------------------+
//| Wenn eine Longorder in Bärenmarkt geöffnet                                          |
//+------------------------------------------------------------------+ 
     
           
if(Close[1]<Movingaverage)
               { 
                  
bool  auswahl1 OrderSelect(Longorder1,SELECT_BY_TICKET);
                     
modifizieren OrderModify(Longorder1,0,100,100,0,clrYellow); 
              }           
                     
  
//+------------------------------------------------------------------+
//| Wenn eine Shortorder in Bullenmarkt geöffnet                                          |
//+------------------------------------------------------------------+ 
     
           
if(Close[1]>Movingaverage)
               { 
                 
bool auswahl2 OrderSelect(Shortorder1,SELECT_BY_TICKET);
                  
bool  modifizieren OrderModify(Shortorder1,0,100,100,0,clrYellow)==true
              } 
Mit Zitat antworten
  #2 (permalink)  
Alt vor 4 Wochen
AVT AVT ist offline
Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 54
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von toltek Beitrag anzeigen
Halle an alle,
Die EA soll in einem Bullenmarkt die offene Shortorder modifizieren (Stoploss und Takeprofit neu setzen) und umgekehrt. Bei selektieren und modifizieren funktioniert aber nicht. Kann mir jemand mitteilen, wo meine Fehler liegt?
PHP-Code:
//| Wenn eine Longorder in Bärenmarkt geöffnet                                                               
modifizieren OrderModify(Longorder1,0,100,100,0,clrYellow); 
Sehen wir uns an, was Du hier anordnest:
Code:
                         // ändere
OrderModify( Longorder1, // die laufende Position mit Ticketnr. Longorder1
             0,          // auf einen Eröffnungskurs bei 0
             100,        // auf einen SL bei 100
             100,        // auf einen TP bei 100
             0,          // ohne Zeitbegrenzung
             clrYellow); // mit gelber Chartmarkierung
Ich denke, Du siehst schon selbst wo die Haken sind.
Frage Dich bei jeder Zeile: 1. ist das möglich und wenn ja 2. ist das auch richtig formuliert.
Wenn Du im Editor den Cursor ins Wort OrderModify setzt und dann F1 drückst, kommt automatisch die genaue Anleitung für diesen Befehl, meistens mit Beispiel.
Kommst Du damit schon weiter? AVT
toltek likes this.
__________________
heute schon gelacht?
Mit Zitat antworten
  #3 (permalink)  
Alt vor 4 Wochen
Neues Mitglied
 
Registriert seit: Jul 2017
Beiträge: 3
toltek befindet sich auf einem aufstrebenden Ast
Standard

Erstmal danke für die schnelle Antwort und übersichtliche Kommentierung für OrderModify.
Mit der F1 Geschichte bin ich vertraut und so habe ich auch versucht mir die mql4 Sprache beizubringen. Nun weiß ich immer noch nicht wo die Haken sind.
Bitte erleuchte mich.
Meinst du, dass an zweiter Stelle wo 0 steht, sollte was anderes gesetzt werden? Diese 0 steht anscheinend für Pendingorder. Oder soll ich an dieser Stelle die Funktion OrderOpenPrice() benutzen?
Mit Zitat antworten
  #4 (permalink)  
Alt vor 4 Wochen
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.989
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von toltek Beitrag anzeigen
Erstmal danke für die schnelle Antwort und übersichtliche Kommentierung für OrderModify.
Mit der F1 Geschichte bin ich vertraut und so habe ich auch versucht mir die mql4 Sprache beizubringen. Nun weiß ich immer noch nicht wo die Haken sind.
Bitte erleuchte mich.
Meinst du, dass an zweiter Stelle wo 0 steht, sollte was anderes gesetzt werden? Diese 0 steht anscheinend für Pendingorder. Oder soll ich an dieser Stelle die Funktion OrderOpenPrice() benutzen?
Nicht nur das, sondern auch die Werte für StopLoss und TakeProfit sind falsch. Da müssen konkrete Kurswerte eingesetzt werden.

Genug Erleuchtung fürs Erste?

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #5 (permalink)  
Alt vor 4 Wochen
AVT AVT ist offline
Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 54
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von toltek Beitrag anzeigen
Meinst du, dass an zweiter Stelle wo 0 steht, sollte was anderes gesetzt werden? Diese 0 steht anscheinend für Pendingorder. Oder soll ich an dieser Stelle die Funktion OrderOpenPrice() benutzen?
Wie traderdoc auch schon sagte, da muß OrderOpenPrice() rein - und zwar nicht nur deshalb, weil 0 für pending order ist, sondern schlicht und ergreifend, weil das eine schon laufende Order ist, die hat bereits einen Eröffnungpreis (gehabt) und den kannst Du nicht ändern!

Kleines Streichholz für mehr Licht:
Bei der Änderung (genauso wie bei der Eröffnung) will der EA ganz genau wissen wohin mit SL und TP und zwar auf Punkt und Komma genau; TP 100 und SL 100 sind also absolute Wertangaben! Nun stell Dir vor, Du bist im DAX bei derzeitigem Kurs 11.800 Long gegangen und sagst nun "setz den SL genau auf 100", dann setzt der ihn genau da hin: auf einen Kursstand von 100. Risiko 11.700 Punkte max Verlust
Noch ein Streichholz:
Du hast bei der Eröffnung schon genau ausgerechnet wohin mit den Eröffnungs-SL und -TP. Das machst Du jetzt genauso für die Änderung.

Kerze <- anzünden und los AVT
__________________
heute schon gelacht?
Mit Zitat antworten
  #6 (permalink)  
Alt vor 5 Tagen
Neues Mitglied
 
Registriert seit: Jul 2017
Beiträge: 3
toltek befindet sich auf einem aufstrebenden Ast
Lightbulb

Es hat geklappt und die EA funktioniert. Allerdings wie eine Atomuhr ohne Zeiteinstellung.
Ich meine es ist kein Gral wie ich mir vorgestellt habe.
Deshalb versuche ich bisschen Änderungen hervorzurufen.
Es geht nochmal um selektieren und modifizieren.
Ich versuche seit zwei Tagen das Problem zu lösen und gerade klopfe mit dem Kopf an die Wand.
Meine Schildkröte macht sich lustig über mich und hat die ganze Nacht um mich herum getanzt.

Und das Problem:
Shortorder in Bullenmarkt und Longorder in Bärenmarkt
sollten nun anhand von letzten geschlossenen Positionen modifiziert werden.
etwa so:
PHP-Code:
if(longorder in Bärenmarkt immer noch Offen ist || Longorder im minus ist)
    {
        
//Stoploss modifizieren
        
neue Stoploss 0;
        
        
// Takeprofit modifizieren
        
selektiere die letzte geschlossene Position;
    
            if( 
letzte geschlossene Position gewinnbringend war)
                {
                    
berechne den gewinn in punkten;
                                 
neue TakeprofitTakeprofit berechnette gewinn in Punkten
                
}
   } 
Der Block soll jedes mal ausgeführt werden wenn eine Order gewinnbringend schließt und zugleich eine offene longorder im Minus steht.
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 16:32 Uhr.



Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2018 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.
-----------------------------------------------------------------------------------------------------------------------------