Fehler, Irrtümer, Fragen - Seite 3108

 
Nikolai Semko #:

Ich hab's.
Oh, dieser Sonnenfinsterniskorridor...

Ich habe in meiner Demo seit 40 Stunden keine Verbindung mehr und die Zeit läuft weiter.

 
Nikolai Semko #:

Neue Produktversionen können nicht übersprungen werden, obwohl es vorher gut funktioniert hat.


Es sieht so aus, als ob ich nicht derjenige mit dem Problem bin.
build 3110

Gestern hatten wir Probleme mit der Verbindung zum MetaQuotes-Demo-Server, der u.a. zur Validierung von Marketplace-Produkten verwendet wird.

Wir haben diesen Fehler gestern behoben und alle Produkte, die aus technischen Gründen nicht validiert werden konnten, erneut überprüft.

Wir entschuldigen uns für die Unannehmlichkeiten.

Wenn wir Ihr Produkt versehentlich übersehen haben und es nicht noch einmal überprüft haben, tun Sie dies bitte selbst. Die Validierung sollte nun normal funktionieren.

 

Hier ist ein Beispielcode:

//+------------------------------------------------------------------+
#property strict
//+------------------------------------------------------------------+
void OnStart()
  {
  uint iCurrent =722;
  int  iinterval=1000;         
  int  iNext=(int)(iCurrent-iinterval/2); // 722-500=222
  Print ("Current :",iCurrent);
  Print ("iNext   :",iNext);
  long  temp=(long)(iNext-iCurrent); //предупреждений нет ожидаем Лонг -500
  Print ( " temp (long):",temp);//int - uint ->uint Result: uint -- oшибка!

  Print ( " delta(&int)"+string((int)(iNext-iCurrent)));    // неожиданный успех  
  Print ( " delta(&long)"+string((long)(iNext-iCurrent)));  // опять штанга
  //-----------------------------------
 }

Ergebnis:

2021.11.23 13:07:35.931 testUint (Volatility 75 Index,M15)      Current :722
2021.11.23 13:07:35.932 testUint (Volatility 75 Index,M15)      iNext   :222
2021.11.23 13:07:35.932 testUint (Volatility 75 Index,M15)       temp (long):4294966796
2021.11.23 13:07:35.932 testUint (Volatility 75 Index,M15)       delta(&int)-500
2021.11.23 13:07:35.932 testUint (Volatility 75 Index,M15)       delta(&long)4294966796

Kann jemand erklären - warum

long  temp=(long)(iNext-iCurrent);

gibt

4294966796

und nicht -500.

Ich weiß nicht, was in meinem Kopf vor sich geht... (

 
Mikhail Dovbakh #:

Hier ist ein Beispielcode:

Ergebnis:

Kann jemand erklären - warum

gibt

und nicht -500.

Ich weiß nicht, was in meinem Kopf vor sich geht... (

long temp=(long)iNext-iCurrent;

https://www.mql5.com/ru/docs/basis/types/casting

Sie haben iNext zunächst auf eine vorzeichenlose Ganzzahl reduziert. Dann wird das Ergebnis der Ganzzahl ohne Vorzeichen in einen Long-Wert umgewandelt.

In meinem Beispiel wird iNext sofort in den Long-Typ umgewandelt, also wird auch iCurrent in den Long-Typ umgewandelt, allerdings implizit. Das Ergebnis wird sofort in long umgewandelt

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Приведение типов - Типы данных - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Slava #:

Die Frage war, warum diese Art von Auftrag nicht das richtige Ergebnis liefert. Ich kann nur vermuten, dass es von der Reihenfolge der Typenhierarchie im Ausdruck abhängt. Wenn die Typen im Ausdruck zur Laufzeit hierarchisch geordnet sind, ist die Antwort richtig, und wenn nicht, kann eine nicht explizite Typkonvertierung, die die Hierarchie verletzt, den Wert der Variablen ändern.

long temp=(long)((int)iNext-(uint)iCurrent); 

Im Allgemeinen verletzt eine nicht-explizite Typumwandlung die Hierarchie.

 
MetaQuotes #:

Gestern hatten wir Probleme mit der Verbindung zum MetaQuotes-Demo-Server, der u.a. für die Validierung von Marketplace-Produkten verwendet wird.

Wir haben dieses Problem gestern behoben und alle Produkte, die aus technischen Gründen nicht validiert werden konnten, erneut geprüft.

Wir entschuldigen uns für etwaige Unannehmlichkeiten.

Wenn wir Ihr Produkt versehentlich übersehen haben und es nicht revalidiert wird, tun Sie dies bitte selbst. Die Prüfung sollte jetzt wie gewohnt funktionieren.

Ich danke Ihnen!
Jetzt funktioniert alles.
 
Slava #:

https://www.mql5.com/ru/docs/basis/types/casting

Sie haben iNext zunächst auf eine Ganzzahl ohne Vorzeichen reduziert. Dann wird das Ergebnis der Ganzzahl ohne Vorzeichen in einen Long-Wert umgewandelt.

In meinem Beispiel wird iNext sofort in den Long-Typ umgewandelt, also wird auch iCurrent in den Long-Typ umgewandelt, nur implizit. Das Ergebnis wird sofort in long

können Sie sehen, warum

 Print ( " delta(&int)"+string((int)(iNext-iCurrent)));    // неожиданный успех 

и

int itemp=(int)(iNext-iCurrent); 


das richtige Ergebnis liefert?

Ihrer Beschreibung folgend , wandeln wir zunächst iNext in eine Ganzzahl ohne Vorzeichen um. Das Ergebnis der vorzeichenlosen Ganzzahl wird dann in eine Ganzzahl mit Vorzeichen umgewandelt.

Richtig?

 

Trendlinie nicht magnetisiert zu niedriger roter Kerze(EURUSD, M5;Genaue Zeitskala; Magnetisierung: 15)


 
Mikhail Dovbakh #:

dann erklären Sie, warum.

и

int itemp=(int)(iNext-iCurrent); 


das richtige Ergebnis liefert?


Einfach

eine ganze Zahl ohne Vorzeichen mit einer Länge von 32 Bits 4294966796 ergibt bei der Umwandlung in eine ganze Zahl mit Vorzeichen der gleichen Dimension -500

 
Valeriy Yastremskiy #:

Die Frage war, warum diese Art von Auftrag nicht das richtige Ergebnis liefert. Ich kann nur vermuten, dass es von der Reihenfolge der Typenhierarchie im Ausdruck abhängt. Wenn die Typen im Ausdruck zur Laufzeit hierarchisch geordnet sind, ist die Antwort richtig, und wenn nicht, kann eine nicht explizite Typkonvertierung, die die Hierarchie verletzt, den Wert der Variablen ändern.

Zy Im Allgemeinen eine nicht explizite Typumwandlung und ein Verstoß gegen die Hierarchie.

Ich habe Ihnen bereits den Link https://www.mql5.com/ru/docs/basis/types/casting gegeben.

Hier steht alles in aller Ausführlichkeit. Lesen Sie es von Anfang bis Ende, ohne etwas zu verpassen

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Приведение типов - Типы данных - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5