In dit artikel bespreken we een handige code die een Nieuwe Bar of Nieuwe Kaars detecteert zodra deze binnenkomt.
Het basisprincipe van de code is vrij eenvoudig. Allereerst slaat de code de Tijd van de vorige bar/kaars op. Vervolgens wordt er 60 seconden (wat gelijk staat aan 1 minuut; je kunt de tijd aanpassen zoals je wilt) toegevoegd aan de tijd van de vorige bar, wat de sluitingstijdwaarde van de huidige bar/kaars oplevert.
Wanneer:
Huidige Tijd = sluitingstijdwaarde van de huidige bar/kaars. Dit betekent dat er een nieuwe bar is ontvangen / de huidige bar is gesloten.
In deze code voorkomt de vlag (de boolean variabele 'NewBarReceived') dat deze code meerdere keren wordt aangeroepen. Dit betekent dat dit codeblok slechts één keer per bar/kaars wordt uitgevoerd. De Comment(); en de playsound("ok.wav"); worden gebruikt om de nauwkeurigheid van het codeblok te controleren. Je kunt ze verwijderen als je dat wilt.
De vlag wordt weer op false gezet zodra de huidige tijd boven de sluitingstijd van de huidige kaars is, zodat we kunnen controleren of de volgende bar arriveert. (Bekijk de commentaren voor meer uitleg).
//+------------------------------------------------------------------+ //| Nieuwe Bar Detect.mq5 | //| door H A T Lakmal | //| https://t.me/Lakmal846 | //+------------------------------------------------------------------+ bool NewBarReceived = false; // Vlag voor controle. //+------------------------------------------------------------------+ //| Expert initialisatie functie | //+------------------------------------------------------------------+ int OnInit() { //--- timer aanmaken EventSetTimer(60); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialisatie functie | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- timer vernietigen EventKillTimer(); } //+------------------------------------------------------------------+ //| Expert tick functie | //+------------------------------------------------------------------+ void OnTick() { datetime TimePreviousBar = iTime(_Symbol,PERIOD_M1,1); datetime TimeCurrentClose = TimePreviousBar + 60; // Sluitingstijd van de huidige bar. datetime Time_Current = TimeCurrent(); if(Time_Current == TimeCurrentClose && NewBarReceived == false) { PlaySound("ok.wav"); // Voor de bevestiging van de werking. NewBarReceived = true; // Update de vlag om meerdere aanroepen te voorkomen. // Jouw code komt hier ----- (Doe iets) } else if(Time_Current > TimeCurrentClose) { NewBarReceived = false; // Reset de vlag voor de volgende bar. // Jouw code komt hier ----- (Doe iets) } Comment("\n" + "\n" + "Tijd huidige bar -: " + TimeToString(TimePreviousBar,TIME_DATE|TIME_MINUTES|TIME_SECONDS) + "\n" + "Tijd huidige sluiting -: " +TimeToString(TimeCurrentClose,TIME_DATE|TIME_MINUTES|TIME_SECONDS) + "\n" + "Tijd huidige -: " + TimeToString(Time_Current,TIME_DATE|TIME_MINUTES|TIME_SECONDS) + "\n" +"\n" + "Een nieuwe bar ontvangen -: " + NewBarReceived); // Voor controle van berekeningen } //+------------------------------------------------------------------+ //| Timer functie | //+------------------------------------------------------------------+ void OnTimer() { //--- } //+------------------------------------------------------------------+ //| Handelsfunctie | //+------------------------------------------------------------------+ void OnTrade() { //--- } //+------------------------------------------------------------------+ //| ChartEvent functie | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- } //+------------------------------------------------------------------+
Gerelateerde berichten
- MQL5 Wizard: Handelsignalen Geïnspireerd Door Morning/Evening Stars + MFI voor MetaTrader 5
- MQL5 Wizard: Creëer Handelsstrategieën met Bullish en Bearish Engulfing Candlestick Patronen en Stochastic
- MQL5 Wizard: Handelsignalen Geïnspireerd door Morning/Evening Stars en RSI voor MetaTrader 5
- Efficiënt Trendvolgend Handelsysteem met Exp_X2MA_JFatl voor MetaTrader 5
- Close Cross MA: Efficiënt Orders Sluiten met MetaTrader 4