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)
-   -   Probleme mit Ausführung im Code (http://www.expert-advisor.com/forum/showthread.php?t=7389)

Alex60 05.02.24 11:07

Probleme mit Ausführung im Code
 
Hi,

ich habe einen Code geschrieben. Es soll jeden Tag um 17.30 ein trade eröffnet werden buy. Dieser soll am nächsten Tag um 8.50 Uhr geschlossen werden.
Im Backtest wird mir jedoch nur ein Trade eröffnet in nem Zeitraum von 2 Monaten und nicht geschlossen am nächsten Tag
Kann da mal wer über den Code schauen?

Code:

// Handelszeiten
input int      openHour = 17;
input int      openMinute = 30;
input int      closeHour = 8;
input int      closeMinute = 50;

// Globale Variable für die Handelsaktivität
bool canOpenTrade = true;

int start() {
    // Überprüfe, ob es Zeit ist, einen Trade zu eröffnen
    if (canOpenTrade && Hour() == openHour && Minute() == openMinute) {
        // Eröffne einen Kauf-Trade
        int ticket = OrderSend(Symbol(), OP_BUY, lotSize, Ask, 3, 0, 0, "Buy Order", 0, 0, Green);
        if (ticket > 0) {
            canOpenTrade = false; // Setze die Variable auf false, um weitere Trades zu verhindern
            Print("Kauf-Trade erfolgreich eröffnet. Ticket: ", ticket);
        } else {
            Print("Fehler beim Öffnen des Kauf-Trades. Fehlercode: ", GetLastError());
        }
    }

    // Überprüfe, ob es Zeit ist, den Trade zu schließen
    if (!canOpenTrade && Hour() == closeHour && Minute() == closeMinute) {
        // Schließe alle offenen Trades
        for (int i = OrdersHistoryTotal() - 1; i >= 0; i--) {
            if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderSymbol() == Symbol() && OrderMagicNumber() == 0) {
                bool closed = OrderClose(OrderTicket(), OrderLots(), Bid, 3, Red);
                if (closed) {
                    canOpenTrade = true; // Setze die Variable auf true, um am nächsten Tag einen neuen Trade zu ermöglichen
                    Print("Trade erfolgreich geschlossen.");
                } else {
                    Print("Fehler beim Schließen des Trades. Fehlercode: ", GetLastError());
                }
            }
        }
    }

    return 0;
}


traderdoc 05.02.24 23:45

for (int i = OrdersHistoryTotal() - 1; i >= 0; i--) {

ersetzen durch

for (int i = OrdersTotal() - 1; i >= 0; i--) {

"Setze die Variable auf true, um am nächsten Tag einen neuen Trade zu ermöglichen"

Da 08:50 geschlossen wurde und die Variable canOpenTrade = true; ist, würde am selben Tag um 17:30 wieder ein Trade geöffnet werden.

traderdoc

Alex60 08.02.24 07:06

Super Danke dir


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