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: 43291
Benutzer: 7.220
Aktive Benutzer: 82
Links: 84
Wir begrüßen unseren neuesten Benutzer: JosephTK
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einer Stunde
- JosephTK
vor 2 Tagen
- Hopfen&Mal...
vor 2 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107

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

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 14.02.18
Ceo Ceo ist offline
Mitglied
 
Registriert seit: Jan 2018
Beiträge: 47
Ceo befindet sich auf einem aufstrebenden Ast
Standard Short Order Schließen wenn Long Schließt

Ich brauch mal wieder Hilfe. Ich möchte, wenn ein Long Order geschlossen wird also gleich 0 ist das sich der Short Order automatisch mit schließt.

Bis jetzt hab ich den Code so aber es funktioniert nicht.

Long Order Öffnet sich:

Code:
  LongTicket = OrderSend(TradeOne,OP_BUY,LotSize,Ask,0,0,0,"Buy Order Signal",MagicNumber,0,Green);
Sell Order Öffnet sich:

Code:
      if((LongTicket > 0))
         {
            ShortTicket = OrderSend(TradeTwo,OP_SELL,LotSize,Bid,0,0,0,"Sell Order gegen Trade",MagicNumber,0,Red);}
Und Jetzt soll sich Short Order schließen wenn long geschlossen ist:

Code:
   if(LongTicket == 0 )
      {
         			
	LT3 = OrderSelect(ShortTicket,SELECT_BY_TICKET);
			if(OrderCloseTime() == 0 && ShortTicket > 0)
			  {
          int Closed = OrderClose(ShortTicket,OrderLots(),Bid,0,Red);
			  }		
		 }
  #2 (permalink)  
Alt 14.02.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Warum sollte denn LongTicket 0 sein (nach dem Schließen der LongOrder)?

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #3 (permalink)  
Alt 14.02.18
Ceo Ceo ist offline
Mitglied
 
Registriert seit: Jan 2018
Beiträge: 47
Ceo befindet sich auf einem aufstrebenden Ast
Standard

Na wenn n Long Order offen ist ist Longticket ja gleich 1 und wenn Longticket sich schließt gleich 0 oder sehe ich das nicht richtig?
  #4 (permalink)  
Alt 14.02.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Ceo Beitrag anzeigen
Na wenn n Long Order offen ist ist Longticket ja gleich 1 und wenn Longticket sich schließt gleich 0 oder sehe ich das nicht richtig?
Siehst Du, das kommt daher, weil einfach zu wenig Code gesendet wird.
Unklar ist immer noch, an welcher Stelle LongTicket 0 gesetzt wird.

Und außerdem wäre LongTicket nur dann 1, wenn Du das Programm im Tester laufen lässt.
Im Demo oder Live wird die TicketNumber sicherlich nicht 1 sein!!
Desweiteren wir eine SellOrder mit dem Ask geschlossen und nicht mit dem Bid!!


A bisserl mehr Code und wir könnten uns ein paar Posts sparen.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #5 (permalink)  
Alt 15.02.18
Ceo Ceo ist offline
Mitglied
 
Registriert seit: Jan 2018
Beiträge: 47
Ceo befindet sich auf einem aufstrebenden Ast
Standard

Gut dann Versuchen wir es mal besser zu machen. Nochmal kurz die Beschreibung: Wenn ein Signal da ist soll der Expert Advisor ein Long Trade eingehen und gleichzeitig einen Short Trade. Es gibt nur die beiden Trades kein weiteren bis diese nicht geschlossen sind. So jetzt zu meinem Problem: Ich möchte wenn Long geschlossen wird(egal aus welchen Grund ob TP/SL oder mein Gewinn erreicht wurde). Das sich der Short Order dann auch schließt, sollte es natürlich nicht gehen aus welchem Grund auch immer soll ein SL so nah wie möglich gesetzt werden um denn Verlust klein zuhalten. Der Code:


Code:
//---------------------------------------------------------------------------------------------   
//Kauf Signal 
  ST1 = OrderSelect(LongTicket,SELECT_BY_TICKET);
    if(OrderCloseTime() != 0 || LongTicket == 0)
      {  
    if((Open[1] > mt1) && (Open[0] > mt) && (A4B < Low[1]) && (AlG < Low[1]) && (Open[2] < Close[2]) && (Open[1] < Close[1]))
      {
                        
       LongTicket = OrderSend(TradeOne,OP_BUY,LotSize,Ask,0,0,0,"Buy Order Signal",MagicNumber,0,Green);
				
		 LT1 =	OrderSelect(LongTicket,SELECT_BY_TICKET); 
				   double OpenPrice = OrderOpenPrice();
				
            
             
        if(StopLoss > 0)  LongStopLoss = OpenPrice - (StopLoss * RealPoint);
        if(TakeProfit > 0)  LongTakeProfit = OpenPrice + (TakeProfit * RealPoint);
            
            
      	if(LongStopLoss > 0 || LongTakeProfit > 0) 
				{
               bool LongMod = OrderModify(LongTicket,OpenPrice,LongStopLoss, LongTakeProfit,0);
				}
               
    Comment("Kauf Signal");   
            OD = 0;
           } 
      else
           {
         OD = 1;
           }
   }
//----------------------------------------------------------------------------------------------   
//Verkauf Signal 
   ST2 = OrderSelect(ShortTicket,SELECT_BY_TICKET);
	if(OrderCloseTime() != 0 || ShortTicket == 0)
      {
      if((LongTicket > 0)&&(OrderType()==OP_BUY))
         {
            ShortTicket = OrderSend(TradeTwo,OP_SELL,LotSize,Bid,0,0,0,"Sell Order gegen Trade",MagicNumber,0,Red);
				
	  LT2 =	OrderSelect(ShortTicket,SELECT_BY_TICKET); 
				double OpenPrice = OrderOpenPrice();
				
            
            
            if(StopLoss > 0)  ShortStopLoss = OpenPrice + (StopLoss * RealPoint);
            if(TakeProfit > 0)  ShortTakeProfit = OpenPrice - (TakeProfit * RealPoint);
            
				if(ShortStopLoss > 0 || ShortTakeProfit > 0) 
				{
               bool ShortModOther = OrderModify(ShortTicket,OpenPrice,ShortStopLoss, ShortTakeProfit,0);
				}
   
   
   
          }
      }  
   if(OD==1)
      {
         Comment("Kein Kauf Signal");
      }
//-----------------------------------------------------------------------------------------------------------
// Trade "Verkauf" Schließen
       if((LongTicket==0))
			{
  ST3 =  OrderSelect(ShortTicket,SELECT_BY_TICKET);
			if(OrderCloseTime() == 0 && ShortTicket > 0)
			{
          int Closed = OrderClose(ShortTicket,OrderLots(),Ask,0,Red);
			}		
		   }
		}
  #6 (permalink)  
Alt 15.02.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Ich habe zunächst nur den Code überflogen und sehe nirgends, dass LongTicket mal 0 gesetzt wird. Und wenn diese Variable nicht 0 gesetzt wird, dann wird auch keine SellOrder geschlossen.

Und daher nochmals die Frage, wo genau steht LongTicket = 0;?

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #7 (permalink)  
Alt 15.02.18
Ceo Ceo ist offline
Mitglied
 
Registriert seit: Jan 2018
Beiträge: 47
Ceo befindet sich auf einem aufstrebenden Ast
Standard

Ach jetzt, ich hab in der Global Variable nur: int LongTicket;
Also würde es das Problem beheben wenn ich: Int LongTicket =0; setzen würde?
  #8 (permalink)  
Alt 15.02.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Also auf jeden Fall behebt es das Problem, dass der EA nicht in die Close-Routine springt. Ob das insgesamt die Problematik behebt, müsste man eruieren, durch komplettes Lesen des Codes.

Wenn die BuyOrder geschlossen ist, müsste nach Deinem Code die Variable LongTicket = 0 gesetzt werden.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #9 (permalink)  
Alt 15.02.18
Ceo Ceo ist offline
Mitglied
 
Registriert seit: Jan 2018
Beiträge: 47
Ceo befindet sich auf einem aufstrebenden Ast
Standard

Würde es dann so funktionieren wenn ich z.b. es so mache, ist der Trade in der History also LongTicket dann setzt ich LongTicket auf 0 und der andere Trade kann dann geschlossen werden?

Code:
   if(OrderSelect(LongTicket,SELECT_BY_POS,MODE_HISTORY)==true)      
      {

         LongTicket = 0;
      }
  #10 (permalink)  
Alt 15.02.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Ja, das wäre eine Möglichkeit.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Thema geschlossen

Lesezeichen

Stichworte
mql4, order bei signal schließen, order schließen, order schließen signal, programmierung, programmierung metatrader, programmierung mql4

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 23:10 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.
-----------------------------------------------------------------------------------------------------------------------------