Fehler, Irrtümer, Fragen - Seite 1747
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Wie kann ich das visuelle Anhaften von NOT LABEL-Objekten an den Zeitkoordinaten von Balken aufheben?
Ich habe die Zeitkoordinate des Objekts auf Sekunden eingestellt, aber es wird so dargestellt, als ob ich es auf den Zeitrahmen eingestellt hätte.
Ich habe die Frage gegraben
Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests
Wanzen, Wanzen, Fragen
Andreas Petras, 2014.11.26 13:34
Ich bin sehr gut darin, Objekte wie Dreieck, Ellipse oder Rechteck zu verschieben, und die Ankerpunkte sind unverhältnismäßig "schwebend".
Es hängt nicht von diesen Einstellungen ab
Ich schaffe
Ziehen und Ablegen
Das Rechteck "treibt" den zweiten Punkt, das Dreieck und die Ellipse haben den dritten Punkt.
Kann dies behoben werden? Ich brauche genaue "Messungen".
Wenn ich "Präzise Zeitskala" wähle, verschwindet die erwähnte Bindung und alles wird so angezeigt, wie es sein sollte. Ich habe jedoch nirgendwo in MQL5 gefunden, wie man diesen Parameter aktivieren/deaktivieren kann. Ist sie nicht vorgesehen?
Ich brauche wirklich Hilfe! Seit ein paar Stunden versuche ich, die Ursache für das seltsame Verhalten herauszufinden. Am Ende schrieb ich einen EA mit einem unerwarteten Ergebnis
string TimeToString( const ulong Time )
{
return(TimeToString(Time / 1000, TIME_DATE|TIME_SECONDS) + "." + ::IntegerToString(Time % 1000, 3, '0'));
}
void OnTick()
{
static MqlTick PrevTick = {0};
MqlTick NowTick;
if (SymbolInfoTick(_Symbol, NowTick) && (PrevTick.time_msc > NowTick.time_msc))
Alert(TOSTRING(TimeToString(PrevTick.time_msc)) + TOSTRING(TimeToString(NowTick.time_msc)));
PrevTick = NowTick;
}
Das Ergebnis (bottom-up)
2016.10.31 11:55:51.031 Test10 (Si-12.16,M1) TimeToString(PrevTick.time_msc) = 2016.10.31 12:58:10.702
2016.10.31 11:55:50.979 Test10 (Si-12.16,M1)
2016.10.31 11:55:50.979 Test10 (Si-12.16,M1) TimeToString(NowTick.time_msc) = 2016.10.31 12:58:10.654
2016.10.31 11:55:50.979 Test10 (Si-12.16,M1) TimeToString(PrevTick.time_msc) = 2016.10.31 12:58:10.656
2016.10.31 11:55:45.792 Test10 (Si-12.16,M1)
2016.10.31 11:55:45.792 Test10 (Si-12.16,M1) TimeToString(NowTick.time_msc) = 2016.10.31 12:58:05.458
2016.10.31 11:55:45.792 Test10 (Si-12.16,M1) TimeToString(PrevTick.time_msc) = 2016.10.31 12:58:05.464
2016.10.31 11:53:45.807 Test10 (Si-12.16,M1)
2016.10.31 11:53:45.807 Test10 (Si-12.16,M1) TimeToString(NowTick.time_msc) = 2016.10.31 12:56:05.474
2016.10.31 11:53:45.807 Test10 (Si-12.16,M1) TimeToString(PrevTick.time_msc) = 2016.10.31 12:56:05.476
SymbolInfoTick liefert manchmal (man muss warten) einen Tick mit einer niedrigeren Zeit als die vorherige!
Was zum Teufel soll das alles? Konfiguration
Terminal C:\Program Files\BCS Broker MetaTrader 5 Terminal
Terminal Windows 7 Ultimate (x64 based PC), IE 09.00, Intel Core i7-2700K @ 3.50GHz, RAM: 11327 / 16301 Mb, HDD: 4346 / 30000 Mb, GMT+02:00
Terminal MetaTrader 5 x64 build 1455 started (MetaQuotes Software Corp.)
Ich brauche wirklich Hilfe! Seit ein paar Stunden versuche ich, die Ursache für dieses seltsame Verhalten herauszufinden. Am Ende schrieb ich einen EA mit einem unerwarteten Ergebnis
string TimeToString( const ulong Time )
{
return(TimeToString(Time / 1000, TIME_DATE|TIME_SECONDS) + "." + ::IntegerToString(Time % 1000, 3, '0'));
}
void OnTick()
{
static MqlTick PrevTick = {0};
MqlTick NowTick;
if (SymbolInfoTick(_Symbol, NowTick) && (PrevTick.time_msc > NowTick.time_msc))
Alert(TOSTRING(TimeToString(PrevTick.time_msc)) + TOSTRING(TimeToString(NowTick.time_msc)));
PrevTick = NowTick;
}
Das Ergebnis (bottom-up)
2016.10.31 11:55:51.031 Test10 (Si-12.16,M1) TimeToString(PrevTick.time_msc) = 2016.10.31 12:58:10.702
2016.10.31 11:55:50.979 Test10 (Si-12.16,M1)
2016.10.31 11:55:50.979 Test10 (Si-12.16,M1) TimeToString(NowTick.time_msc) = 2016.10.31 12:58:10.654
2016.10.31 11:55:50.979 Test10 (Si-12.16,M1) TimeToString(PrevTick.time_msc) = 2016.10.31 12:58:10.656
2016.10.31 11:55:45.792 Test10 (Si-12.16,M1)
2016.10.31 11:55:45.792 Test10 (Si-12.16,M1) TimeToString(NowTick.time_msc) = 2016.10.31 12:58:05.458
2016.10.31 11:55:45.792 Test10 (Si-12.16,M1) TimeToString(PrevTick.time_msc) = 2016.10.31 12:58:05.464
2016.10.31 11:53:45.807 Test10 (Si-12.16,M1)
2016.10.31 11:53:45.807 Test10 (Si-12.16,M1) TimeToString(NowTick.time_msc) = 2016.10.31 12:56:05.474
2016.10.31 11:53:45.807 Test10 (Si-12.16,M1) TimeToString(PrevTick.time_msc) = 2016.10.31 12:56:05.476
SymbolInfoTick liefert manchmal (man muss warten) einen Tick mit einer niedrigeren Zeit als die vorherige!
Was zum Teufel soll das alles? Konfiguration
Terminal C:\Program Files\BCS Broker MetaTrader 5 Terminal
Terminal Windows 7 Ultimate (x64 based PC), IE 09.00, Intel Core i7-2700K @ 3.50GHz, RAM: 11327 / 16301 Mb, HDD: 4346 / 30000 Mb, GMT+02:00
Terminal MetaTrader 5 x64 build 1455 started (MetaQuotes Software Corp.)
Magische Linie
virtual int f( const ABCDEFGHIJK ) const { return ABCDEFGHIJK; }
Abfolge der Aktionen (streng)
Ergebnis:
Einstellungen hier: https://www.mql5.com/ru/forum/1111/page1127#comment_795376
Ja, Sie sind nicht der Einzige, der hier Hilfe braucht. Seit ein paar Wochen versuche ich, meine Tics richtig in eine Kerze zu verwandeln. Also... Die Tics sind immer noch roh. Angebot in SD#1598238
Tiki rollt ganz normal in die Kerze.
Wirklich? Und die Mengen sind die gleichen? Und Sie haben Kontrollen durchgeführt? Und können Sie die Protokolle überhaupt zeigen?
Hat die Kontrolle - beobachten Sie die Codobase. Die Diskrepanz zwischen den Candlestick-Volumina und den berechneten Volumina spielt keine Rolle, da es sich um einen Grenztick handelt, der entweder in den einen oder den anderen Balken fallen kann. Dies ist kein Prinzip. Ich habe auch den Indikator für den Handelsumsatz in das Forum gestellt. Es gibt also überhaupt kein Problem.
In Ihrem Fall, wenn Sie sehr nerdy, können Sie auf die Bar Erstellung Mechanismus, aber nicht auf CopyTicks.
Kompilierungsfehler
protected:
void f( int ) {} //(*)
};
class B : public A {
public:
void f( uint ) {}
};
void OnStart()
{
B b;
b.f( 1 ); //'A::f' - cannot call protected member function
}
Und wenn Sie die (*)-Zeile entfernen, ist alles in Ordnung. Was ist falsch an B::f(uint)? Wenn Sie die Situation von der anderen Seite betrachten
public:
void f( int ) {} //(**)
};
class B : public A {
public:
void f( uint ) {}
};
können wir die grundlegenden Nachteile des MQL-Algorithmus für die Suche nach einer passenden Funktion erkennen. Im 2. Beispiel wird B::f(uint) so lange aufgerufen, bis keine Zeichenkette mehr vorhanden ist (**). Sobald die Zeile (**) erscheint, wird A::f(int) aufgerufen. Das bedeutet, dass sich Änderungen in der Basisklasse auf das Endergebnis auswirken, während in C++ B::f(uint) unabhängig von Änderungen in der Basisklasse immer aufgerufen wird, was die Stabilität des Endergebnisses garantiert.
In MQL stellt sich heraus, dass der Entwickler der Klasse A gerade eine neue öffentliche\geschützte\private Funktion erfunden hat und der Benutzer der Klasse B deshalb aufgehört hat, den Code zu kompilieren und/oder, was noch kritischer ist, das Endergebnis geändert hat
Magische Linie
virtual int f( const ABCDEFGHIJK ) const { return ABCDEFGHIJK; }
Abfolge der Aktionen (streng)
Ergebnis:
Einstellungen hier: https://www.mql5.com/ru/forum/1111/page1127#comment_795376
Kompilierungsfehler
protected:
void f( int ) {} //(*)
};
class B : public A {
public:
void f( uint ) {}
};
void OnStart()
{
B b;
b.f( 1 ); //'A::f' - cannot call protected member function
}
Und wenn Sie die (*)-Zeile entfernen, ist alles in Ordnung. Was ist falsch an B::f(uint)? Wenn Sie die Situation von der anderen Seite betrachten
public:
void f( int ) {} //(**)
};
class B : public A {
public:
void f( uint ) {}
};
können wir die grundlegenden Nachteile des MQL-Algorithmus für die Suche nach einer passenden Funktion erkennen. Im 2. Beispiel wird B::f(uint) so lange aufgerufen, bis keine Zeichenkette mehr vorhanden ist (**). Sobald die Zeile (**) erscheint, wird A::f(int) aufgerufen. Das bedeutet, dass sich Änderungen in der Basisklasse auf das Endergebnis auswirken, während in C++ B::f(uint) unabhängig von Änderungen in der Basisklasse immer aufgerufen wird, was die Stabilität des Endergebnisses garantiert.
In MQL stellt sich heraus, dass der Entwickler der Klasse A gerade eine neue öffentliche\geschützte\private Funktion erfunden hat und der Benutzer der Klasse B deshalb aufgehört hat, den Code zu kompilieren und/oder, was noch kritischer ist, das Endergebnis geändert hat.
Nur die Konstante "1" in dem Aufruf b.f( 1 ) wird als int interpretiert. Machen Sie eine explizite Konvertierung und alles wird funktionieren:
b.f( (uint)1 );