Fehler, Irrtümer, Fragen - Seite 3018

 
Artyom Trishkin:

Dann müssen Sie die Indikatorlinie + Kerzen für den Indikator, der unter den Kerzen gezeichnet werden soll, einzeichnen. Für die anderen - die über den Candlesticks gezeichnet werden, stellen Sie das Diagramm so ein, dass die Candlesticks im Hintergrund gezeichnet werden. Ich persönlich sehe keinen anderen Weg.

Aber im Hinblick auf die Bequemlichkeit und Flexibilität bei der Erstellung von Programmen in MQL5 können Sie die MQL5-Entwickler bitten, eine Eigenschaft für den Indikatorpuffer (für jeden der Indikatorpuffer) zu erstellen.

 

in Build 2940 wurde Alglib umgeschrieben, jetzt ist die Arbeit mit komplexen Zahlen eine Struktur (es gab eine Klasse)

und Fehler gemacht:

#include <Math\Alglib\complex.mqh>
void OnStart()
{
      al_complex a(1, 2);
      al_complex b(3, 4);
      a += b;
      printf("tst#1 : a.real = %f , a.imag = %f", a.re, a.im);

      al_complex c(1, 2);
      al_complex d(3, 4);
      c -= d;
      printf("tst#2 : c.real = %f , c.imag = %f", c.re, c.im);
 }

2021.05.23 21:49:35.210 tst (EURUSD,H1) tst#1 : a.real = 4.000000 , a.imag = 6.000000

2021.05.23 21:49:35.210 tst (EURUSD,H1) tst#2 : c.real = 4.000000 , c.imag = 6.000000


Quellkomplex .mqh

//+------------------------------------------------------------------+
//| Overloading (+=)                                                 |
//+------------------------------------------------------------------+
void al_complex::operator+=(const al_complex &rhs)
  {
   re+=rhs.re;
   im+=rhs.im;
  }
//+------------------------------------------------------------------+
//| Overloading (-=)                                                 |
//+------------------------------------------------------------------+
void al_complex::operator-=(const al_complex &rhs)
  {
   re+=rhs.re;
   im+=rhs.im;
  }
 

Ich kann mich nicht erinnern, dass ein neuer Datentypkomplex angekündigt wurde, aber ohne Plugin-Bibliotheken funktioniert alles korrekt:

void OnStart()
{
      complex a(1, 2);
      complex b(3, 4);
      a += b;
      printf("tst#1 : a.real = %f , a.imag = %f", a.real, a.imag);

      complex c(1, 2);
      complex d(3, 4);
      c -= d;
      printf("tst#2 : c.real = %f , c.imag = %f", c.real, c.imag);
 }

2021.05.23 21:54:13.976 tst (EURUSD,H1) tst#1 : a.real = 4.000000 , a.imag = 6.000000

2021.05.23 21:54:13.976 tst (EURUSD,H1) tst#2 : c.real = -2.000000 , c.imag = -2.000000




Woher kommt der neue komplexe Typ? .... In der Hilfe steht nichts, und was wurde noch hinzugefügt?

 
Igor Makanu:

Ich kann mich nicht erinnern, dass ein neuer Datentypkomplex angekündigt wurde, aber ohne Plugin-Bibliotheken funktioniert alles korrekt:

2021.05.23 21:54:13.976 tst (EURUSD,H1) tst#1 : a.real = 4.000000 , a.imag = 6.000000

2021.05.23 21:54:13.976 tst (EURUSD,H1) tst#2 : c.real = -2.000000 , c.imag = -2.000000




Woher kommt der neue komplexe Typ? .... In der Hilfe steht nichts, und was wurde noch hinzugefügt?

Von den Entwicklern wurde bestätigt, dass neue Typen hinzugefügt wurden. Kürzlich.

 
Igor Makanu:

Ich kann mich nicht erinnern, dass ein neuer Datentypkomplex angekündigt wurde, aber ohne Plugin-Bibliotheken funktioniert alles korrekt:

2021.05.23 21:54:13.976 tst (EURUSD,H1) tst#1 : a.real = 4.000000 , a.imag = 6.000000

2021.05.23 21:54:13.976 tst (EURUSD,H1) tst#2 : c.real = -2.000000 , c.imag = -2.000000

Woher kommt der neue komplexe Typ? .... In der Hilfe steht nichts, und was wurde noch hinzugefügt?

Hier:

7. MQL5: Unterstützung für Operationen mit komplexen Zahlen hinzugefügt.


Neuer eingebauter Typ "complex" hinzugefügt.
struct complex
  {
   double             real;   // вещественная часть
   double             imag;   // мнимая часть
  };
Der "komplexe" Typ kann als Wert als Parameter für MQL5-Funktionen übergeben werden (im Gegensatz zu üblichen Strukturen, die nur per Referenz übergeben werden). Bei Funktionen, die aus der DLL importiert werden, muss der "komplexe" Typ nur per Referenz übergeben werden.

Zur Beschreibung komplexer Konstanten wird das Suffix "i" verwendet:
.
complex square(complex c)
  {
   return(c*c);
  }
  
void OnStart()
  {
   Print(square(1+2 i));  // в качестве параметра передается константа
  }

// будет выведено "(-3,4)" - это строковое представление комплексного числа
Für komplexe Zahlen gibt es nur einfache Operationen: =, +, -, *, /, +=, -=, *=, /=, ==, !=.

Weitere mathematische Funktionen werden in Zukunft hinzugefügt: Absolutwert, Sinus, Kosinus und viele andere.
Новая версия платформы MetaTrader 5 build 2940: Перенос витрин MQL5-сервисов в рабочую область и обновление дизайна
Новая версия платформы MetaTrader 5 build 2940: Перенос витрин MQL5-сервисов в рабочую область и обновление дизайна
  • 2021.05.14
  • www.mql5.com
В пятницу 21 мая 2021 года будет выпущена обновленная версия платформы MetaTrader 5...
 
Artyom Trishkin:

Hier:

7. MQL5: Unterstützung für die Arbeit mit komplexen Zahlen hinzugefügt.


Es wurde ein neuer eingebauter Typ "complex" hinzugefügt.
Der komplexe Typ kann als Wert als Parameter für MQL5-Funktionen übergeben werden (im Gegensatz zu den üblichen Strukturen, die nur per Referenz übergeben werden). Bei Funktionen, die aus der DLL importiert werden, muss der "komplexe" Typ nur per Referenz übergeben werden.

Zur Beschreibung komplexer Konstanten wird das Suffix 'i' verwendet:
Für komplexe Zahlen sind derzeit nur einfache Operationen verfügbar: =, +, -, *, /, +=, -=, *=, /=, ==, !=.

In Zukunft werden weitere mathematische Funktionen hinzukommen: Absolutwert, Sinus, Kosinus und viele andere.

OK, danke, schade, dass die Hilfe zu spät kommt.

 
Ausführungsfehler:
void OnStart()
{
    const string text[] = { "ABC", "", "ABC" };
    uchar array[];
    int start = 0;
    int n = 0;
    for ( int i = 0; i < ArraySize( text ); i++ )
    {
        const int count = StringLen( text[ i ] );
        n += StringToCharArray( text[ i ], array, start, count );
        start += count;
    }
    Print( ArraySize( array ), ":", n );
}

Ergebnis: 6:7

Erwartet: 6:6

 
A100:
Ausführungsfehler:

Ergebnis: 6:7

Erwartet: 6:6

count = 0 - nur das Ende der Zeichenkette wird kopiert. Doch "" != NULL.

 
fxsaber:

count = 0 - nur das Ende der Zeichenkette wird kopiert. Noch "" != NULL.

Und wie viele

StringToCharArray

Soll die Kopie bei count = 0 erfolgen?

Hinweis: 3 Zeichen werden kopiert, wenn count = 3

 
A100:

sollen die Zeichen kopiert werden, wenn count = 0 ist?

Es sieht so aus, als ob count=0 genauso funktioniert wie count=-1 und im Fall von "" ein Terminal Null kopiert, so dass eine leere Zeichenkette ohne zusätzliche Prüfungen nicht normal konvertiert werden kann.