Hatalar, hatalar, sorular - sayfa 3108

 
Nikolai Semko # :

Açık.
Ah bu tutulmalar koridoru...

Demo için zamanım var, bağlantı olmadığı andan itibaren zaten 40 saat oldu.

 
Nikolai Semko # :

Daha önce her şey hatasız olmasına rağmen, ürünlerin yeni sürümlerini kaçırmaz.


Sorun bende değilmiş gibi görünüyor.
3110 inşa

Dün, Market ürünlerini doğrulamak için de kullanılan MetaQuotes-Demo sunucusuna bağlanırken sorun yaşadık.

Bu sorunu dün düzelttik ve teknik nedenlerle doğrulanamayan tüm ürünleri yeniden doğruladık.

Sebep olduğumuz herhangi bir rahatsızlık için özür dileriz.

Ürününüzü yanlışlıkla gözden kaçırdıysak ve yeniden başlatmadıysak, lütfen kendiniz yapın. Şimdi kontrol normal şekilde çalışmalıdır.

 

İşte bir kod örneği:

 //+------------------------------------------------------------------+
#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)));   // опять штанга
   //-----------------------------------
 }

Sonuç:

 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

biri nedenini açıklayabilir mi

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

verir

 4294966796

-500 değil.

Bir şey hiç pişirmiyor ... (

 
Mikhail Dovbakh # :

İşte bir kod örneği:

Sonuç:

biri nedenini açıklayabilir mi

verir

-500 değil.

Bir şey hiç pişmiyor ... (

 long temp=( long )iNext-iCurrent;

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

İlk önce iNext'i işaretsiz bir tamsayıya göndermeniz gerekir. Ardından işaretsiz tamsayı sonucu uzun bir sayıya dönüştürülür.

Örneğimde, iNext hemen long'a dönüştürülür, bu nedenle iCurrent ayrıca long'a, yalnızca örtük olarak yayınlanır. Uzun türünden hemen sonuç

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

Soru, böyle bir tür sırasının neden doğru sonucu vermediğiydi. Bunun yalnızca ifadedeki tür hiyerarşisinin sırasına bağlı olduğunu varsayabilirim. Yürütme sırasında türler ifadedeki hiyerarşi sırasına göre düzenlenirse, cevap doğrudur ve değilse, hiyerarşiyi ihlal eden örtük bir tür dönüşümü değişkenin değerini değiştirebilir.

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

Tehdit Genel olarak, açık bir tür dönüştürme değil ve aynı zamanda hiyerarşinin ihlali.

 
MetaQuotes # :

Dün, Market ürünlerini doğrulamak için de kullanılan MetaQuotes-Demo sunucusuna bağlanırken sorun yaşadık.

Bu hatayı dün düzelttik ve teknik nedenlerle doğrulanamayan tüm ürünleri yeniden doğruladık.

Sebep olduğumuz herhangi bir rahatsızlık için özür dileriz.

Ürününüzü yanlışlıkla gözden kaçırdıysak ve yeniden başlatmadıysak, lütfen kendiniz yapın. Şimdi kontrol normal şekilde çalışmalıdır.

Teşekkür ederim!
Şimdi her şey çalışıyor.
 
Slava # :

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

İlk önce iNext'i işaretsiz bir tamsayıya göndermeniz gerekir. Ardından işaretsiz tamsayı sonucu uzun bir sayıya dönüştürülür.

Örneğimde, iNext hemen long'a dönüştürülür, bu nedenle iCurrent ayrıca long'a, yalnızca örtük olarak yayınlanır. Uzun türünden hemen sonuç

o zaman nedenini açıkla

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

ve

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


doğru sonuç verir mi?

Açıklamanızın ardından   ilk olarak iNext'i işaretsiz bir tamsayıya döküm. Daha sonra işaretsiz tamsayı sonucu, bir işaretin edinilmesiyle bir tamsayıya indirgenir.

Doğru şekilde?

 

Eğilim çizgisi, kırmızı mum çubuğunun En Düşük seviyesine eklenmez ( EURUSD, M5; Kesin Zaman Çizelgesi ; Mıknatıslanma: 15)


 
Mikhail Dovbakh # :

o zaman nedenini açıkla

ve

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


doğru sonuç verir mi?


Kolayca

işaretsiz tamsayı 32 bit uzunluğunda 4294966796, aynı boyutta işaretli bir tamsayıya indirgendiğinde -500 verir

 
Valeriy Yastremskiy # :

Soru, böyle bir tür sırasının neden doğru sonucu vermediğiydi. Bunun yalnızca ifadedeki tür hiyerarşisinin sırasına bağlı olduğunu varsayabilirim. Yürütme sırasında türler ifadedeki hiyerarşi sırasına göre düzenlenirse, cevap doğrudur ve değilse, hiyerarşiyi ihlal eden örtük bir tür dönüşümü değişkenin değerini değiştirebilir.

Tehdit Genel olarak, açık bir tür dönüştürme değil ve aynı zamanda hiyerarşinin ihlali.

Bağlantıyı zaten sağladım https://www.mql5.com/en/docs/basis/types/casting

Orada her şey ayrıntılı olarak yazılmıştır. Hiçbir şeyi atlamadan baştan sona okuyun

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