Die Funktion OnCalculate() wird nur in benutzerdefinierten Indikatoren aufgerufen, wenn es notwendig ist, die Indikatorwerte durch das Ereignis Calculate zu berechnen.
Dies geschieht normalerweise, wenn ein neuer Tick für das Symbol empfangen wird, für das der Indikator berechnet wird.
Dieser Indikator muss nicht mit einem Preisdiagramm dieses Symbols verbunden sein.
Die Funktion OnCalculate() muss einen Rückgabetyp int haben. Es gibt zwei mögliche Definitionen. Innerhalb eines Indikators können Sie nicht beide Versionen der Funktion verwenden.
Die erste Form ist für jene Indikatoren gedacht, die auf einem einzigen Datenpuffer berechnet werden können. Ein Beispiel für einen solchen Indikator ist Custom Moving Average.
intOnCalculate(constint rates_total,// Größe des Preis[]-Arrays constint prev_calculated,// Bars, die bei einem früheren Aufruf behandelt wurden constint begin,// ab dem die signifikanten Daten beginnen constdouble& price[]// zu berechnendes Array );
Die Funktion OnCalculate() wird nur in benutzerdefinierten Indikatoren aufgerufen, wenn es notwendig ist, die Indikatorwerte durch das Ereignis Calculate zu berechnen.
Dies geschieht normalerweise, wenn ein neuer Tick für das Symbol empfangen wird, für das der Indikator berechnet wird.
Dieser Indikator muss nicht mit einem Preisdiagramm dieses Symbols verbunden sein.
Die Funktion OnCalculate() muss einen Rückgabetyp int haben. Es gibt zwei mögliche Definitionen. Innerhalb eines Indikators können Sie nicht beide Versionen der Funktion verwenden.
Die erste Form ist für jene Indikatoren gedacht, die auf einem einzigen Datenpuffer berechnet werden können. Ein Beispiel für einen solchen Indikator ist Custom Moving Average.
intOnCalculate(constint rates_total,// Größe des Preis[]-Arrays constint prev_calculated,// Bars, die bei einem früheren Aufruf behandelt wurden constint begin,// ab dem die signifikanten Daten beginnen constdouble& price[]// zu berechnendes Array );
(Ich verwende das Wort "Lag", das bedeutet, dass die Preisaktion, das Öffnen und Schließen von Aufträgen verzögert wird, nur ein Wort bringt meine MT4-Plattform zum Erliegen).
Ich verwende die folgende Funktion für meinen benutzerdefinierten Indikator.
Wenn ich schreibe unten Rückkehr Code zu meinem benutzerdefinierten Indikator dann meine benutzerdefinierte Indikator beginnt zu verzögern. Aber funktioniert richtig, was ich will.
return(0); // starts to lag...
Und wenn ich schreibe unten Return-Code zu meinem benutzerdefinierten Indikator dann meine benutzerdefinierte Indikator funktioniert nicht richtig, die ich will. Ich meine, während gefälschte MA Kreuz "Pfeil" nicht zurück zu früheren MA Kreuz Punkt.
return rates_total-1; // does not go back to previous MA cross pointreturn(rates_total-1); // and same thing here
Max Enrik: Und wenn ich schreibe unten zurück Code zu meinem benutzerdefinierten Indikator dann meine benutzerdefinierte Indikator funktioniert nicht richtig, die ich will. Ich meine, während gefälschte MA Kreuz " Pfeil " nicht zurück zu vorherigen MA Kreuz Punkt.
Stellen Sie Ihren gesamten Code ein. Das ist sinnlos ohne Kontext.
string counts;
void _a()
{
counts += "a - " + IntegerToString( ObjectsTotal( OBJ_ARROW ) );
//---return;
}
void _b()
{
counts += " - b - " + IntegerToString( ObjectsTotal( OBJ_ARROW ) );
//---return;
}
Print( counts );
// while 1st loop: a - 2 - b - 4// while 2nd loop: a - 2 - b - 4a - 2 - b - 4// while 3rd loop: a - 2 - b - 4a - 2 - b - 4a - 2 - b - 4a - 2 - b - 4// and so on...// But I like only 1st loop results even that loop runs 10 thousand times
OnCalculate
Die Funktion OnCalculate() wird nur in benutzerdefinierten Indikatoren aufgerufen, wenn es notwendig ist, die Indikatorwerte durch das Ereignis Calculate zu berechnen.
Dies geschieht normalerweise, wenn ein neuer Tick für das Symbol empfangen wird, für das der Indikator berechnet wird.
Dieser Indikator muss nicht mit einem Preisdiagramm dieses Symbols verbunden sein.
Die Funktion OnCalculate() muss einen Rückgabetyp int haben. Es gibt zwei mögliche Definitionen. Innerhalb eines Indikators können Sie nicht beide Versionen der Funktion verwenden.
Die erste Form ist für jene Indikatoren gedacht, die auf einem einzigen Datenpuffer berechnet werden können. Ein Beispiel für einen solchen Indikator ist Custom Moving Average.
intOnCalculate(constint rates_total,// Größe des Preis[]-Arrays
constint prev_calculated,// Bars, die bei einem früheren Aufruf behandelt wurden
constint begin,// ab dem die signifikanten Daten beginnen
constdouble& price[]// zu berechnendes Array
);
OnCalculate
Die Funktion OnCalculate() wird nur in benutzerdefinierten Indikatoren aufgerufen, wenn es notwendig ist, die Indikatorwerte durch das Ereignis Calculate zu berechnen.
Dies geschieht normalerweise, wenn ein neuer Tick für das Symbol empfangen wird, für das der Indikator berechnet wird.
Dieser Indikator muss nicht mit einem Preisdiagramm dieses Symbols verbunden sein.
Die Funktion OnCalculate() muss einen Rückgabetyp int haben. Es gibt zwei mögliche Definitionen. Innerhalb eines Indikators können Sie nicht beide Versionen der Funktion verwenden.
Die erste Form ist für jene Indikatoren gedacht, die auf einem einzigen Datenpuffer berechnet werden können. Ein Beispiel für einen solchen Indikator ist Custom Moving Average.
intOnCalculate(constint rates_total,// Größe des Preis[]-Arrays
constint prev_calculated,// Bars, die bei einem früheren Aufruf behandelt wurden
constint begin,// ab dem die signifikanten Daten beginnen
constdouble& price[]// zu berechnendes Array
);
(Ich verwende das Wort "Lag", das bedeutet, dass die Preisaktion, das Öffnen und Schließen von Aufträgen verzögert wird, nur ein Wort bringt meine MT4-Plattform zum Erliegen).
Ich verwende die folgende Funktion für meinen benutzerdefinierten Indikator.
Wenn ich schreibe unten Rückkehr Code zu meinem benutzerdefinierten Indikator dann meine benutzerdefinierte Indikator beginnt zu verzögern. Aber funktioniert richtig, was ich will.
Und wenn ich schreibe unten Return-Code zu meinem benutzerdefinierten Indikator dann meine benutzerdefinierte Indikator funktioniert nicht richtig, die ich will. Ich meine, während gefälschte MA Kreuz "Pfeil" nicht zurück zu früheren MA Kreuz Punkt.
F: Was kann ich für diese Situation tun, bitte?
Vielen Dank im Voraus.
Hier ist er.
Vielen Dank im Voraus.
GUT! Danke!
Ich brauche noch eine klare Antwort.
Vielen Dank im Voraus.
Antwort ist:Prüfen Sie sowohl den aktuellen MA Cross als auch den vorherigen MA Cross.
#Buffer (array out of range in ) - Closed
#Custom Indicator Lagging - Closed
#Erstes Ergebnis der Schleife - Offen
Vielen Dank im Voraus.