Fehler, Irrtümer, Fragen - Seite 279

 
Rosh:
Nein.
Deshalb kann der gleichzeitige Zugang nicht organisiert werden:(((
 
Olegts:
Deshalb kann der gleichzeitige Zugang nicht organisiert werden:(((.

Sie können die im MT5 mit dem Share-Flag geöffnete Datei auch in jedem anderen Programm, einschließlich MT4, verwenden.

Sehen Sie hier, wie es gemacht wird.

d.h. wenn die Datei bereits in MT4 geöffnet ist, kann sie mit dem Flag Shaare problemlos in MT5 geöffnet werden. Es stellt sich heraus, dass MT4 wie gewohnt funktioniert, während MT5 anderen Programmen erlauben kann, eine bereits von ihm geöffnete Datei zu verwenden oder eine Datei zu öffnen, die von jemand anderem ohne das Flag von shahre geöffnet wurde.

 
Urain:

Sie können die im MT5 mit dem Share-Flag geöffnete Datei auch in jedem anderen Programm, einschließlich MT4, verwenden.

Sehen Sie hier, wie es gemacht wird.

Danke, ich werde es mir gleich ansehen...
 
Olegts:
Danke, ich werde es mir jetzt ansehen...
Ich habe nachgesehen, MT5 schreibt und MT4 liest, es funktioniert, aber wenn MT4 schreibt, kann MT5 nicht lesen, weil die Datei blockiert ist, zumindest hat es bei mir nicht funktioniert...
 
Im Hilfeabschnitt der Datentypbeschreibung heißt es:
<br / translate="no">

Aus diesem Grund ist es kategorisch nicht empfehlenswert, zwei reelle Zahlen auf Gleichheit zu vergleichen, da ein solcher Vergleich nicht korrekt ist.

Und es wird eine spezielle Vergleichsmethode vorgeschlagen.

Wenn Sie noch zwei reelle Zahlen auf Gleichheit vergleichen müssen, können Sie...

Daraus folgt aber die logische Schlussfolgerung, dass es nicht empfehlenswert ist, reelle Zahlen auch mit Hilfe von Größer-/Kleiner-Operationen zu vergleichen, weil eine solche Operation im Sinne des oben Gesagten nur dann korrekt ist, wenn zuvor mit einer speziellen Methode korrekt festgestellt wird, dass die überprüften Werte nicht gleich sind, was die Maschinennull betrifft.

D.h. es stellt sich heraus, dass die Operatoren > und < für reelle Zahlen auch nicht in reiner Form verwendet werden können. Habe ich es richtig verstanden, und wenn ja, warum füge ich dann nicht einen entsprechenden Kommentar zur Hilfe hinzu?


Aber wenn der Operator, z.B. >, nur nach einer korrekten Prüfung auf Ungleichheit verwendet werden kann, wie können wir dann die Prüfung für >= organisieren? Ist es notwendig, den Algorithmus noch komplizierter zu machen, d.h. erst mit einer speziellen Funktion auf Gleichheit und dann mit einer speziellen Funktion auf Ungleichheit zu prüfen (bevor > verwendet wird)?


Vielleicht hat jemand bereits eine Bibliothek für alle Vergleichsfälle sowohl für Double- als auch für Float-Typen entwickelt? Ich habe eine Skizze für eine doppelte Schrift entworfen - ich weiß nicht, ob sie richtig ist:

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Функция проверки на равенство двух вещественных чисел типа double
bool EqualDoubles(const double d1, const double d2)
   {  
      const double epsilon=2.2204460492503131 e-016;//DBL_EPSILON
      if(d1-d2>epsilon) return false;
      if(d1-d2<-epsilon) return false;
      return true;
   }
// Конец функции проверки на равенство двух вещественных чисел типа double
//+++++++++++++++++++++++++++++++++++++++++++++++++
// Функция проверки на неравенство двух вещественных чисел типа double
bool NotEqualDoubles(const double d1, const double d2)
   {      
      return !EqualDoubles(d1, d2);
   }
// Конец функции проверки на неравенство двух вещественных чисел типа double
//+++++++++++++++++++++++++++++++++++++++++++++++++
// Функция проверки на меньшинство первого из двух вещественных чисел типа double
bool LessDoubles(const double d1, const double d2)
   {  
      if (NotEqualDoubles(d1, d2)&&(d1<d2))
      {
         return true;
      }
      return false;
   }
// Конец функции проверки на меньшинство первого из двух вещественных чисел типа double
//+++++++++++++++++++++++++++++++++++++++++++++++++
// Функция проверки на большинство первого из двух вещественных чисел типа double
bool GreaterDoubles(const double d1, const double d2)
   {  
      if (NotEqualDoubles(d1, d2)&&(d1>d2))
      {
         return true;
      }
      return false;
   }
// Конец функции проверки на большинство первого из двух вещественных чисел типа double
//+++++++++++++++++++++++++++++++++++++++++++++++++
// Функция проверки на меньшинство первого или равенство двух вещественных чисел типа double
bool LessEqualDoubles(const double d1, const double d2)
   {  
      if (LessDoubles(d1, d2)||EqualDoubles(d1, d2))
      {
         return true;
      }
      return false;
   }
// Конец функции проверки на меньшинство первого или равенство двух вещественных чисел типа double
//+++++++++++++++++++++++++++++++++++++++++++++++++
// Функция проверки на большинство первого или равенство двух вещественных чисел типа double
bool GreaterEqualDoubles(const double d1, const double d2)
   {  
      if (GreaterDoubles(d1, d2)||EqualDoubles(d1,d2))
      {
         return true;
      }
      return false;
   }
// Конец функции проверки на большинство первого или равенство двух вещественных чисел типа double

P.S. Wenn prevcalculated==0 funktioniert wieder wie gewohnt. Schwebender Fehler?

 

Guten Tag!

Ich muss einen benutzerdefinierten Indikator im Modul für Handelssignale verwenden.

Dazu muss ich, soweit ich das verstehe, einen Zeiger auf dieses Indikatorobjekt in der "Sammlung von Indikatoren (Zeitreihen?)" hinzufügen, wie es im Beispiel gemacht wird:

indicators.Add(GetPointer(m_MA)))

wobei m_MA ein Objekt der Klasse CiMA ist.

Die Funktionen iCustom und IndicatorCreate geben den Integer-Wert eines Handles des erstellten Indikators zurück, aber ich brauche ein Objekt dieses Indikators, wie ich es verstehe.

Bitte beraten Sie mich, wie ich aus dieser Situation herauskomme.

Переход на новые рельсы: пользовательские индикаторы в MQL5
Переход на новые рельсы: пользовательские индикаторы в MQL5
  • 2009.11.23
  • Андрей
  • www.mql5.com
Я не буду перечислять все новые возможности и особенности нового терминала и языка. Их действительно много, и некоторые новинки вполне достойны освещения в отдельной статье. Вы не увидите здесь кода, написанного по принципам объектно-ориентированного программирования — это слишком серьезная тема для того, чтобы просто быть упомянутой в контексте как дополнительная вкусность для кодописателей. В этой статье остановимся подробней на индикаторах, их строении, отображении, видах, а также особенностях их написания по сравнению с MQL4.
 
lVlaxim:

Guten Tag!

Ich muss einen benutzerdefinierten Indikator im Modul für Handelssignale verwenden.

Dazu muss ich, soweit ich das verstehe, einen Zeiger auf dieses Indikatorobjekt in der "Sammlung von Indikatoren (Zeitreihen?)" hinzufügen, wie es im Beispiel gemacht wird:

wobei m_MA ein Objekt der Klasse CiMA ist.

Die Funktionen iCustom und IndicatorCreate geben den Integer-Wert eines Handles des erstellten Indikators zurück, aber ich brauche ein Objekt dieses Indikators, wie ich es verstehe.

Bitte beraten Sie mich, wie ich aus dieser Situation herauskomme.

Soweit ich das verstehe, sollte ich mein eigenes Indikatorobjekt auf der Grundlage von CiCustom schreiben (ähnlich wie CiMA geschrieben ist).

Ich kann Ihnen keine detaillierten Ratschläge geben, da ich nicht mit Induks gearbeitet habe, aber ich denke, Sie werden es verstehen, oder die Leute werden Ihnen die richtige Erkenntnis mitteilen.

PS

Übrigens, Entwickler, fügen Sie bitte Beispiele in den Abschnitt über CiCustom ein...

 
-Alexey-:

Und es wird eine spezielle Vergleichsmethode vorgeschlagen.

Daraus folgt aber logischerweise, dass es nicht empfehlenswert ist, reelle Zahlen auch mit Hilfe von Größer-/Kleiner-Operationen zu vergleichen, weil eine solche Operation im obigen Sinne nur dann korrekt ist, wenn zuvor mit einer speziellen Methode korrekt festgestellt wurde, dass die zu prüfenden Werte nicht gleich im Sinne der Maschine Null sind.

Vielleicht habe ich den Punkt nicht ganz verstanden, aber wenn zwei reelle Zahlen z.B. mit Hilfe der Operation "<" verglichen werden und die zu prüfenden reellen Zahlen "gleich im Sinne der Maschine Null" sind, wird die Operation "<" einfach falsch zurückgeben. Das bedeutet "die erste reelle Zahl ist nicht kleiner als die zweite reelle Zahl".
 
lVlaxim:

Guten Tag!

Ich muss einen benutzerdefinierten Indikator im Modul für Handelssignale verwenden.

Dazu muss ich, soweit ich das verstehe, einen Zeiger auf dieses Indikatorobjekt in der "Sammlung von Indikatoren (Zeitreihen?)" hinzufügen, wie es im Beispiel gemacht wird:

wobei m_MA ein Objekt der Klasse CiMA ist.

Die Funktionen iCustom und IndicatorCreate geben den Integer-Wert eines Handles des erstellten Indikators zurück, aber ich brauche ein Objekt dieses Indikators, wie ich es verstehe.

Können Sie mir bitte sagen, wie ich aus dieser Situation herauskommen kann?

Nehmen Sie zunächst diese Datei als Beispiel.

Die Klasse CSignalCustomMACD ist absolut identisch mit CSignalMACD, mit der Ausnahme, dass sie auf der "benutzerdefinierten" Version des Indikators aus der Standardauslieferung basiert.

Vergessen Sie nicht, eine Zeile in den Quellcode des Expert Advisors einzufügen:

#property tester_indicator "Examples\MACD.ex5"

sonst wird es im Tester nicht funktionieren.

Wenn sich im Ordner Indicators\Examples keine Datei MACD.ex5 befindet, muss der Indikator kompiliert werden.

Ein Beispiel in der Hilfe wird in Kürze hinzugefügt.

Dateien:
 
Yedelkin:
Vielleicht verstehe ich das Problem nicht ganz, aber wenn zwei reelle Zahlen z.B. mit der Operation "<" verglichen werden und die zu prüfenden reellen Zahlen "gleich im Sinne der Maschine Null" sind, dann gibt die Operation "<" einfach false zurück, und das war's. Das würde bedeuten: "Die erste reelle Zahl ist nicht kleiner als die zweite reelle Zahl".
Das wäre logisch, aber jetzt ist die Operation ">" ("<" wurde nicht geprüft) kann für solche Zahlen, die "gleich im Sinne von Maschinennull" sind, true zurückgeben. Der Effekt wurde entdeckt, weil das Ergebnis der numerischen Berechnung aufgrund dieses Effekts größer war als theoretisch möglich, aber nach der Verwendung der oben genannten speziellen Funktionen wurde es wahr. Deshalb schlage ich eine Ergänzung der Hilfe vor.