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)
-   -   Pending-Order in eine Richtung zweimal geöffnet (http://www.expert-advisor.com/forum/showthread.php?t=1350)

Privex_MT 01.04.11 13:06

Pending-Order in eine Richtung zweimal geöffnet
 
Hallo, ich bins mal wieder.

Habe folgendes Problem. Wenn ich zwei Pending-Order (BUYSTOP und SELLSTOP) in Auftrag gebe, dann führt er mir zweimal die BUYSTOP aus und die SELLSTOP bleibt auf der Strecke, wieso ist das so?

Ich versuche natürlich im Code abzufragen, ob eine Order geöffnet ist, wenn nicht also "OrdesTotal() == 0" dann soll er jeweils eine BUYSTOP und eine SELLSTOP öffnen. Aber dann halt der Fehler.

Meine Code sieht folgendermaßen aus:
Code:

if OrdersTotal() == 0                // Wenn keine Orders offen sind, dann sollen eine BuyStop und eine SellStop gesetzt werden
{
        ticket = OrderSend(Symbol(), OP_BUYSTOP, Lots, current_aprice, 3, limit_down, limit_up, “BuyStop”, 13579, 0, Green);
        ticket = OrderSend(Symbol(), OP_SELLSTOP, Lots, current_bprice, 3, limit_up, limit_down, “SellStop”, 13579, 0, Green);
       
        if (ticket < 0)
        {
                Print(“OrderSend fehlgeschlagen: Errorcode # „, GetLastError());
                Return(0);
        }
}

Danke für eure Hilfe!

Gruß

Privex_MT

Bohne 01.04.11 23:00

Das kann ich mir jetzt auch nicht direkt erklären, Versuch doch einfach mal folgendes.

Das mit if ticket ist ein wenig komisch, du gibst 2 aufträge raus aber vergleichts ob nur eine Order offen ist da ticket größer null ist. Ok das ist hier nicht so ganz wichtig. Ist ja nur für die Erkennung.
Es kann nämlcih passieren das er eine Order Aufgibt und bei der zweiten der tradekontext busy ist. Dann hast du nur eine order offe, obwohl du eigentlich 2 haben wolltest.

Versuch immer mit <= oder >= zu arbeiten anstatt ==...
machmal stockt es hier auch ein wenig. Sowas ist mir auch auch schon mal passiert.

Lass die beiden Order nicht untereinander laufen sondern lass ein anderen Programmierabschnitt zwischen laufen.
Zitat:

{
ticket = OrderSend(Symbol(), OP_BUYSTOP, Lots, current_aprice, 3, limit_down, limit_up, “BuyStop”, 13579, 0, Green);
if (ticket < 0)
{
Print(“OrderSend BuyStop fehlgeschlagen: Errorcode # „, GetLastError());
Return(0);
}
ticket = 0;

ticket = OrderSend(Symbol(), OP_SELLSTOP, Lots, current_bprice, 3, limit_up, limit_down, “SellStop”, 13579, 0, Green);

if (ticket < 0)
{
Print(“OrderSend OP_SELLSTOP fehlgeschlagen: Errorcode # „, GetLastError());
Return(0);
}
}
Auch hier hat es ein wenig schwächen, den wenn die 2 order nicht offen ist wird der prpgrammabschnitt unterbrochen und du haast wieder nur eine Order offen. Aber versuche es ersrtmal so mal schauen ob er dann 2 order BUY und Sellstop aufgibt.


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:54 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