[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 71

 
r772ra , artmedia70

Danke, es funktioniert!
 
artmedia70:

Hier ein Tipp:

NormalizeDouble(Low[i]-Low[i+1],Digits)<=3*Point --- Differenz benachbarter Balken. Wenn die Bedingung nicht erfüllt ist -> Return(False); (Gibt false zurück)

Return(False) nach Durchlaufen der Schleife

Wir können es auch anders machen:

Wenn die Bedingung NormalizeDouble(Low[i]-Low[i+1],Digits)<=3*Point erfüllt ist, wird der Zähler der benachbarten Balken (der anfangs gleich Null ist) um 1 erhöht,

Wenn die Bedingung falsch ist, geben wir den Wert des benachbarten Taktzählers zurück.

Je größer die von der Funktion zurückgegebene Zahl ist, desto stärker ist die Menge. Wenn Null zurückgegeben wird, existiert die Einrichtung nicht.



Ich glaube nicht, dass der Preis normalisiert werden sollte, weil wir nur mit einer ganzen Zahl vergleichen müssen. Es ist besser, die FunktionMathAbs(double value) zu verwenden, damit das Vorzeichen der Ausgabe immer positiv ist, wenn einer der Preise höher ist als der andere.

Hier ist ein weiterer Punkt. Es stellt sich heraus, dass wir gar keine Schleife brauchen!

Wir können einfach eine Funktion mit einem Zähler verwenden. Wir prüfen kontinuierlich 2 benachbarte Balken auf Extrema, und wenn sie gleich sind, wird der Zähler um 1 erhöht (anfangs ist er natürlich 0). Beim nächsten neuen Takt führen wir eine ähnliche Prüfung durch. Wenn die Extrema gleich sind, wird der Zähler um 1 erhöht, usw. Eine Schleife ist hier auf dem Weg nicht nötig, richtig?

Schließlich wissen wir nicht, wie viele Balken wir mit demselben Wert des Extremums haben werden, und daher ist es sinnlos, den Verschiebungsparameter in der Historie anzugeben.

 
Notter:

Es wird viel über den Hochfrequenzhandel gesprochen. Man sagt, HFT schlägt sie alle. Was ist ihr Hauptvorteil gegenüber uns? Die Tatsache, dass ein kurzer Ping an sich eine gute Sache ist, ist verständlich, aber es braucht mehr als eine Millisekunde, um einen Handel abzuschließen :) Welche neue Qualität tritt beim HFT auf und wie unterscheiden sich die Algorithmen grundsätzlich?

Ich danke Ihnen.


Du fährst einen Zaporozhets, und diese Jungs fahren einen Ferrari. Können Sie überholen? (Es geht nicht um Algorithmen)
 
YOUNGA:

Du fährst einen Zaporozhets und diese Jungs fahren einen Ferrari. Können Sie überholen? (Es geht nicht um Algorithmen)
Zaporozhets brauchen ein bisschen Arbeit. Dann kann nicht nur Ferrari "erledigt" werden.
 
YOUNGA:

Du fährst einen Zaporozhets, und diese Jungs fahren einen Ferrari. Kannst du ihnen entkommen?

Es gibt jedoch einen grundlegenden Unterschied.

Nehmen Sie zumindest das Risiko/Rendite-Verhältnis. Wenn HFT den Gewinn nach Punkten registriert, dann platziert es natürlich keine Stopps und schließt Positionen nach anderen Kriterien. Es kann sein, dass jeder Tick gegen eine Position ein Ausstieg ist.) Aber woher kommt dann der Gewinn?

 
Nochmals um Hilfe.


Wie stelle ich fest, von welcher Seite der SMA die Preise kreuzt?
 
hoz:


Ich glaube nicht, dass wir den Preis normalisieren müssen, weil wir nur mit einer ganzen Zahl vergleichen müssen. Es ist besser, die FunktionMathAbs(double value) zu verwenden, damit das Vorzeichen der Ausgabe immer positiv ist, wenn einer der Preise höher ist als der andere.

Hier ist ein weiterer Punkt. Es stellt sich heraus, dass wir gar keine Schleife brauchen!

Wir können einfach eine Funktion mit einem Zähler verwenden. Wir prüfen kontinuierlich 2 benachbarte Balken auf Extrema, und wenn sie gleich sind, wird der Zähler um 1 erhöht (anfangs ist er natürlich 0). Beim nächsten neuen Takt führen wir eine ähnliche Prüfung durch. Wenn die Extrema gleich sind, wird der Zähler um 1 erhöht, usw. Eine Schleife ist hier nicht nötig, oder?

Schließlich wissen wir nicht, wie viele Balken wir mit demselben Extremwert haben werden, und daher ist es sinnlos, den Verschiebungsparameter in der Historie anzugeben.

Natürlich wird MathAbs() dort benötigt - ich habe es aus heiterem Himmel geschrieben, als ich am Steuer saß - man kann nicht viel schreiben, außerdem habe ich einen Tipp dafür gegeben. Normalisieren Sie die Preise, denn der Vergleich von reellen Zahlen erfordert eine Normalisierung, während wir nicht mit einer ganzen Zahl vergleichen (denn 3*Point ist int*double- Umwandlung von int in double). Ich würde trotzdem eine Funktion erstellen, die die Balken bei jedem Tick vergleicht - ich bin es gewohnt, sofort an das Reale zu denken. Wenn der EA aus irgendeinem Grund deaktiviert wird, wird die Variable, die den Zählerwert speichert, zurückgesetzt, wenn der EA neu gestartet wird - das ist nicht gut ... es ist ein Datenverlust. Aber im Falle der pythmischen Suche (oder besser, um die Geschwindigkeit zu optimieren), ist der Neustart von Expert Advisor in diesem Fall nicht so schlecht - es wird alles neu berechnet. Daher ist es besser, eine separate Funktion zu erstellen, die eine bestimmte Anzahl von benachbarten Balken auf jedem neuen Balken auf Gleichheit vergleicht (so wie Sie es haben) und die Anzahl der aufeinanderfolgenden Balken zurückgibt, die nach einem bestimmten Kriterium gleich sind, beginnend mit dem ersten und weiter in die Geschichte für die Anzahl der Balken, die an die Funktion übergeben wurden (zehn pro Stück...).

Im Allgemeinen ... etwa so ...

 
md4RM:
Nochmals um Hilfe.


Wie kann ich erkennen, auf welcher Seite der SMA vom Kurs gekreuzt wird?

Wenn (

iMA(Symbol(), Zeitraum(), 1, 0, MODE_SMA, PRICE_CLOSE, 2) <= SMA(bla, bla, bla, 2)

и

iMA(Symbol(), Zeitraum(), 1, 0, MODE_SMA, PRICE_CLOSE, 1) > SMA(bla, bla, bla, 1)

) dann

(Kurs hat Ihren SMA auf dem ersten Balken von unten nach oben gekreuzt)

 

Danke, ich habe den Fehler gefunden.

 

Guten Tag, bitte helfen Sie mir. Ich habe den VininI_HMA-Indikator heruntergeladen und versucht, ihn in die EA-Vorlage einzufügen, aber der EA öffnet keine Trades. Die Zusammenstellung ist gut gelungen.

Bedingung für SELL (Sigj1==EMPTY_VALUE)&& (Sigj2!=EMPTY_VALUE)&& (Sigj1!=EMPTY_VALUE)&& (Sigj2!=EMPTY_VALUE)

Bedingungen für Kaufen (sigj1==EMPTY_VALUE)&& (sigj2!=EMPTY_VALUE)&& (sigj1!=EMPTY_VALUE)&& (sigj2!=EMPTY_VALUE)

double sigz1 = iCustom(NULL,0, "VininI_HMA_sound&Alert",period,method,price,sdvig,0,1);
double sigz2 = iCustom(NULL,0, "VininI_HMA_sound&Alert",period,method,price,sdvig,0,2);
double sigz1 = iCustom(NULL,0, "VininI_HMA_sound&Alert",period,method,price,sdvig,1,1);
double sigz2 = iCustom(NULL,0, "VininI_HMA_sound&Alert",period,method,price,sdvig,1,2);
double sigk1 = iCustom(NULL,0, "VininI_HMA_sound&Alert",period,method,price,sdvig,2,1);
double sigk2 = iCustom(NULL,0, "VininI_HMA_sound&Alert",period,method,price,sdvig,2,2);

Bitte sagen Sie mir, wo ich einen Fehler gemacht habe?