Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   EA Feststellen ob eine offene Position zu dem Kurs bereits existiert? (http://www.expert-advisor.com/forum/showthread.php?t=1776)

forexAlexPH 23.12.11 03:42

EA Feststellen ob eine offene Position zu dem Kurs bereits existiert?
 
Hallo,

Ich habe einen EA zusammen gebastelt. Bei einer bestimmten Konstellation öffnet der EA einen Trade. Nun sollte aber bevor der Trade geöffnet wird, überprüft werden, ob zu dem Kurs bereits ein Trade im Markt ist. Wenn ja, soll der gleiche Trade nicht noch einmal geöffnet werden.

Aktuell sieht der Codeblock wie folgt aus:

Code:

// Feststellen ob zum Preis schon eine offene Order existiert
for(int ij = 0; ij < OrdersTotal( ); ij++)
  if(OrderSelect(ij, SELECT_BY_POS, MODE_TRADES) == true) {
      if(OrderSymbol() == Symbol())
        if(OrderOpenPrice() == Ask)
            OrderinMarket = true;
    } else {
            OrderinMarket = false;
    }
// - End check order in market ----------------------

  if(Entertradebuy==1  && OrderinMarket==false)
  {
  double Ticket1 = OrderSend(Symbol(), OP_BUY, Lots, Ask, slip, 0, Ask+TP*Point, "Buy(#" + 1 + ")", 1, 0, DodgerBlue) ;       
  }

  if(Entertradesell==1  && OrderinMarket==false)
  {
  double Ticket2 = OrderSend(Symbol(), OP_SELL, Lots, Bid, slip, 0, Bid-TP*Point, "Sell(#" + 1 + ")", 1, 0, DeepPink) ;
  }

Aber irgend wo ist da der Hund begraben. Das funktioniert beim ersten Öffnen der Order Problemlos. Schließt dann die Order im Gewinn, der Kurs lauft zurück und sollte zum gleichen Kurs nochmals die gleiche Order absetzen geschieht nichts. Ich vermute mal es wird dann vom EA angenommen, dass bereits eine Order im Markt ist.

Hat da jemand eine Lösung für das Problem?

Bohne 23.12.11 10:05

was meinst du mit dem gleichem Trade. MEinst du damit das Urprungsignal, was die erst Oorder aufgemacht hat.
Ansosnten könntest du ja auch in Comments deine Signale-Strategy abrufen, und gezielt danach filtern.

ich hätte die erst passage auch ein wenig anders geschrieben. Ungefähr so.
Veruschs mal mit einer direkten und gezielten Rücksetzung der Variable wie unten.

OrderinMarket = false;
for(int ij = 0; ij < OrdersTotal( ); ij++)
{
if(OrderSelect(ij, SELECT_BY_POS, MODE_TRADES) == true)
{
if(OrderSymbol() == Symbol())
if(OrderOpenPrice() == Ask) OrderinMarket = true;
}
}

// - End check order in market ----------------------

if(Entertradebuy!=0 && OrderinMarket!) usw...

naranjoe 04.01.12 21:49

Setzt du denn auch "OrderinMarket" wieder auf false
wenn eine Order im Gewinn geschlossen wurde?


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:39 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum