Wenn du sauber programmieren willst, solltest auf jeden Fall Fehler abfangen und deinen EA entsprechend reagieren lassen. Es gibt jede Menge mögliche Fehler.
Das sind nur die Fehler, die der Trade Server zurückgeben kann (aus stderror.mqh):
Code:
//--- errors returned from trade server
#define ERR_NO_ERROR 0
#define ERR_NO_RESULT 1
#define ERR_COMMON_ERROR 2
#define ERR_INVALID_TRADE_PARAMETERS 3
#define ERR_SERVER_BUSY 4
#define ERR_OLD_VERSION 5
#define ERR_NO_CONNECTION 6
#define ERR_NOT_ENOUGH_RIGHTS 7
#define ERR_TOO_FREQUENT_REQUESTS 8
#define ERR_MALFUNCTIONAL_TRADE 9
#define ERR_ACCOUNT_DISABLED 64
#define ERR_INVALID_ACCOUNT 65
#define ERR_TRADE_TIMEOUT 128
#define ERR_INVALID_PRICE 129
#define ERR_INVALID_STOPS 130
#define ERR_INVALID_TRADE_VOLUME 131
#define ERR_MARKET_CLOSED 132
#define ERR_TRADE_DISABLED 133
#define ERR_NOT_ENOUGH_MONEY 134
#define ERR_PRICE_CHANGED 135
#define ERR_OFF_QUOTES 136
#define ERR_BROKER_BUSY 137
#define ERR_REQUOTE 138
#define ERR_ORDER_LOCKED 139
#define ERR_LONG_POSITIONS_ONLY_ALLOWED 140
#define ERR_TOO_MANY_REQUESTS 141
#define ERR_TRADE_MODIFY_DENIED 145
#define ERR_TRADE_CONTEXT_BUSY 146
#define ERR_TRADE_EXPIRATION_DENIED 147
#define ERR_TRADE_TOO_MANY_ORDERS 148
#define ERR_TRADE_HEDGE_PROHIBITED 149
#define ERR_TRADE_PROHIBITED_BY_FIFO 150
Such dir raus, auf welche du reagieren willst. Auf die Konsole ausgeben solltest die immer. Dann siehst nämlich, was falsch läuft.
Nach Order-Eröffnung z.B. so:
Code:
if(Ticketnummer == -1)
{
FehlerCode = GetLastError();
string FehlerBeschreibung = ErrorDescription(FehlerCode);
string FehlerAusgabe = StringConcatenate(FehlerCode," ",FehlerBeschreibung);
Print(FehlerAusgabe);
}