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: 43254
Benutzer: 7.220
Aktive Benutzer: 81
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 9 Stunden
- JosephTK
vor 2 Tagen
- Hopfen&Mal...
vor 3 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107

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

Empfehlungen

Like Tree3Likes
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 06.01.19
Neues Mitglied
 
Registriert seit: Jan 2019
Beiträge: 12
dd2509 befindet sich auf einem aufstrebenden Ast
Smile Ausführen von Buy und Sell Order nacheinander

Hallo liebe Traderfreunde,
ich bin neu in der Welt des MQL 4 Programmierens. Ich möchte ein Programm schreiben, dass mir einfach nacheinander Buy und Sell Order ausführt. Wenn eine Buy Order ausgeführt ist dann möchte ich danach eine Sell Order ausführen. Leider führt der Code nur die Buy Orders in der richtigen Reihenfolge aus, sobald ich den OP_BUY Befehl durch OP_SELL ersetze funkt garnichts mehr
Was kann ich machen ?

extern int TP = 20;
extern int SL = 10;


void OnTick()
{
if(OpenPosCount(OP_BUY)==0){
OrderSend (Symbol(), OP_BUY,0.0, Price, 3, Price-SL*10*Point,Price+TP*10*Point, "MarketOrder", 123456, 0, Blue);
}
if(OpenPosCount(OP_BUY)==1){
OrderSend (Symbol(), OP_BUY,0.00, Price, 3, Price-SL*10*Point,Price1+TP*10*Point, "MarketOrder", 123456, 0, Blue);
}
if(OpenPosCount(OP_BUY)==2){
OrderSend (Symbol(), OP_BUY,0.00, Price, 3, Price-SL*10*Point,Price+TP*10*Point, "MarketOrder", 123456, 0, Blue);
}
}
int OpenPosCount(int Orderart)
{
int OffenePositionen=0;
for (int x=0;x<=OrdersTotal()-1;x++)
{
if (OrderSelect(x,SELECT_BY_POS)==true)
{

if(OrderSymbol()==Symbol()&&OrderType()==Orderart)
OffenePositionen++;}}
return(OffenePositionen);
}


Nette Grüße
dd
  #2 (permalink)  
Alt 06.01.19
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Beides öffnen, wenn gar nix offen ist. z.B.
Code:
for(i=OrdersTotal()-1;i>=0;i--) {
  if(OrderSelect(i,SELECT_BY_POS)) {
    if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MN&&OrderSymbol()==Symbol())bool Buy_Mark_inv=true;
    if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_MN&&OrderSymbol()==Symbol())bool Sel_Mark_inv=true; } }
Code:
if( ... Buy_Mark_inv==false && Sel_Mark_inv==false ) {

  if( Buy==true )OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Buy_SL,Buy_TP,0,Buy_MN,0,MediumBlue);

  if( Sell==true )OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Sel_SL,Sel_TP,0,Sell_MN,0,BurlyWood); }
dd2509 likes this.
  #3 (permalink)  
Alt 06.01.19
Neues Mitglied
 
Registriert seit: Jan 2019
Beiträge: 12
dd2509 befindet sich auf einem aufstrebenden Ast
Standard D

Ich verstehe gerad garnchts...

Ich möchte bei einem bestimmten Preis eine Buy Order öffnen, nur wenn diese geöffnet ist, möchte ich bei einem bestimmten Preis eine Sell Order öffnen... nicht beide gleichzeitig sondern nacheinander

gruß
  #4 (permalink)  
Alt 06.01.19
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Ach so. Dann probier Stop- oder Limit.


https://docs.mql4.com/trading/ordersend


https://docs.mql4.com/constants/trad...rderproperties
dd2509 likes this.
  #5 (permalink)  
Alt 06.01.19
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von dd2509 Beitrag anzeigen
..., sobald ich den OP_BUY Befehl durch OP_SELL ersetze funkt garnichts mehr
Was kann ich machen ?
Du mußt nicht nur OP_BUY durch OP_SELL ersetzen, sondern auch die SL und TP umkehren.
Und wenn direkt nach der 1. Buy Order eine 1. Sell Order rausgehen soll, mußt Du sehen, ob Dein OpenPosCount(OP_BUY)==1 ist und dann den 1. Verkauf senden. AVT
dd2509 likes this.
  #6 (permalink)  
Alt 06.01.19
Neues Mitglied
 
Registriert seit: Jan 2019
Beiträge: 12
dd2509 befindet sich auf einem aufstrebenden Ast
Standard

Super Danke...
Jetzt führt er mir die erste Sell Position nach der ersten Buy Position aus, leider dann aber die Sell Position mehrfach gleichzeitig... also nicht nur eine Sell Position

if(OpenPosCount(OP_BUY)==0){

OrderSend (Symbol(), OP_BUY,0.10, Price, 3, Price-SL*10*Point,Price+TP*10*Point, "MarketOrder", 123456, 0, Blue);

}
if(OpenPosCount(OP_BUY)==1){

OrderSend (Symbol(), OP_SELL,0.1, Price1, 3, Price1+SL*10*Point,Price1-TP*10*Point, "MarketOrder", 123456, 0, Red);

} if(OpenPosCount(OP_SELL)==1){

OrderSend (Symbol(), OP_BUY,0.1, Price, 3, Price-SL*10*Point,Price+TP*10*Point, "MarketOrder", 123456, 0, Blue);
  #7 (permalink)  
Alt 06.01.19
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Was soll das Ganze überhaupt werden? Willst Du ständig Orders offen haben? Dann öffne mehrere Stop-Orders, jeweils mit eigener MN, eigenem Price, usw.
  #8 (permalink)  
Alt 06.01.19
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Gut, dann will ich mal zwischengrätschen:
Als Erstes solltest Du Dir bitte angewöhnen, den Code über den Button # zu schreiben, damit man den besser lesen kann.

Wenn Du wirklich nur nach dem Öffnen der ersten! BuyOrder eine erste SellOrder öffnen willst, dann geht da ganz einfach so:
Code:
if (!OrderCheck()) {
   bool res = OrderSend (Symbol(), OP_BUY, 0.1, Ask, 3, NormalizeDouble(Ask-SL*10*Point, Digits), NormalizeDouble(Ask+TP*10*Point, Digits), "MarketOrder", 123456, 0, Blue);
   if (res) {
      OrderSend (Symbol(), OP_SELL, 0.1, Bid, 3, NormalizeDouble(Bid+SL*10*Point, Digits), NormalizeDouble(Bid-TP*10*Point, Digits), "MarketOrder", 123456, 0, Red);
   }
}

bool OrderCheck() {
   for (int x=0; x<=OrdersTotal()-1; x++) {
      if (OrderSelect(x, SELECT_BY_POS)) {
         if (OrderSymbol()== Symbol()) {
         return(true);
      }
   }
   return(false);
}
traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #9 (permalink)  
Alt 06.01.19
Neues Mitglied
 
Registriert seit: Jan 2019
Beiträge: 12
dd2509 befindet sich auf einem aufstrebenden Ast
Standard

ich glaube ich brauche 2 Zählschleifen, eine für die Buy und eine für die Sell Orders...
  #10 (permalink)  
Alt 06.01.19
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Das hängt jetzt ganz davon ab, was Du eigentlich wirklich wolltest.
Ich habe die Erfahrung über meine jahrelange Auftragsprogrammierung gesammelt, dass sich sehr häufig die Kunden nicht exakt genug ausgedrückt haben und damit etwas anderes programmiert wurde als angedacht.

Daher nochmals mein Appell an alle Fragenden: Überlegt Euch im Vorfeld ganz, ganz genau, was Ihr tatsächlich erreichen wollt.

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

Lesezeichen

Stichworte
order management

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 07:43 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.
-----------------------------------------------------------------------------------------------------------------------------