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: 43251
Benutzer: 7.219
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: Hopfen&Malz
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einem Tag
- Hopfen&Mal...
vor 2 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107
vor 2 Wochen
- rg-trader

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

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 28.02.21
Mitglied
 
Registriert seit: Sep 2011
Beiträge: 55
derumuro befindet sich auf einem aufstrebenden Ast
Standard warte x Bars bevor neue Order öffnet

Hi,

nachdem eine Order geschlossen wurde, soll die Nächste erst nach x Bars eröffnet werden.
Wie programmiert man das ?

Danke schon mal im voraus!
  #2 (permalink)  
Alt 28.02.21
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Code:
if (iBarShift(NULL, Period(), OpenCloseTime()) > x_Bars) {
   //Action!
}
traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #3 (permalink)  
Alt 01.03.21
Mitglied
 
Registriert seit: Sep 2011
Beiträge: 55
derumuro befindet sich auf einem aufstrebenden Ast
Standard

traderdoc danke!

Dein Code funktioniert !

Ich habe aber noch Probleme mit folgendem Code:

Code:
datetime findlastorder()
{
   static int total     = OrdersHistoryTotal();
   static datetime timeclose = 0;
   datetime lastTime    = 0;
   int      lastTicket  = -1; // None open.
        
   if(OrdersHistoryTotal() == total) return(0);
   else
   total = OrdersHistoryTotal();
   
   
   for(int pos = OrdersHistoryTotal()-1; pos >= 0 ; pos--) 
    {
      if(OrderSelect(pos, SELECT_BY_POS,MODE_HISTORY) == true)
       {              
         if(OrderMagicNumber()     == magic         
           &&  OrderSymbol()       == Symbol()               
           &&  OrderOpenTime()     >  lastTime
           &&  OrderTicket()       >  lastTicket)
           {
            lastTime   = OrderOpenTime();
            lastTicket = OrderTicket();
            timeclose  = OrderCloseTime();    
            }
        }
       else
        {
            int err = GetLastError();
            checkErr("selct closed Order failed ",err);
            if(!Errors(err)) break; 
        }                
    }
   return(timeclose);
}
1. ich bekomme den Fehler : Error - selct closed Order failed (4202) object does not exist
2. iBarShift hat werte von über 1000

Was ist falsch?
  #4 (permalink)  
Alt 01.03.21
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Da der Fehler über ein false der Zeile if(OrderSelect(pos, SELECT_BY_POS,MODE_HISTORY) == true)
generiert wird und ich in der Schreibweise keinen Fehler sehe, auch nicht in der vorhergehenden for-Schleife, kann ich nicht abschließend beurteilen, warum der Fehler 4202 auftritt.

iBarShift hat damit überhaupt nichts zu tun.

Tritt die Zeile checkErr("selct closed Order failed ",err); nochmals auf?

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #5 (permalink)  
Alt 02.03.21
Benutzerbild von RalphD
Neues Mitglied
 
Registriert seit: Jul 2019
Beiträge: 24
RalphD befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

ich habe das Problem etwas anderes gelöst und wollte sowieso mal fragen, ob etwas gegen meine Variante spricht. Ich habe die Bars verwendet.
Unter den Variablen habe ich

int bar=Bars;

definiert.

Bevor er nun in die Entrybedingungen geht, habe ich die Abfrage gesetzt und am Ende der Schleife um 1 erhöht.

if (bar==Bars) {
// action
bar=Bars+1;
}

So kann die Schleife erst wieder durchlaufen werden, wenn Bars der aktuellen Kerze entspricht. Damit erziele ich den gewünschten Effekt.

Spricht etwas dagegen?

Danke
Ralph

HTML-Code:
//+------------------------------------------------------------------+
//|   Bedingungen für den Entry                                      |
//+------------------------------------------------------------------+

      if(bar==Bars){
  
      
//--- Bedingungen Buy Order
         if((sV1S1==EMPTY_VALUE)&&(mV1S1==EMPTY_VALUE)&&(fV1S1==EMPTY_VALUE)){                             

         if (Alarm!=OFF)Alert(Symbol()+" Buy Signal "+TimeToStr(TimeLocal()));                           
         if (Playsound!=OFF) PlaySound("alert.wav");                          
         if (Push!=OFF)SendNotification(Symbol()+" Buy Signal "+TimeToStr(TimeLocal()));                           
            CloseBuyStopPositions();
            {signal="Kaufen";}
         }
//--- Bedingungen Sell Order
         if((sV1S1!=EMPTY_VALUE)&&(mV1S1!=EMPTY_VALUE)&&(fV1S1!=EMPTY_VALUE)){                             

         if (Alarm!=OFF)Alert(Symbol()+" Sell Signal "+TimeToStr(TimeLocal()));                           
         if (Playsound!=OFF) PlaySound("alert.wav");                          
         if (Push!=OFF)SendNotification(Symbol()+" Sell Signal "+TimeToStr(TimeLocal()));                           
            CloseSellStopPositions();
            {signal="Verkaufen";}
         }
         bar=Bars+1;
      }
  #6 (permalink)  
Alt 02.03.21
Mitglied
 
Registriert seit: Sep 2011
Beiträge: 55
derumuro befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
Da der Fehler über ein false der Zeile if(OrderSelect(pos, SELECT_BY_POS,MODE_HISTORY) == true)
generiert wird und ich in der Schreibweise keinen Fehler sehe, auch nicht in der vorhergehenden for-Schleife, kann ich nicht abschließend beurteilen, warum der Fehler 4202 auftritt.

iBarShift hat damit überhaupt nichts zu tun.

Tritt die Zeile checkErr("selct closed Order failed ",err); nochmals auf?

traderdoc
Ich hatte schon eine andere Variante von FindLastOrder probiert welche die if == true Abfrage nicht hat und da hat es funktioniert, Dein Verdacht scheint also richtig zu sein.

Der Fehler checkErr("selct closed Order failed ",err); kommt ab und zu wieder vor. Würde eine Abfrage über isNewbar() abhilfe schaffen?

derumuro
  #7 (permalink)  
Alt 02.03.21
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Ich habe in meinen ganzen 12 Jahren Programmiertätigkeit diesen Fehler noch nicht ein einziges Mal erlebt. Und nein das würde nicht helfen.

Nochmal, die Funktion
if(OrderSelect(pos, SELECT_BY_POS,MODE_HISTORY) == true)
ist eigentlich immer true, denn es werden die gesamten historischen Orders gescannt. Und weil die Orders mit dem Index 0 beginnen und dem Index OrdersHistoryTotal() - 1 enden und nicht zwischendurch eine historische Order abhanden kommen kann, verstehe ich auch diesen Fehler an dieser Stelle!! nicht.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
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 16:14 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.
-----------------------------------------------------------------------------------------------------------------------------