Ergebnis 1 bis 10 von 10

Thema: Frage zu icustom

  1. #1
    Ich arbeite an einem EA für meinen CARMEN-Indianer und habe eine Frage.

    Ich verwende icustom, und wenn ich den Backtest durchführe, sehe ich, dass der Indior bei jedem Tick geladen und entfernt wird, was den Backtest enorm verlangsamt. Wo lege ich den icustom an oder wie strukturiere ich den Code, damit dies nicht geschieht?

  2. #2
    Sie sind sich nicht sicher, wie Ihr EA eingerichtet ist, aber wenn es so ist wie die meisten, überprüfen Sie nur den vorherigen Balken, um Ihre Werte zu ermitteln, sodass Sie einfach jedes Mal einen neuen Balken überprüfen können. if (Zeit [1]! = Prüfzeit) {carmenvalue = icustom (blahblahblah); Kontrollzeit = Zeit [1]); }

  3. #3

    Zitat Zitat von ;
    Sie sind sich nicht sicher, wie Ihr EA eingerichtet ist, aber wenn es so ist wie die meisten, überprüfen Sie nur den vorherigen Balken, um Ihre Werte zu ermitteln, sodass Sie einfach jedes Mal einen neuen Balken überprüfen können. if (Zeit [1]! = Prüfzeit) {carmenvalue = icustom (blahblahblah) Kontrollzeit = Zeit [1]); }
    Ich benutze diesen Code bereits, um meinen Indior nur einmal eine Bar zu laden, das ist nicht mein Problem. Mein Problem ist, dass ich jedes Mal, wenn ich es lade, alle Balken neu berechnet. Ich brauche es natürlich nur, um den letzten Takt neu zu berechnen. Irgendwelche Ideen? Mir ist bekannt, dass beim Zeichnen eines Indior die Funktion IndiorCounted () verwendet wird, um festzustellen, wie viele Balken sich seit dem letzten Tick geändert haben. Der Indior bestimmt dann, wie viele Balken erneut berechnet werden müssen passiert, wenn der Indior in einem EA verwendet wird. Aus einem Grund wird in einem EA nichts geplottet.

  4. #4

    Zitat Zitat von ;
    Ich benutze diesen Code bereits, um meinen Indior nur einmal eine Bar zu laden, das ist nicht mein Problem. Mein Problem ist, dass ich jedes Mal, wenn ich es lade, alle Balken neu berechnet. Ich brauche es natürlich nur, um den letzten Takt neu zu berechnen. Irgendwelche Ideen? Mir ist bekannt, dass beim Zeichnen eines Indior die Funktion IndiorCounted () verwendet wird, um festzustellen, wie viele Balken sich seit dem letzten Tick geändert haben. Der Indior bestimmt dann, wie viele Balken erneut berechnet werden müssen passiert, wenn der Indior in einem EA verwendet wird. Aus einem Grund, in einem EA nichts ...
    Wenn es nicht notwendig ist (und es nicht notwendig ist, weil Sie keinen Indexpuffer zeichnen), entfernen Sie die for-Schleife aus Ihrem icustom indior (oder ändern Sie den for-Wert, um den Wert bei 0 anzuhalten, nur einen Durchlauf), also nur zieht Daten aus dem Feld, das Sie in Ihren Parametern angeben. Sie können dies als speziellen Indior speichern, sodass es nicht mit dem benutzerdefinierten Indior verwechselt wird, den Sie in Ihrem Diagramm platzieren. Sie können auch alle nicht benötigten externen Eingänge entfernen, indem Sie die externen für jeden löschen, der nicht geändert wird, wenn der EA den benutzerdefinierten Indior aufruft. Auf diese Weise wird nur das Indexpufferelement berechnet, das Sie aufrufen. Sie könnten also folgende Aufrufe haben: varA = iCustom (bla bla bla, 1,0); varB = iCustom (bla bla bla, 1,1); varC = iCustom (bla bla bla, 0,0); varD = iCustom (bla bla bla, 0,4); Und so weiter.

  5. #5
    Die einzige Variable, die Sie in Ihrem iCustom-Aufruf ändern dürfen, ist der Verschiebungswert, ohne dass eine Neuberechnung ausgelöst wird. Wenn Sie einen der Parameterwerte ändern, erstellt MT4 einen ganzen neuen Datensatz für diesen neuen Parametersatz. Sie sehen also eine Neuberechnung eines ganz neuen Satzes von Puffern mit der Erwartung, daß Sie in Zukunft einen Aufruf zum Abrufen von Daten von diesen Puffern mit demselben Satz von Parametern machen werden - wenn Sie jedoch die Parameter ständig ändern, ist dies nicht der Fall wahrscheinlich und Ihre Performance-Spiralen nach unten. Wenn Sie tatsächlich in Echtzeit handeln, werden die meisten Indis nur für die neuesten Bars und nicht für die gesamte Historie neu berechnet.

  6. #6
    Ich würde den nützlichen Code, der die Berechnung durchführt, aus dem Indior extrahieren, ihn als Funktion in eine Bibliothek einfügen und die Datei #include einschließen und die Funktion vom EA aufrufen. Dann muss iCustom überhaupt nicht verwendet werden. Auf diese Weise erreichen Sie die maximale Geschwindigkeit. PS: Wenn Sie dies tun, können Sie möglicherweise dieselbe Bibliothek für Ihren ursprünglichen Indior verwenden, damit Sie nicht viel Code duplizieren.

  7. #7
    Hallo, ich benutzte einen indior mit dem Namen pattern_recognition_master_v3, aber ich bekam Divisionsfehler, suchte nach einer Lösung und fand in diesem Forum eine Lösung. Ich wurde Mitglied und fand heraus, dass eines der Mitglieder Code in Version 7 neu geschrieben hatte Wenn ich den Test rückgängig mache und die App dann aufruft, wurden die Journalberichte erfolgreich geladen und bei jedem Tick entfernt. Ich änderte auch diesen Indior in v8, wodurch die Zählung der bereits gezählten Balken gestoppt wird Ich habe getan, wie Kinghigh sagt und eine Variable in meinem ea geändert hat, die dies verursacht, oder vielleicht wurde eine Variable in v7 v6 v5 oder v4 des indior dafür modifiziert, um mein ea von grobem zu werfen eine ganze Ladung Bool-Trues, geteilt durch die ungeraden Farben und Int!

  8. #8
    3 Anhang (e) Dies sind die von mir in meiner vorherigen Nachricht erwähnten Hintergründe, falls jemand einen Blick darauf werfen möchte, dass es in diesem Forum einen ganzen Thread gibt
    https://www.tradingintuitive.com/att...2032018630.mq4
    https://www.tradingintuitive.com/att...6234096217.mq4
    https://www.tradingintuitive.com/att...1495272900.mq4

  9. #9
    Vielen Dank für diesen Thread. Ich habe gerade die Lösung gefunden, um meinen EA zu reparieren.

  10. #10
    behebt es grob die Variable für extra Ziffer wurde von Don entfernt, so dass alles, was ich tun musste, zuerst in meinem icustom entfernt werden muss und das Problem sortiert wird mit Ausnahme der letzten (Schicht). Wenn Sie sie anders benötigen, ändern Sie den Code für die Innenausstattung, aber wenn jemand anderes es tut, stellen Sie sicher, dass Sie auf dem Laufenden sind !! Schöne Lektion heute gelernt Ich glaube, ich mag dieses Forum! nach jemandem gesucht, der mir bei Problemen helfen kann, scheint dieses Forum einen guten Job zu machen!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •