Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4
Startseite Registrieren Hilfe Community Kalender Heutige Beiträge Suchen

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4978
Beiträge: 43260
Benutzer: 7.223
Aktive Benutzer: 74
Links: 84
Wir begrüßen unseren neuesten Benutzer: Sundaytrader
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einer Woche
- Sundaytrad...
vor einer Woche
- TS_6
vor einer Woche
- Mane
vor 3 Wochen
- AlbertZiz
vor 3 Wochen
- michak

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

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #11 (permalink)  
Alt 31.03.17
Mitglied
 
Registriert seit: Feb 2016
Beiträge: 240
RetepM befindet sich auf einem aufstrebenden Ast
Standard

Hi, in der Anlage schicke ich Dir einen Indikator, der eine blaue "UpperRange" und rote "LowerRange" Linie malt. Wenn Du diese Linien über die aktuelle Kerze bewegst, zeigt der Indikator den Wert an. Der Wert wird mit

valUpper= ObjectGetValueByShift("UpperRange", 0);
valLower= ObjectGetValueByShift("LowerRange", 0);

in die Variablen valUpper bzw valLower geschrieben.

Dann nimmst Du in Deinem EA z.B. Ask > valUpper und hast den Trigger zum Auslösen einer Close-Funktion.
Angehängte Dateien
Dateityp: mq4 GetLineValue.mq4 (3,9 KB, 8x aufgerufen)
  #12 (permalink)  
Alt 31.03.17
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Richi777 Beitrag anzeigen

Okay... Danke vielmals für die Infos aber ich dreh noch durch ...
Bin ich zu blöd dafür oder warum geht das immer noch nicht???
Irgendwo muss doch noch ein Fehler sein?
Auf meinen Chart sehe ich die CloseLine aber wenn der Kurs sie durchquert passiert nichts....Hilfe!!! Das muss doch irgendwie funktionieren...
Ich kann aufs Erste keinen Fehler entdecken, außer das evtl. der Variablen CloseLine ein falscher Wert zugeordnet wurde.
Lass Dir den Wert mal mit Print(DoubleToStr(CloseLine, Digits)); anzeigen.
Wo wird dieser Variablen der Wert zugeordnet?

Das geht einfacher und damit übersichtlicher:
Code:
if(Bid >= CloseLine) CL=True;
   if (CL==True)
   {
       bool CO= OrderClose(OrderTicket(),OrderLots(),Bid,3);
   }
per direkt:
Code:
if(Bid >= CloseLine) {
   bool CO= OrderClose(OrderTicket(),OrderLots(),Bid,3);
}
traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #13 (permalink)  
Alt 31.03.17
Mitglied
 
Registriert seit: Feb 2016
Beiträge: 240
RetepM befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Richi777 Beitrag anzeigen
Hallo wieder einmal ,
wollte mal fragen, ob es möglich ist, wenn ich eine Hline in den Chart bei einer geöffneten Order einzeichne und diese vom Kurs überschritten wird, dass darauf hin die Order geschlossen wird, egal ob Profit oder Loss???
Das war der erste Satz in diesem Thread. Ich bin deshalb davon ausgegangen, das händisch eine Linie gezeichnet wird oder?
  #14 (permalink)  
Alt 31.03.17
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat von Richi777
Hallo wieder einmal ,
wollte mal fragen, ob es möglich ist, wenn ich eine Hline in den Chart bei einer geöffneten Order einzeichne und diese vom Kurs überschritten wird, dass darauf hin die Order geschlossen wird, egal ob Profit oder Loss???

"Das war der erste Satz in diesem Thread. Ich bin deshalb davon ausgegangen, das händisch eine Linie gezeichnet wird oder?"

Nun ja, wenn dem so wäre, dann hätte aber über den folgenden Code überhaupt keine Order geöffnet werden dürfen, denn aufgrund einer händisch eingezeichneten Buy-Linie wird nicht automatisch der Variablen BuyLine ein Wert > 0 zugewiesen, mal davon abgesehen, dass aufgrund des Vergleichsoperators == das Öffnen eher ein Zufall ist.

Code:
if(Bid == BuyLine)
{
   Order=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slipage,0,0,"",0,0,Lime);
}
Ansonsten könnte man tatsächlich aus seiner Beschreibung eine händisch eingezeichnete Linie schlussfolgern.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #15 (permalink)  
Alt 02.04.17
Mitglied
 
Registriert seit: Mar 2014
Beiträge: 39
Richi777 befindet sich auf einem aufstrebenden Ast
Standard

Eine händisch gezeichnete Line war nicht der Sinn. Ich habe es leider falsch formuliert. Die Linie hat schon einen vorgegebenen Wert.
Egal...ich habe auf jeden Fall herausgefunden wie es jetzt doch funktioniert.
Dafür das ich eigentlich ein blutiger Anfänger bin was das EA programmieren angeht, habe ich schon so einiges umsetzen können.

Ich habe ein CloseAllOrders Script gefunden und mir den Code angeschaut.
Den habe ich dann versucht einzubauen und es hat funktioniert.
Damit schließt sich jetzt die Order wenn die Linie überschritten wird.

Code:
  for( i=cnt-1;i>=0;i--)
  {
    OrderSelect(i, SELECT_BY_POS);
    int type   = OrderType();

    bool result = false;
    
   if(Bid < CloseLine)
     {
      //Close opened long positions
      result = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(), MODE_BID), 5, Red );
      break;
     }
    
    if(result == false)
    {
      Alert("Order " , OrderTicket() , " failed to close. Error:" , GetLastError() );
      Sleep(3000);
    }  
  }


  return(0);
  }
  #16 (permalink)  
Alt 02.04.17
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Richi777 Beitrag anzeigen
Hallo wieder einmal ,

wollte mal fragen, ob es möglich ist, wenn ich eine Hline in den Chart bei einer geöffneten Order einzeichne und diese vom Kurs überschritten wird, dass darauf hin die Order geschlossen wird, egal ob Profit oder Loss???

Code:
for( i=cnt-1;i>=0;i--)
  {
    OrderSelect(i, SELECT_BY_POS);
    int type   = OrderType();

    bool result = false;
    
   if(Bid < CloseLine)
     {
      //Close opened long positions
      result = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(), MODE_BID), 5, Red );
      break;
     }
    
    if(result == false)
    {
      Alert("Order " , OrderTicket() , " failed to close. Error:" , GetLastError() );
      Sleep(3000);
    }  
  }


  return(0);
  }
Also ich verstehe hier mehrere Dinge nicht:
1. Im Eröffnungspost steht was von "Kurs überschritten", im o.g. Code steht allerdings:
if(Bid < CloseLine)
Das wäre aber ein Unterschreiten!!
2. Wenn im o.g. Code die selektierte Order eine SellOrder wäre, würde permanent ein Fehler auftreten, weil eine SellOrder nicht mit dem Bid-, sondern mir dem Ask-Kurs geschlossen wird, denn in diesem Code wird nicht nach dem Ordertype selektiert.
3. Würde diese Code nicht durch den Compiler gehen.
4. Wäre das int type = OrderType(); so wie es da steht überflüssig, obwohl es eigentlich unabdingbar ist.
5. Es würde permanent eine Fehlermeldung generiert, wenn Bid nicht kleiner als CloseLine wäre.
6. Dass Deine BuyOrder also geschlossen wurde, lag nich daran, dass der Bid-Kurs über der CloseLine lag, sondern darunter. In Summe also ein reiner Zufallscode - schmeiss ihn einfach weg!

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #17 (permalink)  
Alt 03.04.17
Mitglied
 
Registriert seit: Mar 2014
Beiträge: 39
Richi777 befindet sich auf einem aufstrebenden Ast
Standard

Ja....mein Fehler. Ich habe geschrieben überschritten und meinte unterschritten, weil es sich um eine Buy-Order handelt.
Trotzdem funktioniert das und meine Buy-Order wird beim unterschreiten der Linie geschlossen. Wie auch immer aber es funktioniert komischerweise bei mir
  #18 (permalink)  
Alt 03.04.17
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Punkt 2. - 5. des Post #16 bleiben aber weiterhin bestehen.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #19 (permalink)  
Alt 06.04.17
Premium Mitglied
 
Registriert seit: May 2015
Beiträge: 367
next user befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Richi777 Beitrag anzeigen
Code:
if(Bid == BuyLine)
     {
      Order=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slipage,0,0,"",0,0,Lime);
     }

int CL;
     
if(OrderType()==OP_BUY)
  {
   if(Bid< CloseLine) CL=True;
      
   if(CL==True)
     {
       bool CloseOrder= OrderClose(OrderTicket(),Lots,CloseLine,3);
     }
  }
Beim Order öffnen funktioniert das wie ich will aber andersrum geht das nicht
Eine Sache verstehe ich nicht. Du sendest eine BUY-Order, sobald der Kurs deine definierte Linie erreicht hat, steigst also nicht "On Market" ein. Wäre da nicht ein BUY-STOP/LIMIT auch sinvoll?

Zitat:
Zitat von Richi777 Beitrag anzeigen
... wenn ich eine Hline in den Chart bei einer geöffneten Order einzeichne und diese vom Kurs überschritten wird, dass darauf hin die Order geschlossen wird, egal ob Profit oder Loss??? ...
Naja, so ganz egal ist es wohl nicht, oder? Beim Profit überschreiten und beim Loss unterschreiten wäre glaube ich sinnvoller, oder? Vielleicht habe ich dich auch falsch verstanden.

Zitat:
Zitat von Richi777 Beitrag anzeigen
Code:
int i,cnt,CL;
cnt = OrdersTotal();     
for (i=0;i<cnt;i++)
    {
       if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
       {
          if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
          { 
            if (OrderType() == OP_BUY)
            {
               if(Bid < CloseLine) CL=True;
               if (CL==True)
               {
               bool CO= OrderClose(OrderTicket(),Lots,CloseLine,3);
               }
            }
          }
       }      
   }
Hier ist außerdem das letzte if sinnlos.
Code:
if(Bid < CloseLine) CL=True;
if (CL==True)
{
bool CO= OrderClose(OrderTicket(),Lots,CloseLine,3);
}
zu
Code:
if(Bid < CloseLine)
{
   bool CO= OrderClose(OrderTicket(),Lots,CloseLine,3);
}
Ich habe dich vielleicht falsch verstanden, aber ich frage mich immer noch, was genau du mit der Linie bezwecken willst.
Soll sie die Funktion eines TakeProfit oder StopLoss einnehmen?
Wieso spielt es keine Rolle, ob der Kurs im "Gewinn" oder "Verlust" auf deine Linie trifft und du da einfach nur die Order schließt?
Thema geschlossen

Lesezeichen

Stichworte
hline, hline order schließen, mql4, order schließen, programmierung, programmierung metatrader, programmierung mql4


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 04:30 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.
-----------------------------------------------------------------------------------------------------------------------------