Fehler, Irrtümer, Fragen - Seite 529

 

Meine Frage ist schon weggeflogen.) Ich sage es noch einmal.

tol64:
Почему то между 2001 и 2006 годом не тестируются эксперты. Смотрел по евро и фунту. Закрыл терминал, удалил историю. Закачалась заново. Всё равно. До 2001 сделки открываются. А начиная с 2001 по 2006 при наличии сигналов пропуск. Почему?

---
Дополнительная информация. Это происходит только, если в настройках тестера выбран таймфрейм D1. Если выбрать таймфрейм D1 в настройках эксперта, а в настройках тестера меньший ТФ, то пропуска нет. Это баг или есть какое-то этому объяснение? 

Ist jemand auf ein ähnliches Problem gestoßen?
 
Yedelkin:
Schauen Sie sich den vom Autor angegebenen Code an. Und in welchem Fall PositionGetDouble aufgerufen wird :)

Nun, ja, wir erhalten die Daten, nachdem wir festgestellt haben, dass es im Prinzip keine Positionen gibt und die Auswahl einer bestimmten Position fehlgeschlagen ist...

Es ist irgendwie seltsam.

 
papaklass:

An Vedelkin.

Noch einmal. In der Referenz heißt es, dass zur Gewährleistung frischer Positionsdaten empfohlen wird, die Funktion PositionSelect( Symbol() ) kurz vor dem Aufruf aufzurufen. Der Code, den ich hier bereitgestellt habe, widerlegt diese Aussage. Logisch gesehen ist der Code selbst unsinnig, aber er unterstreicht die Unrichtigkeit der Aussage in der Hilfe.

Jetzt:

Und der Fehler ist, dass die Funktion PositionGetDouble(POSITION_VOLUME) Null zurückgeben sollte, wenn es keine Position gibt. Das war's. IMHO.

Nein,Sie sind falsch....

Null zurückgeben, wenn Es gibt(PositionSelect() ) Position mit Volumen=0.

Odersind Sie der Meinung, dass Sie, wenn es keine Position gibt, Null und den Eröffnungskurs =0 zurückgeben sollten?!?

 
papaklass:

Und der Fehler ist, dass die Funktion PositionGetDouble(POSITION_VOLUME) Null zurückgeben sollte, wenn es keine Position gibt.

:) Der "Fehler" besteht darin, dass es in Ermangelung einer offenen Position keinen Sinn macht, deren Daten anzufordern und auf der Grundlage dieser Daten weitere Berechnungen anzustellen.

Nehmen wir an, Sie wissen mit Sicherheit, dass es keine Position gibt. Warum also sollten Sie die Daten anfordern (um zusätzliche Schritte zu unternehmen), wenn Sie bereits wissen, dass es keine Position gibt? Es ist einfacher, den Code ein wenig umzuschreiben.

papaklass:

Noch einmal. In der Referenz heißt es, dass die Funktion PositionSelect( Symbol() ) kurz vor dem Aufruf der Funktion aufgerufen werden sollte, um die garantierte Erfassung neuer Positionsdaten zu gewährleisten. Der Code, den ich hier bereitgestellt habe, widerlegt diese Aussage. Logisch gesehen ist der Code selbst unsinnig, aber er unterstreicht die Unrichtigkeit der Aussage in der Hilfe.

Der obige Code besagt nur, dass der Autor "zur Gewährleistung frischer Daten" die Funktion PositionSelect() aufruft, die Funktion meldet ihren Misserfolg, aber der Autor verlangt trotzdem frische Positionsdaten. Ist das richtig?

Aber dann bekommen wir folgendes:

  • (a) Das Scheitern der Funktion PositionSelect bedeutet, dass keine neuen Positionsdaten in die Softwareumgebung kopiert wurden (wie vom Autor gewünscht);
  • und (b) nachfolgende Aufrufe von PositionGetDouble, PositionGetInteger und PositionGetString geben Daten zurück, die schon einmal kopiert wurden, als die Funktion PositionSelect erfolgreich war
  • .

Mit anderen Worten, die Entwickler empfehlen, die Funktion aufzurufen, um mit frischen Positionsdaten weiterzuarbeiten, wenn die Funktion erfolgreich abgeschlossen wurde, und sie versprechen überhaupt nichts, wenn die Funktion false zurückgibt. ...Wenn false empfangen wird, empfehlen die Entwickler eine etwas andere Vorgehensweise :)

2. außerdem betrachten wir eine neue Version des Codes:

if(PositionSelect(Symbol()))
   {//---еще одно непосредственное обращение
      //---например, расчитываем объем позиции при доливки
   } 
else 
   {
      //---например, расчитываем объем позиции при отсутствии позиции
   }

Wenn die Funktion PositionSelect() fehlschlägt, werden wir aufgefordert, "den Betrag der Position zu berechnen , wenn es keine Position gibt". Aber wer sagt, dass das Scheitern der Funktion PositionSelect() automatisch bedeutet, dass es keine Position gibt? Die Gründe für das Scheitern der Funktion PositionSelect() können unterschiedlich sein.

 

Ich möchte die Entwickler noch einmal belästigen...

Ich möchte mit der Zeichnung darauf hinweisen, dass es von entscheidender Bedeutung ist,schwebende Aufträge löschen zu können, wenn ein bestimmter Preis erreicht ist. Ich bin viel mehr daran interessiert, als MT4-Händler ohne eine solche Option. Bitte sagen Sie mir, was Ihre zukünftigen Pläne in dieser Richtung sind. Ich danke Ihnen.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
Dateien:
zhq04b2p01.png  16 kb
 

Bei der Arbeit mit dem Tester stürzt das Terminal sehr oft ab.

 
tol64:

Bei der Arbeit mit dem Tester stürzt das Terminal sehr oft ab.

Die Abstürze des Terminals werden den Entwicklern regelmäßig im automatischen Modus gemeldet. Aber wenn Sie wollen, können Sie einen Antrag auf die CD mit allen Einzelheiten stellen und die Protokolle beifügen.
 
tol64:

Bei der Arbeit mit dem Tester stürzt das Terminal sehr oft ab.

Beschreiben Sie dem Service Desk Ihre Situation im Detail und geben Sie an

  • Eingabeparameter des Expert Advisors während des Tests
  • Indikator anbringen (der Indikator wird nach der Befestigung wieder entfernt).
 
Interesting:
Terminal-Absturzberichte scheinen regelmäßig automatisch bei den Entwicklern einzutreffen. Wenn Sie möchten, können Sie jedoch einen Antrag an die zuständige Behörde stellen, in dem Sie alle Einzelheiten angeben und die Protokolle anhängen.
Die Informationen, die in Details>> stehen, werden also automatisch an die Entwickler gesendet, wenn das Internet? Wenn ja, dann ist das großartig. Alles sollte automatisiert werden.)))
 
ALozovoy:

Beschreiben Sie dem Service Desk Ihre Situation im Detail und geben Sie an

  • Eingabeparameter des Expert Advisors während des Tests
  • Indikator anbringen (der Indikator wird nach der Befestigung wieder entfernt).

Okay, ich werde es später tun.