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: 43249
Benutzer: 7.221
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: Thomas75
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 4 Stunden
- Thomas75
vor 17 Stunden
- JosephTK
vor 2 Tagen
- Hopfen&Mal...
vor 3 Tagen
- frankmicha...
vor einer Woche
- DFeck

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

Empfehlungen

Like Tree1Likes
  • 1 Post By traderdoc
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 08.12.17
Mitglied
 
Registriert seit: Nov 2014
Beiträge: 31
Bucardo befindet sich auf einem aufstrebenden Ast
Standard OCO-Funktion trotz bereits laufender Orders

Moin,

ich arbeite zur Zeit an einem EA der stündlich eine neue BUYSTOP-/ und eine SELLSTOP-Order platziert. Daüfr möchte ich eine OCO-Funktion nutzen. Bisher nutze ich hierzu folgenden Code:

Code:
   for( int h = 0 ; h < OrdersTotal() ; h++ )
   {
    x=OrderSelect( h, SELECT_BY_POS, MODE_TRADES );
    if(OrderSymbol() == Symbol() && OrderType() == OP_BUY)
    {
     for( int i = 0 ; i < OrdersTotal() ; i++ )
     {
      x=OrderSelect( i, SELECT_BY_POS, MODE_TRADES );
      if(OrderSymbol() == Symbol() && OrderType() == OP_SELLSTOP)
      {
       x=OrderDelete(OrderTicket());
      }
     }
    if(OrderSymbol() == Symbol() && OrderType() == OP_SELL)
    {
     for( int j = 0 ; j < OrdersTotal() ; j++ )
     {
      x=OrderSelect( j, SELECT_BY_POS, MODE_TRADES );
      if(OrderSymbol() == Symbol() && OrderType() == OP_BUYSTOP)
      {
       x=OrderDelete(OrderTicket());
      }
     }
    }
   }
  }
Solange immer nur eine Order pro Chart offen ist, (andere Orders von anderen EAs mit eigener MagicNumber mal außen vorgelassen) funktioniert das auch zuverlässig.

Jetzt habe ich allerdings das Problem, dass die letzte aktivierte Order durchaus noch offen sein kann (z.B. aus der Kerzeneröffnung von 9 Uhr) ich aber zur nächsten Kerze wieder die beiden Pending-Orders mit OCO-Funktion platzieren will (z.B. dann um 10 Uhr während der letzte Trade von 9 Uhr noch läuft.) Meine jetzige OCO-FUnktion erkennt dann um um 10 Uhr den noch laufenden Trade und schließt automatisch die entgegen gesetzte PendingOrder obwohl noch keine von beiden gefilled wurde.

Hoffe mich nicht zu kompliziert ausgedrückt zu haben.

Danke für eure Hilfe!

Gruß Bucardo
  #2 (permalink)  
Alt 08.12.17
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Code:
for (int i = OrdersTotal()-1; i >= 0; i--) {
   int candle_marketorder;
   bool res;

   if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
         if (OrderType() == OP_BUY) {
            candle_marketorder = iBarShift(NULL, 0, OrderOpenTime());
            for (int j = OrdersTotal()-1; j >= 0; j--) {
               if (OrderSelect(j, SELECT_BY_POS, MODE_TRADES)) {
                  if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
                     if (OrderType() == OP_SELLSTOP) {
                        if (candle_marketorder == iBarShift(NULL, 0, OrderOpenTime())) {
                           res = OrderDelete(OrderTicket());
                           break;
                        }
                     }
                  }
               }
            }
            continue;
         }
         if (OrderType() == OP_SELL) {
            candle_marketorder = iBarShift(NULL, 0, OrderOpenTime());
            for (int j = OrdersTotal()-1; j >= 0; j--) {
               if (OrderSelect(j, SELECT_BY_POS, MODE_TRADES)) {
                  if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
                     if (OrderType() == OP_BUYSTOP) {
                        if (candle_marketorder == iBarShift(NULL, 0, OrderOpenTime())) {
                           res = OrderDelete(OrderTicket());
                           break;
                        }
                     }
                  }
               }
            }
         }
      }
   }
}
Ich habe den Code jetzt nicht getestet, bin aber froher Hoffnung.

traderdoc
Bucardo likes this.
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #3 (permalink)  
Alt 30.12.17
Mitglied
 
Registriert seit: Nov 2014
Beiträge: 31
Bucardo befindet sich auf einem aufstrebenden Ast
Thumbs up

Tut mir leid, dass ich mich erst so spät wieder melde.

Vielen Danke an traderdoc für die Lösung meines Problems!
Thema geschlossen

Lesezeichen

Stichworte
funktion, mql4, oco, oco funktion, oco order, 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 16:00 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.
-----------------------------------------------------------------------------------------------------------------------------