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
Ein gefährlicher Irrglaube.
Aber mein Array entspricht selten der Anzahl der Balken im Diagramm. Manchmal weniger, manchmal mehr.
Was mich beunruhigt, ist, dass sie größer sein könnte.
Erstens, wer hindert Sie daran, ein internes Datenfeld zu haben, das dem Indikatorpuffer entspricht, und es auf dieselbe Weise zu füllen.
Und was ist ressourcenmäßig sinnvoller, die Berechnung in einem Indikator oder die Berechnung im Expert Advisor, was schneller ist?
Aber mein Array entspricht selten der Anzahl der Balken im Diagramm. Manchmal weniger, manchmal mehr.
Was mich beunruhigt, ist, dass sie größer sein könnte.
Du machst dir vergeblich Sorgen, Alexey.
Es kann Situationen geben, in denen dies notwendig ist, gugilen.
Zum Beispiel.
Ich verwende meist Daten von Minutenbalken oder Ticks, unabhängig von der TF.
Es ist sehr falsch und verschwenderisch, wenn Ihr Expert Advisor alle Pufferindikatoren jedes Mal neu berechnen muss, wenn Sie die TF ändern. Bei mir ist das nicht der Fall.
Wenn ich also einen wöchentlichen Zeitrahmen verwende, wird mein Array natürlich viel größer sein als die Anzahl der Balken im Diagramm.
Und ich spreche nicht einmal von Zecken.
In der Regel habe ich mehrere Arrays von Strukturen und Index-Arrays, um die Produktivität zu erhöhen und Speicherplatz zu sparen. Ihre Dimensionen können unterschiedlich sein.
Generell sind Sie bei der Verwendung von Indikatoren über iCustom in vielen Dingen sehr eingeschränkt.
Sie sind starr an die Arraygröße gebunden, die der Anzahl der Balken im Diagramm entspricht. Was ist, wenn Sie unbegrenzt dort stehen?
Sie sind nur an eine Art von Double gebunden. Und Sie können nicht einmal davon träumen, eine Reihe von Strukturen zu haben.
Es ist sogar lächerlich mit Farbindikatoren. 8 Bytes pro Takt sind offensichtlich zu viel.
Indikatorpuffer sind sehr verschwenderisch im Hinblick auf den Speicherverbrauch.
Außerdem haben Sie nur über CopyBuffer Zugriff auf die Puffer, selbst wenn Sie nur einen letzten Balken benötigen. In jedem Fall ist dieser Vorgang viel langsamer als der einfache Zugriff auf Array-Elemente.
Wenn Sie standardmäßig eingebaute Indikatoren wie iMA verwenden, müssen Sie sich natürlich nicht darum kümmern. Dennoch denke ich, dass wir hier über benutzerdefinierte Indikatoren sprechen. Ich glaube nicht, dass Profis integrierte Indikatoren für den echten Handel verwenden.
Und was ist ressourcenschonender, die Zählung in einem Indikator oder die Zählung in einem Expert Advisor, die schneller ist?
Ich habe in meinem vorherigen Beitrag teilweise geantwortet.
Dies ist eine sehr lange Frage, und es ist besser, die Entwickler zu fragen, insbesondere diejenigen, die für Multithreading zuständig sind.
Ich bin kein Spezialist für diese Frage. Aber ich kann meine Gedanken mitteilen. Sollte ich mich irren, korrigieren Sie mich bitte, wenn Sie es richtig wissen.
Wie Sie wissen, arbeitet jeder Expert Advisor in einem separaten Thread, während alle Indikatoren eines Symbols (auch in verschiedenen Charts) in einem gemeinsamen Thread arbeiten.
Daher können wir davon ausgehen, dass, wenn das Symbol nicht mit Indikatoren überlastet ist, die Arbeit des Expert Advisors und die Berechnung des Indikatorpuffers parallel und sogar in verschiedenen CPU-Kernen laufen, wenn der OS Scheduler das Glück hat, einen separaten Prozessorkern für Ihren Indikator-Thread zu finden. Es ist durchaus möglich, dass Sie in einem solchen Schema effizientere Ergebnisse erzielen werden. Ich weiß nicht, wie hoch die Wahrscheinlichkeit ist, einen separaten Kern für einen Indikator-Thread zu erhalten, aber ich denke, sie ist nicht sehr hoch.
Aber es gibt solche Begriffe wie Thread-Kontextwechselgeschwindigkeit und viele andere Feinheiten der Interaktion mehrerer Threads. Ich weiß, dass die Geschwindigkeit der Kontextumschaltung von Threads im Vergleich zu den Prozessen sehr hoch ist, aber es ist nicht kostenlos.
Außerdem, wie ich schon sagte, wird der Zugriff auf das Indikatorpufferelement durch CopyBuffer teurer sein als der Zugriff auf ein Array-Element durch seinen Index.
Auch die Möglichkeit,unnötige Berechnungen, die Größe interner Arrays und deren Indizierunginnerhalb des Expert Advisors zu optimieren, bietet ein großes Potenzial zur Reduzierung des Ressourcenverbrauchs.
Natürlich werden Sie Experimente und geeignete Tests benötigen, um eine vollständige Antwort auf Ihre Frage zu erhalten. Aber ich bin immer noch eher geneigt zu glauben, dass die durchschnittliche Leistung besser ist - alles in einem Expert Advisor Thread.
Und jedes Mal in einem Zyklus laufen? Die EMA wäre noch interessanter.
Verwendung des Single-Pass-Algorithmus zur Berechnung desexponentiell gewichteten Durchschnitts
ma = (1 - a) * Preis + a * ma
Ein normaler Indikator zählt alle Balken nur am Anfang und dann 1 Balken danach. Im Indikator ist es einfach, die SMA so zu gestalten, dass selbst bei der Berechnung von 1 Bar nicht die gesamte Periode der MA durchlaufen werden muss.
Natürlich können wir im Expert Advisor auch Array-Puffer erstellen. Aber wofür, wenn es ein speziell entwickeltes Element gibt - Indikatoren?
Wo liegt also das Problem? Eine neue Bar tauchte auf - wir haben sie in Betracht gezogen.
Ich möchte, dass der Expert Advisor nicht an einen Indikator gebunden ist. Eswürde die Balken berechnen und intern Kauf-/Verkaufssignale erfassen. Ist das möglich?
Berechnen Sie mit dem One-Pass-Algorithmus einenexponentiell gewichteten Durchschnitt
ma = (1 - a) * Preis + a * ma
Das ist nicht richtig!
Richtig ist:
ma[i] = (1 - a) * Preis + a * ma[i+1]
d.h. wir brauchen ein Array, dessen notwendige Tiefe vom Parameter a abhängt .
Andernfalls ist es ein völliger Unsinn, zumindest solange der Übergangsprozess dauert, was je nach Parameter a ziemlich lange dauern kann.
All dies lässt sich leicht überprüfen, indem man die Indikatorwerte mit den entsprechenden Berechnungen im EA vergleicht.Natürlich ist es auch möglich, Puffer aus einem Array im Expert Advisor zu erstellen... Aber warum, wenn es ein speziell entwickeltes Element gibt - Indikatoren?
Ich habe ein Problem mit dem Überspringen von Signalen aus einem Indikator, niemand gab eine Empfehlung
https://www.mql5.com/ru/forum/365021
Die Ausdrucke zeigen, dass das Ereignis vom Indikator kommt, der auf einen neuen Balken prüft, und dass die Daten des vorherigen Balkens und nicht des neuen Balkens vorhanden sind.
ich habe an 3 Terminals gleichzeitig getestet, beide Auslassungen waren in einem der drei Terminals, vielleicht ist es zufällig