|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Dann mach das mal. Schlaf gut
|
|
|||
Hallooo. Der Indikator läuft super. Ist es möglich, dass wenn ich Metatrader neu starte der automatisch aktualisiert? Das macht er nämlich nicht, wenn ich über Nacht den Metatrader schliessen. Mir ist aufgefallen, dass ich alle Charteinheiten neu aktualisieren muss?
|
|
|||
Sorry tomtomtom,
hab deinen letzten Post noch am gleichen Tag gesehen und wollte mich nacher damit befassen (im aktuellen Moment keine Zeit gehabt...). Jetzt habe ich es aber irgendwie geschafft, es zu vergessen. Habe grad bischen rummgeschaut und hier wieder gesehen... Ich habs grad mal angeschaut und es scheint ein Problem der vordefinierten Variable "Bars" zu sein. Für jeden EA und Indikator wird ja eine eigene Kopie dieser Variablen/deren Werte vom Client Terminal gemacht. Beim (erneuten) Start des MT scheint er für ganz kurze Zeit noch die "alten" Werte der Kopien zu verwenden, bevor diese automatisch aktualisiert werden. Mein kleiner Test gerade hat ergeben, das die richtige Kerzenanzahl nach ca. 3-5 Ticks genutzt wird (manchmal auch sofort, z.B. wenn gerade frisch eine neue Kerze startet). Das ist natürlich nicht einheitlich und hin und wieder werden sofort die richtigen Daten genutzt. Was lustig ist (Ausgabe beim ersten Tick nach MT start...): Code:
Alert("TEST => Bars: ",Bars," | Zeit: ",Time[0]); Ich erhalte die alte Kerzenanzahl (in dem Fall die vor dem schließen des MT), aber die Zeit der aktuellen Kerze. Bezüglich des Kingbar-Indikators ist es ja so, das die Signale in der Start()-Funktion mit folgendem Code verarbeitet werden Code:
if(!JUST_ONCE) {CheckNewBars(Bars); JUST_ONCE = true;} else CheckNewBars(0); wo alle "Bars" verarbeitet, und die Signale und Fibos gesetzt werden. Danach wird mit dem zweiten Funktionsaufruf lediglich die gerade abgeschlossene Kerze geprüft und verarbeitet. Wegen der häufig veralteten Werte beim Start des MT werden die Kerzen zwischen dem Schließen und erneutem Starten des MT nicht verarbeitet, somit nicht "aktualisiert". Das mit der automatischen Aktualisierung ist manchmal ein bischen lästig. Ich schau nacher mal weiter und meld mich wieder... Geändert von next user (23.08.17 um 06:48 Uhr) |
|
|||
Erneut sorry,
ist irgendwie Routine bei mir gewesen, immer nur die neuesten Beiträge auf der Startseite anzuschauen. Ist erneut unntergegangen... Bezüglich deines Problems, am einfachsten wäre es z.B. so:
Damit hab ich grad auf die schnelle immer die korrekten Werte gehabt... |
|
|||
Jaaaa. Du scheinst sehr fleissig
Aber kein Problem. Also. Ich hab das jetzt erstmal soweit getan wie du es geschildert hast. Nach dem kompilieren scheint erstmal auch alles okay zu sein. Den Wert des return hab ich gelöscht, da er mit der null unnütz ist, oder muss das so sein? Den Event Kill Timer versteh ich auch nicht ganz, ich lass ihn aber drin. Momentan sieht die Funktion jetzt so aus: bool JUST_ONCE = false; string SYM = Symbol(); int PER = Period(); //Kingbar Version 2.4 begin bool START_TIMER = false; int START_TICKS = 4; void OnTimer() { START_TIMER = true; START_TICKS++; if(START_TICKS < 3 || !START_TIMER) return; EventKillTimer(); EventSetTimer(3); } //Kingbar Version 2.4 end In Ordnung? Wie gehts dir? Ich hoffe du bist nicht allzu doll am scripten und geniesst ab und an die Sonnenstrahlen! |
|
||||
Ne, du hast da ein klein wenig etwas falsch verstanden:
Zitat:
In diese Funktion NICHTS weiter einfügen, einfach so übernehmen, wie ich angegeben habe. Der zweite Punkt muss, wie erwähnt ganz oben in die Start-Funktion. Zitat:
Zitat:
3 Sekunden stattfinden. In der Funktionn wird START_TIMER auf TRUE gesetzt und dann EventKillTimmer() aufgerufen, sodass kein weiterer Aufruf von OnTimer() mehr erfolgt. Das ist wichtig, damit neben der Tickabfrage auch erst nach mindestens 3 Sekunden weitergearbeitet wird. Zitat:
~ 6 Tage Zeit bevor ich wieder was geschrieben habe Kurz nochmal etwas deutlicher:
|
|
|||
Moin Moin...Ja du hast recht. Ich war jetzt mal kurz raus mit dem scripten und hatte Zeit den ersten Test laufen zu lassen. Läuft auch gut, aber ich habe eben gesehen, dass es mit dem Code so wie ich es gestern eingefügt hatte nicht funktioniert
Okay. Also alles nochmal zurück auf Anfang. Ich meld mich gleich nochmal nach dem Kaffee... |
|
|||
Joa, das war ja auch meine Aussage vom Vorpost.
|
|
|||
Keine Chance. Ich bekomme nur Fehlermeldung und versau mir das ganze schöne Script.
bool START_TIMER = false; int START_TICKS = 0; ist klar... sieht dann folgendermaßen aus: bool JUST_ONCE = false; string SYM = Symbol(); int PER = Period(); bool START_TIMER = false; int START_TICKS = 0; --- START_TICKS++; if(START_TICKS < 3 || !START_TIMER) return 0; kommt bei mir in der zeile nach //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() START_TICKS++; if(START_TICKS < 3 || !START_TIMER) return 0; { if(JUST_ONCE) { for(int i=0; i<Signal_Count; i++) und da fängt es bei mir schon an mit Fehlern zu rasseln. HILFEEEE. Ich versteh es nicht |
Lesezeichen |
Stichworte |
kopieren, linien, linien charts übernehmen, metatrader tools, mql4, objekte, programmierung, programmierung metatrader, programmierung mql4, timeframes linie, tool, tools |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|