|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
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 |
|
|||
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. |
|
|||
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
|
|
|||
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 Aber die Uhrzeit ist jetzt perfekt! Danke noch mal für die Hilfestellung, war gar nicht so schwer. AVT |
|
|||
...hier ist auch noch was in der Art:
https://www.mql5.com/en/code/12804 Der zählt die verbleibende Zeit der Kerze runter. |
|
|||
Zitat:
|
Lesezeichen |
Stichworte |
mql4, programmierung, programmierung metatrader, programmierung mql4, time, uhr, uhrzeit, uhrzeit indikator, zeit |
|
|