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
Es wird funktionieren
Sie könnten etwas wie if (previousNumberOfBars != Bars) oder if (volume[0]==1) verwenden, aber die Verwendung des Volumens ist empfindlich (lässt viel mehr Raum für Fehler, und fast sicher, dass bei der ersten Ausführung nicht alle notwendigen Bars berechnet werden, da das Volumen bereits > 1 sein wird)
Ich würde auf jeden Fall empfehlen, die ersten beiden Zeilen der Schleife zu invertieren, so dass sie etwa wie folgt aussehen:
{
for(int i=limit; i>=0; i--)
{[/php]You need to check that condition only once
regards
mladen
Quick coding question:
If I want an indicator to start its calculation on the open of a new bar, how can I code this?
I now have this - just an example, but I doubt it's correct:
[php]
datetime lastbar;
double buffer_a[];
double buffer_b[];
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int bars_counted = IndicatorCounted();
if(bars_counted < 0)
{
return(1);
}
bars_counted--;
int limit = Bars - bars_counted;
if(limit>BarsToLoad && BarsToLoad>0)
{
limit = BarsToLoad;
}
for(int i=limit; i>=0; i--)
{
if(lastbar != Time[0])
{
buffer_a = iMA(Symbol(), 0, FastEMA, 0, MODE_EMA, PRICE_CLOSE, i);
buffer_b = iMA(Symbol(), 0, FastEMA, 0, MODE_EMA, PRICE_CLOSE, i+1);
//LONG ARROW
if(buffer_a > buffer_b)
{
ExtMapBuffer1 = Open - distance;
}
//SHORT ARROW
if(buffer_a < buffer_b)
{
ExtMapBuffer2 = Open + distance;
}
lastbar = Time[0];
}
}
//----
return(0);
}
//+------------------------------------------------------------------+Ja, natürlich, wechseln Sie die Schleifen... viel besser.
Welche Methode ist Ihrer Meinung nach am genauesten, die if(previousNumberOfBars != Bars) oderif(lastbar != Time[0]) Option?
Ich persönlich sehe auf den ersten Blick keinen offensichtlichen Unterschied, aber vielleicht liege ich ja falsch. Ich stimme zu, dass die Volume-Option nicht gut für den Indikator ist, aber im EA könnte sie funktionieren.
Vielen Dank mladen, eine große Hilfe für meine eher dürftigen Indie-Coding-Kenntnisse...
Prost!
San.
Mladen oder Mr. Tools, wäre es möglich, eine Pop-up- und E-Mail-Benachrichtigung zu diesem Indikator hinzuzufügen, bitte? Ich habe den Eindruck, dass, wenn alle Linien im Indikatorfenster gleichzeitig am oberen oder unteren Rand des Indikatorfensters sind, ein guter Kauf- oder Verkaufspunkt identifiziert wird. Ich danke Ihnen für jede Hilfe. Chris
Hier gehen Sie Chris, da der Markt jetzt geschlossen nicht in der Lage, den Alarm live zu testen, sondern bekam Alarm auf 1-Minuten-Chart auftauchen, so hoffentlich sollte es in Ordnung sein, Alarm sollte gehen, wenn wso und wro sind beide auf Benutzer auswählbaren kaufen oder verkaufen Ebenen. Und ich stimme mit Ihnen überein, dass dieser Indikator, wenn beide Linien entweder am Maximum oder am Minimum sind, gute Kauf- und Verkaufsgelegenheiten zu bieten scheint.
Herr Tools. Ich danke Ihnen. Es ist toll, dass mir großartige Programmierer helfen.
San
Ehrlich gesagt, weiß ich nicht, welchen ich empfehlen soll.
Bars ist eine Art interne Metatrader-Variable des aktuellen Charts und Time[0] ist ein Element einer Array-Struktur, die jeden einzelnen Balken beschreibt, den es in seiner Historie für den aktuellen Chart gibt. Meine Vermutung ist, dass zuerst Bars aktualisiert wird, um die neue Array-Größe widerzuspiegeln, und dass dann die neu hinzugefügte Struktur des Arrays mit Daten (Zeit, "Volumen" und Preise) aktualisiert wird. Aber wenn sie es in einer "sequenziellen Weise" tun (nicht zulassen, dass andere Threads ausgeführt werden, bis die Code-Ausführung beendet ist - und ich bin fast 100% sicher, dass es die Art und Weise ist, wie es getan wird - soweit ich herausgefunden habe, gibt es immer einen separaten Thread, der Daten herunterlädt und all die Dinge verwaltet, über die wir sprechen, und wir alle haben eine "Pause" in der Ausführung bemerkt, wenn wir ein neues Diagramm öffnen und mehr Daten heruntergeladen und zu Arrays und Variablen und Diagrammen hinzugefügt werden, die wir dann vom Metatrader-Code verwenden), dann werden beide Variablen für einen Benutzer gleichzeitig sichtbar sein ... Die Zugriffszeit sollte die gleiche sein ... Also: alles das Gleiche
Grüße
mladen
Ja, natürlich, schalte die Schleifen um...viel besser.
Welche Methode ist deiner Meinung nach genauer, die if(previousNumberOfBars != Bars) oderif(lastbar != Time[0]) Option...?
Ich persönlich sehe auf den ersten Blick keinen offensichtlichen Unterschied, aber ich kann mich irren. Ich stimme zu, dass die Volume-Option nicht gut für den Indikator ist, aber im EA könnte sie gut funktionieren.
Vielen Dank mladen, eine große Hilfe für meine eher dürftigen Indie-Coding-Kenntnisse...
Danke,
San.Fudo, alles ist in Ordnung. Es gab nur einige Dinge, die unverzüglich erledigt werden mussten, und mein Beitrag bei TSD hat darunter ein wenig gelitten. Jetzt ist es gelöst, so dass meine Zeit weniger geteilt sein wird.
Wünsche allen ein schönes Wochenende
Grüße
mladenHallo mladen,
es freut mich zu hören, dass alles in Ordnung ist
wenn du die Möglichkeit hast, habe ich 2 Indikatoren gepostet, einen MA des RSX und die Triangular MA abands.
Kann man die Triangular MA abands auch auf den MA des RSX anwenden?
Vielen Dank!
Fudo
mladen,
wäre es möglich, den MA des RSX (oder sogar einen einfachen RSX, wenn der MA des RSX nicht möglich ist) mit Triangular MA abands zu kombinieren?
DankeDanke mladen, ausgezeichnete Erklärung, habe es nie so gesehen (Threads in MT4)...wieder etwas gelernt.
Ich bleibe bei der aktuellen Einstellung (Time[0]).
Danke, San.
...
Fudo
Hier geht's
Habe einige Änderungen vorgenommen (eigentlich ein neuer Indikator, aber es ist das, was ich als Idee abgeleitet) Prüfen Sie, ob das ist, was Sie im Sinn hatten.
Die erste Änderung ist, dass ich die Farbblöcke entfernt habe und die Farbe der RSX-Linie hinzugefügt habe, so dass sie jetzt anzeigt, wann sie über oder unter der Signallinie liegt (die Farbänderung ist also nicht die Steigung des RSX, sondern sein Verhältnis zur Signallinie). Zweitens ist es jetzt ein Single-File-Indikator (keine Notwendigkeit für externe Rsx-Indikatoren)
Worauf wird es angewendet: Sie können wählen - wenn Sie TmaApplyToto 0 einstellen, wird es auf RSX angewendet, sonst wird es auf die Signalleitung (MA von RSX) angewendet Mit freundlichen Grüßenmladen
Hallo mladen,
Es freut mich zu hören, dass alles in Ordnung ist.
wenn Sie die Möglichkeit haben, habe ich 2 Indikatoren gepostet, einen MA des RSX und den Triangular MA abands.
Kann der Triangular MA abands auf den MA des RSX angewendet werden?
Vielen Dank!
FudoInterpolieren hinzufügen
hi mladen
mtf gleitenderDurchschnitt
mtf stohaktisch
interpolieren addieren
danke
casaliss,
Diese (und ein paar weitere ) finden Sie in diesem Thread: https: //www.mql5.com/en/forum/178741
Sie haben es nicht als Option, aber diese Indikatoren sind in der Tat die Anwendung der linearen Interpolation
Mit freundlichen Grüßen
mladen
Hallo mladen
mtf gleitenderDurchschnitt
mtf stohaktisch
interpolieren hinzufügen
danke