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: 4679
Beiträge: 41973
Benutzer: 7.041
Aktive Benutzer: 164
Links: 82
Wir begrüßen unseren neuesten Benutzer: Coconutboy69
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 21:38).
Neue Benutzer:
vor 21 Stunden
- Coconutboy...
vor einem Tag
- Benke
vor einer Woche
- nienio
vor einer Woche
- keohosti
vor einer Woche
- rombur

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

Empfehlungen

Antwort
 
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!
Mit Zitat antworten
  #2 (permalink)  
Alt 28.02.21
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.518
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.
Mit Zitat antworten
  #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?
Mit Zitat antworten
  #4 (permalink)  
Alt 01.03.21
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.518
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.
Mit Zitat antworten
  #5 (permalink)  
Alt 02.03.21
Neues Mitglied
 
Registriert seit: Jul 2019
Beiträge: 18
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;
      }
Mit Zitat antworten
  #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
Mit Zitat antworten
  #7 (permalink)  
Alt 02.03.21
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.518
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.
Mit Zitat antworten
Antwort

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 02:53 Uhr.





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