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: 4978
Beiträge: 43260
Benutzer: 7.223
Aktive Benutzer: 73
Links: 84
Wir begrüßen unseren neuesten Benutzer: Mane
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einem Tag
- Mane
vor 2 Wochen
- AlbertZiz
vor 2 Wochen
- michak
vor 2 Wochen
- Amateur
vor 2 Wochen
- infos1982

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

Empfehlungen

Like Tree1Likes
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #91 (permalink)  
Alt 06.08.17
Mitglied
 
Registriert seit: Jul 2017
Beiträge: 56
tomtomtom befindet sich auf einem aufstrebenden Ast
Standard

Dann mach das mal. Schlaf gut
  #92 (permalink)  
Alt 15.08.17
Mitglied
 
Registriert seit: Jul 2017
Beiträge: 56
tomtomtom befindet sich auf einem aufstrebenden Ast
Standard

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?
  #93 (permalink)  
Alt 23.08.17
Premium Mitglied
 
Registriert seit: May 2015
Beiträge: 367
next user befindet sich auf einem aufstrebenden Ast
Standard

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]);
Habs mal in einem M1-Chart getestet mit einem Abstand von ~15 Minuten.
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);
Der erste Tick nach dem Starten des MT mit häufig noch dem alten Wert der Variable "Bars" verarbeitet den ersten Funktionsaufruf,
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)
  #94 (permalink)  
Alt 23.08.17
Mitglied
 
Registriert seit: Jul 2017
Beiträge: 56
tomtomtom befindet sich auf einem aufstrebenden Ast
Standard

Super. Vielen Dank!
  #95 (permalink)  
Alt 30.08.17
Premium Mitglied
 
Registriert seit: May 2015
Beiträge: 367
next user befindet sich auf einem aufstrebenden Ast
Standard

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:
  • Erzeuge ganz oben zwei Variablen, z.B.
    Code:
    bool     START_TIMER = false;
    int      START_TICKS = 0;
  • In der Init setzt du den Timer dann auf Sekunden deiner Wahl
    Code:
    EventSetTimer(3);
  • Füge dann noch folgendes in den Code
    Code:
    void OnTimer()
    {
       START_TIMER = true;
       EventKillTimer();
    }
  • Und in der Start-Funktion dann noch
    Code:
    START_TICKS++;
    
    if(START_TICKS < 3 || !START_TIMER)
       return 0;
    ganz an den Anfang
Im obigen Code würde alles andere erst abgearbeitet werden, wenn mindestens 3 Ticks kamen und mindestens 3 Sekunden vergangen sind.

Damit hab ich grad auf die schnelle immer die korrekten Werte gehabt...
  #96 (permalink)  
Alt 30.08.17
Mitglied
 
Registriert seit: Jul 2017
Beiträge: 56
tomtomtom befindet sich auf einem aufstrebenden Ast
Standard

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!
  #97 (permalink)  
Alt 30.08.17
Premium Mitglied
 
Registriert seit: May 2015
Beiträge: 367
next user befindet sich auf einem aufstrebenden Ast
Standard

Ne, du hast da ein klein wenig etwas falsch verstanden:

Zitat:
Zitat von next user Beitrag anzeigen
  • Füge dann noch folgendes in den Code
    Code:
    void OnTimer()
    {
       START_TIMER = true;
       EventKillTimer();
    }
  • Und in der Start-Funktion dann noch
    Code:
    START_TICKS++;
    
    if(START_TICKS < 3 || !START_TIMER)
       return 0;
    ganz an den Anfang
Der erste Punkt einfach so wie es ist einfügen. Ist die OnTimer-Funktion, die in gleichen Abständen (EventSetTimer(...)) aufgerufen wird.
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 von tomtomtom Beitrag anzeigen
Den Wert des return hab ich gelöscht, da er mit der null unnütz ist, oder muss das so sein?
Naja, wenn es so wäre, wie du den Code implementiert hast, so ist das Return wirklich unnütz (return 0; in void ist nicht so gut...).
Zitat:
Zitat von tomtomtom Beitrag anzeigen
Den Event Kill Timer versteh ich auch nicht ganz, ich lass ihn aber drin.
Mit EventSetTimer() stellst du ein, in welchen Abständen die Funktion OnTimer() aufgerufen werden soll. Im Beispiel würde der erste Aufruf nach
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:
Zitat von tomtomtom Beitrag anzeigen
Wie gehts dir? Ich hoffe du bist nicht allzu doll am scripten und geniesst ab und an die Sonnenstrahlen!
Joa. Gestern hab ich mir die Sonne gegönnt. Heut ist wieder gutes Wetter zum Coden Bei dir hoffentlich auch alles gut. Hattest jetzt ja
~ 6 Tage Zeit bevor ich wieder was geschrieben habe


Kurz nochmal etwas deutlicher:
  • Oben die beiden Variablen sind richtig.
  • Die Funktion OnTimer setzt du einfach irgendwo außerhalb jeder Funktion. Aber nur so, wie ich es erwähnt hatte, also ohne zusätzlichen Code.
  • In der init()-Funktion initialisierst du den Timer, indem du dort die Funktion EventSetTimer(3) plazierst.
  • In der start()-Funktion setzt du ganz oben den Code vom letzten Punkt ein. Dann macht das Return auch wieder Sinn.
  #98 (permalink)  
Alt 31.08.17
Mitglied
 
Registriert seit: Jul 2017
Beiträge: 56
tomtomtom befindet sich auf einem aufstrebenden Ast
Standard

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...
  #99 (permalink)  
Alt 31.08.17
Premium Mitglied
 
Registriert seit: May 2015
Beiträge: 367
next user befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von tomtomtom Beitrag anzeigen
... aber ich habe eben gesehen, dass es mit dem Code so wie ich es gestern eingefügt hatte nicht funktioniert
Joa, das war ja auch meine Aussage vom Vorpost.
  #100 (permalink)  
Alt 31.08.17
Mitglied
 
Registriert seit: Jul 2017
Beiträge: 56
tomtomtom befindet sich auf einem aufstrebenden Ast
Standard

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
Thema geschlossen

Lesezeichen

Stichworte
kopieren, linien, linien charts übernehmen, metatrader tools, mql4, objekte, programmierung, programmierung metatrader, programmierung mql4, timeframes linie, tool, tools

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 +2. Es ist jetzt 14:03 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.
-----------------------------------------------------------------------------------------------------------------------------