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: 43268
Benutzer: 7.224
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 15 Stunden
- Sundaytrad...
vor 22 Stunden
- TS_6
vor 3 Tagen
- Mane
vor 2 Wochen
- AlbertZiz
vor 2 Wochen
- michak

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

Empfehlungen

Like Tree3Likes
  • 1 Post By Adlerauge
  • 1 Post By traderdoc
  • 1 Post By traderdoc
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 22.01.18
Ceo Ceo ist offline
Mitglied
 
Registriert seit: Jan 2018
Beiträge: 47
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);
  #2 (permalink)  
Alt 23.01.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
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.
  #3 (permalink)  
Alt 23.01.18
Ceo Ceo ist offline
Mitglied
 
Registriert seit: Jan 2018
Beiträge: 47
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?
  #4 (permalink)  
Alt 23.01.18
Mitglied
 
Registriert seit: Nov 2015
Beiträge: 136
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.
  #5 (permalink)  
Alt 24.01.18
Ceo Ceo ist offline
Mitglied
 
Registriert seit: Jan 2018
Beiträge: 47
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);
            }
      
      }
  #6 (permalink)  
Alt 24.01.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
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.
  #7 (permalink)  
Alt 24.01.18
Ceo Ceo ist offline
Mitglied
 
Registriert seit: Jan 2018
Beiträge: 47
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?
  #8 (permalink)  
Alt 24.01.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
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.
  #9 (permalink)  
Alt 25.01.18
Ceo Ceo ist offline
Mitglied
 
Registriert seit: Jan 2018
Beiträge: 47
Ceo befindet sich auf einem aufstrebenden Ast
Standard

Hat funktioniert, danke
Thema geschlossen

Lesezeichen

Stichworte
chart, symbol, trade


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