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 8 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: 352
Gesamt: 352
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 29.03.18
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Standard Computer Uhrzeit in Indikator einbauen

Ich habe ein kleines Dashboard für manuelles Trading, daß mir die genaue Spreadangabe zeigt (der Broker zeigt "nur" gerundete Werte, die natürlich nicht so genau sind) und - momentan ein Candle countdown. Um den Countdown geht es. Ich würde ihn gerne ersetzen durch eine hh:mm:ss Anzeige ersetzen, die (wie meine Computeruhrzeit) einfach gleichmäßig die Zeit rauf-/runterzählt.
Der Candle Countdown beruht ja auf einem Time-Vergleich, der wiederum abhängig ist, ob ein neuer Tick kam, und das führt manchmal dazu, daß die Zählung mal kurz stehenbleibt und dann das versäumte schnell überspringt.

Ich müßte also irgendwie auf irgendeine Windowsfunktion zugreifen, nur auf welche und wie (oh Gott, hoffentlich ist das nicht eine Treppe zu hoch für mich).
Wenn das einfach ist, wäre ich für Hinweise dankbar - wenn nicht, fliegt der Countdown einfach wieder raus und ich sehe eben wie bisher auf die Computeruhr. Danke. AVT
  #2 (permalink)  
Alt 29.03.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

EventSetTimer(1);
in die OniInit-Funktion

EventKillTimer();
in die OnDeinit-Funktion

und in der
void OnTimer()-Funktion

wird aller reingeschrieben, was in diesem o.g. Fall jede Sekunde berechnet oder angezeigt werden soll.

Es gibt auch noch einen
EventSetMillisecondTimer()

Wie es der Name schon sagt!

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #3 (permalink)  
Alt 29.03.18
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
EventSetTimer(1);
in die OniInit-Funktion
EventKillTimer();
in die OnDeinit-Funktion

und in der
void OnTimer()-Funktion

wird aller reingeschrieben, was in diesem o.g. Fall jede Sekunde berechnet oder angezeigt werden soll.

Wie es der Name schon sagt!
Erst mal vielen Dank traderdoc für die Antwort, das bringt mich schon ein Stück näher, klingt relativ einfach. Ich muß darüber erst mal nachlesen und -denken, weil ich mit Timer noch nicht gearbeitet habe. Und ein "mal eben im Code ersetzt" nicht auf Anhieb klappte, aber ich versuche es hinzukriegen. AVT
  #4 (permalink)  
Alt 30.03.18
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Standard

Hallo traderdoc, meine Lösung sieht jetzt so aus:
Code:
int OnInit()
{
   // == check user inputs before we continue
   // == last: for real clock values
   EventSetTimer(1); // 1 means every second
   return(INIT_SUCCEEDED);
}
void OnDeinit(const int reason)
{
   // == 1. kill real time clock 
   EventKillTimer();
   // == 2. delete all created objects
   for (int counter=-1;counter<19;counter++) ObjectDelete(indNames+(string)counter);
   // == 3. print code why we were deinitialized
   Print(__FUNCTION__," DeInit reason code = ",reason);
}
int OnCalculate (const int rates_total, // + more stuff 
                 const int& spread[])
{
   if (ShowInfo)
   {
      int C1end=70, C2end=10;        // (C)olumn 1|2 end     : right pixel end of column 1 and 2
      int Hpls=0;                    // (H)orizontal (pl)u(s): used as Hpls*1 *2 for each new line
      if     (FontSize==10) Hpls=12;
      else if(FontSize==9)  Hpls=11;
      else if(FontSize==8)  Hpls=10;   
      
      if (ObjectFind(indNames+"0") ==-1) 
      {  // fixed objects in the first column
         FuncCreateObject("1",C1end+HoriLeftShift,VerticalShift+Hpls*1,"local :",FontSize,FontName,normalColor,0);  
      }
   } //== if (ShowInfo)
   //== return the value of prev_calculated for next call
   return(rates_total);
}
void OnTimer()
{
   int C1end=70, C2end=10;        // (C)olumn 1|2 end     
   int Hpls=0;                    // (H)orizontal (pl)u(s)
   if     (FontSize==10) Hpls=12;
   else if(FontSize==9)  Hpls=11;
   else if(FontSize==8)  Hpls=10;
      
   datetime LocalTime=TimeLocal();                           // = JJJJ.MM.DD hh:mm:ss
   string TimeString=TimeToString(LocalTime,TIME_SECONDS ) ; // = hh:mm:ss
   FuncCreateObject("11",C2end+HoriLeftShift,VerticalShift+Hpls*1, // name+positon
                    TimeString,FontSize,FontName,CounterColor      // text+format
                   );  
}
// FuncCreateObject is userdefined function
Ist das so schon ok oder kann man da noch was verbessern? Was mich ein bißchen stört ist die Wiederholung der Positionsbedingungen C1end,C2end,Hpls. Vielleicht sollten die besser in der FuncCreateObject() stehen.
Aber die Uhrzeit ist jetzt perfekt! Danke noch mal für die Hilfestellung, war gar nicht so schwer. AVT
  #5 (permalink)  
Alt 01.04.18
Mitglied
 
Registriert seit: Nov 2015
Beiträge: 136
Adlerauge befindet sich auf einem aufstrebenden Ast
Standard

...hier ist auch noch was in der Art:
https://www.mql5.com/en/code/12804
Der zählt die verbleibende Zeit der Kerze runter.
  #6 (permalink)  
Alt 03.04.18
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Adlerauge Beitrag anzeigen
...hier ist auch noch was in der Art:
https://www.mql5.com/en/code/12804
Der zählt die verbleibende Zeit der Kerze runter.
Vielen Dank Adlerauge, bin grade dabei, den Code zu lesen und zu sehen, ob es besser ist, das auf der Basis zu machen. AVT
Thema geschlossen

Lesezeichen

Stichworte
mql4, programmierung, programmierung metatrader, programmierung mql4, time, uhr, uhrzeit, uhrzeit indikator, zeit

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 06:26 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.
-----------------------------------------------------------------------------------------------------------------------------