Thema: Hedge EA
Einzelnen Beitrag anzeigen
  #45 (permalink)  
Alt 26.06.20
TogoTiger TogoTiger ist offline
Mitglied
 
Registriert seit: Dec 2015
Beiträge: 85
TogoTiger befindet sich auf einem aufstrebenden Ast
Standard

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);
        }