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: 3964
Beiträge: 37811
Benutzer: 6.250
Aktive Benutzer: 404
Links: 80
Wir begrüßen unseren neuesten Benutzer: tagtrampler
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor einem Tag
- tagtrample...
vor 2 Tagen
- s62
vor 3 Tagen
- HoigerHL69
vor 3 Tagen
- sergej_bln
vor 5 Tagen
- metatrader...

Onlineuser
'Wer ist online' anzeigen Benutzer: 1
Gäste: 38
Gesamt: 39
Team: 0
Team:  
Benutzer:  Domke01
Freunde anzeigen

Empfehlungen

Like Tree3Likes
  • 1 Post By Adlerauge
  • 1 Post By traderdoc
  • 1 Post By traderdoc
Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 22.01.18
Ceo Ceo ist offline
Mitglied
 
Registriert seit: Jan 2018
Beiträge: 32
Ceo befindet sich auf einem aufstrebenden Ast
Standard 2 Trades 2 Charts

Hallo, ich brauch mal Hilfe und zwar habe ich 2 Probleme bei meinem Expert Advisor.

1. Ich möchte z.b. im EUR/USD und im USD/CHF 2 Trades platzieren haben, wie mach ich das im Code?

2. Wenn z.b. die Gesamtsumme von denn 2 Trades 20€ Beträgt wie kann ich beide Orders schließen?



zu 1: Wie schreib ich beim "Symbol()" EUR/USD rein? Damit er nur in diesem Chart ein Trade macht und natürlich auch im USD/CHF


Code:
BuyTicket = OrderSend(Symbol(),OP_BUY,1,Ask,3,stoploss,takeprofit,"My Order",1200,0,clrGreen);
Mit Zitat antworten
  #2 (permalink)  
Alt 23.01.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.007
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

BuyTicket = OrderSend("EURUSD", OP_BUY,1,Ask....


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

Und wie setze ich das um wenn z.b. beide Trades in der Summe zusammen bei 20€ sind das alle Orders geschlossen werden?
Mit Zitat antworten
  #4 (permalink)  
Alt 23.01.18
Mitglied
 
Registriert seit: Nov 2015
Beiträge: 114
Adlerauge befindet sich auf einem aufstrebenden Ast
Standard

Na, die gewünschten Orders mit OrderSelect in der üblichen for-Schleife auswählen, jeweils den OrderProfit() auslesen, zusammenzählen, und wenn der dann >= 20 ist, mit OrderClose die gewünschten Orders schliessen.
Wenn Du sonst keine Orders öffnest, ist es einfacher, dann brauchst Du nicht mit OrderTicket oder Magicnumber zu arbeiten.
Lampe likes this.
Mit Zitat antworten
  #5 (permalink)  
Alt 24.01.18
Ceo Ceo ist offline
Mitglied
 
Registriert seit: Jan 2018
Beiträge: 32
Ceo befindet sich auf einem aufstrebenden Ast
Standard

Ich würde gerne mit MagicNumber arbeiten da ich später mehrere Trades Öffnen möchte und alle für sich berechnen möchte. Ich hab es mir jetzt so vorgestellt. Nur wie schließe ich beide Trades geht es über die MagicNumber?




Code:
      OrderMagicNumber() == MagicNumber && MagicNumber1);
      {
         if(OrderProfit() > Profit)
            {
            
               OrderClose(OrderTicket(),Lots,price,slippage,clrBlue);
            }
      
      }
Mit Zitat antworten
  #6 (permalink)  
Alt 24.01.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.007
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Code:
profit = 0;
for (int i = OrdersTotal()-1; i >= 0; i--) {
   if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderMagicNumber() == MagicNumber_EURUSD || OrderMagicNumber() == MagicNumber_USDCHF) {
         if (OrderSymbol() == "EURUSD" || OrderSymbol() == "USDCHF") {
            profit += OrderProfit() + OrderSwap() + OrderCommission();
         }
      }
   }
}
if (profit >= 20) {
   bool result = false;
   for (int i = OrdersTotal()-1; i >= 0; i--) {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderMagicNumber() == MagicNumber_EURUSD) {
            if (OrderSymbol() == "EURUSD") {
               if (OrderType() ==OP_BUY)  result = OrderClose(OrderTicket(), OrderLots(), MarketInfo("EURUSD", MODE_BID), 0, Red);
               if (OrderType() ==OP_SELL) result = OrderClose(OrderTicket(), OrderLots(), MarketInfo("EURUSD", MODE_ASK), 0, Red);
            }
         }
         if (OrderMagicNumber() == MagicNumber_USDCHF) {
            if (OrderSymbol() == "USDCHF") {
               if (OrderType() ==OP_BUY)  result = OrderClose(OrderTicket(), OrderLots(), MarketInfo("USDCHF", MODE_BID), 0, Red);
               if (OrderType() ==OP_SELL) result = OrderClose(OrderTicket(), OrderLots(), MarketInfo("USDCHF", MODE_ASK), 0, Red);
            }
         }
      }
   }
}
Das ist die Sicherheitsvariante, falls mit je einer! MagicNumbers gearbeitet wird und das Schließen selbst aus irgendeinem Chart heraus erfolgt.

Im Prinzip kann die "gleichzeitige" Schließerei von Orders verschiedener Währungspaare und das noch mit verschiedenen MagicNumbers zur Herausforderung werden, denn jeder EA eines Charts wird nur die Eigenschaften des EAs berücksichtigen, die auch dort drin stehen. D.h. sieht der EA beim Schließen einer EURUSD-Order die MagicNumber 12345 in den Eigenschaften, dann wird er auch diese Order berücksichtigen, aber eben keine EURUSD-Order mit der MagicNumber 23456! D.h. will man die Orders verschiedener Währungspaare mit unterschiedlichen MagicNumbers hinsichtlich des "gleichzeitigen" Schließens verwalten, dann bietet sich ein 2. EA auf einem nicht benutzten Chart an, der nur die Orderschließung berücksichtigt. Damit der EA tickunabhängig arbeitet wird die Timerfunktion auf 1 Sekunde oder kürzer gestellt.

Um zu einer optimalen Lösung bei Dir zu gelangen, wäre es jedoch notwendig, zu erfahren, was Du genau erreichen willst.

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

Ich will ein Ea programmieren der einmal Kauf und einmal verkauft, wenn die Signale da sind. Sollte dann die Summe der beiden Orders im plus sein werden die Orders geschlossen und ich bin im Gewinn natürlich dasselbe mit Verlust. Als Beispiel:


EURUSD + 25€
USDCHF - 5€
Gesamtsumme: 20€

Also die Orders werden geschlossen und ich bin im Gewinn.



Sollte ich dann einen extra EA programmieren um die Orders zu schließen oder würde es gehen wenn ich nur eine OnStart() Funktion hinzufüge in einem Ea?
Mit Zitat antworten
  #8 (permalink)  
Alt 24.01.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.007
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Ok, dann vereinfache ich das mal auf Deinen speziellen Fall.

Code:
double profit = 0;
for (int i = OrdersTotal()-1; i >= 0; i--) {
   if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol() == "EURUSD" || OrderSymbol() == "USDCHF") {
         profit += OrderProfit() + OrderSwap() + OrderCommission();
      }
   }
}
if (profit >= 20) {
   bool result = false;
   for (int i = OrdersTotal()-1; i >= 0; i--) {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol() == "EURUSD") {
            if (OrderType() ==OP_BUY)  result = OrderClose(OrderTicket(), OrderLots(), MarketInfo("EURUSD", MODE_BID), 0, Red);
            if (OrderType() ==OP_SELL) result = OrderClose(OrderTicket(), OrderLots(), MarketInfo("EURUSD", MODE_ASK), 0, Red);
         }
         if (OrderSymbol() == "USDCHF") {
            if (OrderType() ==OP_BUY)  result = OrderClose(OrderTicket(), OrderLots(), MarketInfo("USDCHF", MODE_BID), 0, Red);
            if (OrderType() ==OP_SELL) result = OrderClose(OrderTicket(), OrderLots(), MarketInfo("USDCHF", MODE_ASK), 0, Red);
         }
      }
   }
}
OnStart() kann man nur in einem Script benutzen, und wenn sich das bei Dir nur auf zwei Paare beschränkt, lohnt sich auch nicht ein separater EA.

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

Hat funktioniert, danke
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
chart, symbol, trade


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:34 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.
-----------------------------------------------------------------------------------------------------------------------------