Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4973
Beiträge: 43248
Benutzer: 7.220
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: JosephTK
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 5 Stunden
- JosephTK
vor 2 Tagen
- Hopfen&Mal...
vor 3 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 276
Gesamt: 276
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Like Tree2Likes
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #41 (permalink)  
Alt 23.06.20
Mitglied
 
Registriert seit: Dec 2015
Beiträge: 85
TogoTiger befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von MA-EA Beitrag anzeigen
Anscheinend gibts keinen einzigen Forex Broker, bei dem man ohne größere Unterbrechungen gleichzeitig Long und Short im selben Symbol sein kann. Vielleicht liegts auch am MT4.
Blödsinn, natürlich geht das. Und nochmals Blödsinn, es liegt nicht am MT4.
Such den Fehler in deinem EA. Ende April habe ich dir den ganzen EA so geschickt, dass er funktioniert. Schau doch das mal an.
  #42 (permalink)  
Alt 25.06.20
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Hat der in nem Demo-Konto pausenlos Orders offen gehabt oder nur im Strategietester/Backtest?
  #43 (permalink)  
Alt 25.06.20
Mitglied
 
Registriert seit: Dec 2015
Beiträge: 85
TogoTiger befindet sich auf einem aufstrebenden Ast
Standard

ja, hat er, in einem Demokonto bei JFD.
  #44 (permalink)  
Alt 25.06.20
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Ganz sicher? Hin und wieder hat er auch bei meinen Demo-Tests nach einer Gewinn-Order sofort wieder die Nächste in die selbe Richtung geöffnet, so wie er es eigentlich immer tun soll. Dann wieder dauerts oft 10-20 Min, manchmal über ne halbe Stunde. Mir fiel auf, dass er dann meistens erst zur vollen Stunde die nächste Order öffnet.

Zu diesen Fehler-Codes:
Der EA selbst kann doch bei den Meisten sowieso nix selber machen. Ausser bei IsTradeAllowed() und IsTradeContextBusy(), wo man ihn dann halt kurz mit Sleep() warten lassen kann, gibts doch für die ganzen anderen Fehler keinen Weg, das jeweilige Problem vom EA alleine lösen zu lassen oder doch?
Angehängte Dateien
Dateityp: mq4 LoSh_AlwInv_Dist_V2.mq4 (22,8 KB, 0x aufgerufen)
  #45 (permalink)  
Alt 26.06.20
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);
        }
  #46 (permalink)  
Alt 09.07.20
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Hallo.

Kann man den EA rausfinden lassen, ob der Server momentan überhaupt Orders an nimmt? Ich meine nicht IsTradeContextBusy() oder IsTradeAllowed(). Der EA soll prüfen, ob der Broker gerade generell Orders ausführt und wenn nicht, es von Zeit zu Zeit wieder prüfen. Wenn ja, soll der EA seine Orders senden wie sonst auch.
Angehängte Dateien
Dateityp: mq4 LoSh_AlwInv_Dist_v4.mq4 (26,3 KB, 1x aufgerufen)
  #47 (permalink)  
Alt 12.07.20
Neues Mitglied
 
Registriert seit: Jul 2020
Beiträge: 27
Anja befindet sich auf einem aufstrebenden Ast
Standard

Warum verwendest du so oft Sleep? Und warum so eine hohe Preisabweichung? Slippage=99999999;

Empfohlen wird hier meist 3 für Slippage:
https://docs.mql4.com/trading/ordersend
  #48 (permalink)  
Alt 12.07.20
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Moin.

Gibt wohl keine Möglichkeit, rauszufinden, ob der Broker gerade überhaupt Orders an nimmt oder nicht. Oder geht das vielleicht über Pending-Orders? Wenn er die annimmt, kann man sie ja gleich wieder löschen und dann die eigentlichen Markt-Orders raus schicken.

Anfängerfrage:Kann man eigentlich mehrere Orders auf einmal auswählen und vergleichen? Oder geht es nur mit mehreren Schleifen?
Code:
extern string esMOBSC1="Max Orders";
extern string esMOBSC2="Sell / Buy";
extern string esMOBSC3="concurrently";

extern int MOBSC_Def=0; // Default Wert

extern int MOBSC_Sel=0; // Start-Werte.
extern int MOBSC_Buy=0; // Werden gleich nach OrderSend mit "++" erhöht.

extern int MOBSC_Max_Sel=2;
extern int MOBSC_Max_Buy=2;
Code:
extern double Def_Lots=0.01;

extern double LotsSel=0.01;
extern double LotsBuy=0.01;

extern string esLPOCP1="Lots Buy / Lots Sell";
extern string esLPOCP2="+ LotsPlus";
extern string esLPOCP3="if Order close";
extern string esLPOCP4="with Profit";

extern double LotsPlus=0.01;
Code:
for(int j=OrdersTotal()-1;j>=0;j--){
   if(OrderSelect(j,SELECT_BY_POS)){
    if(OrderSymbol()==Symbol()){
      if(OrderMagicNumber()==MN_Sel){
        if( CLsel_D < OrderOpenPrice() ){
          if(IsTradeAllowed()==true)OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Red);
          if(IsTradeContextBusy()==true)Sleep(Sl_MS);
          LotsSel = OrderLots() + LotsPlus;


          if(MOBSC_Sel>=MOBSC_Max_Sel){
            for(int k=OrdersTotal()-1;k>=0;k--){
              if(OrderSelect(k,SELECT_BY_POS)){
                if(OrderSymbol()==Symbol()){
                  if(OrderMagicNumber()==MN_Buy){
                    if(IsTradeAllowed()==true)OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Red);
                    if(IsTradeContextBusy()==true)Sleep(Sl_MS);
                    MOBSC_Sel=MOBSC_Def;
                    MOBSC_Buy=MOBSC_Def;
                    LotsSel=Def_Lots;
                    LotsBuy=Def_Lots;

} } } } } } } } } }


//////////////////////////////////////////////////////////////////////////////////////////////////////////////


//Die eigentliche Buy-Order auswählen:
for(int l=OrdersTotal()-1;l>=0;l--){
  if(OrderSelect(l,SELECT_BY_POS)){
    if(OrderSymbol()==Symbol()){
      if(OrderMagicNumber()==MN_Buy){
        if( CLbuy_D > OrderOpenPrice() ){
          if(IsTradeAllowed()==true)OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Red);
          if(IsTradeContextBusy()==true)Sleep(Sl_MS);
          LotsBuy = OrderLots() + LotsPlus;


          if(MOBSC_Buy>=MOBSC_Max_Buy){
            for(int m=OrdersTotal()-1;m>=0;m--){
              if(OrderSelect(m,SELECT_BY_POS)){
                if(OrderSymbol()==Symbol()){
                  if(OrderMagicNumber()==MN_Sel){
                    if(IsTradeAllowed()==true)OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Red);
                    if(IsTradeContextBusy()==true)Sleep(Sl_MS);
                    MOBSC_Sel=MOBSC_Def;
                    MOBSC_Buy=MOBSC_Def;
                    LotsSel=Def_Lots;
                    LotsBuy=Def_Lots;

 } } } } } } } } } }
Angehängte Dateien
Dateityp: mq4 LoSh_AlwInv_Dist_v4.mq4 (26,3 KB, 1x aufgerufen)
  #49 (permalink)  
Alt 12.07.20
Benutzerbild von Indikator-Trading
Premium Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 345
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

Wenn du den EA so nutzt, wie du ihn hier geteilt hast, dann musst du unbedingt die Einstellung zur Slippage anpassen. Der Wert steht auf 99999999 und dann werden die Orders nicht gelöscht, da das kein Wert ist, der irgend einen Sinn ergibt, zumindest für meinen Broker.

Zitat:
Gibt wohl keine Möglichkeit, rauszufinden, ob der Broker gerade überhaupt Orders an nimmt oder nicht.
Wieso gehst du überhaupt davon aus das dein Broker keine Orders annehmen wird?

Zitat:
Anfängerfrage:Kann man eigentlich mehrere Orders auf einmal auswählen und vergleichen? Oder geht es nur mit mehreren Schleifen?
Ich wüsste keine andere Möglichkeit als das mit einer Schleife zu lösen.

Generell:
Der Hedging EA zeigt bei mir nicht gerade großartige Performance. Hast du einen Markt + Settings die du nutzt?
Ich halte von Hedging in ein und dem selben Markt allerdings nichts. Der einzige der sich da freuen kann ist der Broker, da du ja gleich min. zweimal im Markt bist und auch doppelt Spread+Kommission bezahlen darfst.
  #50 (permalink)  
Alt 12.07.20
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Zum Prinzip noch mal kurz:

Es sollen im selben Symbol eine Sell und auch eine Buy-Order geöffnet werden. Wenn Eine davon einen bestimmten Gewinn erreicht, wird sie geschlossen. Die Order der anderen Richtung bleibt offen. Gleich nach dem Schließen der Gewinn-Order soll eine Weitere mit dem selben Gewinn-Ziel, aber mehr Lot raus geschickt werden. Erreicht diese auch wieder ihr Gewinn-Ziel, soll sie und auch die Verlust-Order geschlossen werden. Wenns gut läuft, holen die beiden Gewinn-Orders die Spreads, Verlust der Verlust-Order und ein paar Pipen Gewinn. Nicht viel, es geht aber auch nicht darum, dick abzustauben. Sondern mit kleinem Risiko immer wieder ein paar Pipen Gewinn zu machen. Das Gute ist eben, dass es egal ist, in welche Richtung das Symbol() geht. Hauptsache es ist genug Bewegung drin, um immer wieder, wenn auch kleine, Gewinne bei möglichst kleinem Risko zu machen.

Ich probiere im Demo-Konto schon seit weiß ich wie lange rum. Wäre der EA ständig mit Sells und Buys investiert, wie er soll, würde es gut laufen. Aber er braucht immer wieder lange, um die nächste Order zu öffnen. Also hab ich die Version 4 gemacht, die derzeit höchstens 2 Orders nacheinander in die selbe Richtung schickt, nach der 1. Gewinn-Order die Lots erhöht, nach der 2. Gewinn-Order Alles schließt und auf Anfangswerte zurück setzt. Aber auch da gibts immer wieder lange "Pausen". Bei AdmiralMarkets, JFD und ActivTrades.

Backtests sind nur gut, um zu prüfen, ob das Ding überhaupt macht, was es soll. Apropo, die Version im Anhang hab ich noch gar nicht getestet.
Angehängte Dateien
Dateityp: mq4 LoSh_AlwInv_Dist_v4_ohneCAA.mq4 (24,3 KB, 2x aufgerufen)
Thema geschlossen

Lesezeichen

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 03:35 Uhr.





Suchmaschine - Reisen - Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------