Hatalar, hatalar, sorular - sayfa 1330

 

Neden bir gösterge derlenirken, bu göstergedeki grafiklerde bulunan tüm ayarlar varsayılan olarak sıfırlanır?

 
iZer0 :

Tünaydın! Lütfen noob'a rehberlik edin. MT5 ticaret için değil, bazı "rastgele" verilerin kaynağı olarak kullanılır (ve nedenini bile sormayın - benim kaprisim değil). Kenelerde ölçülen geçmiş verileri elde etmek mümkün mü (teklif hakkında verilere ihtiyacımız var ve saniyede birkaç kez değişiklik istiyoruz). Nerede kazılır? Bir göstergeyi test ederken MT5'in verileri dışarı pompaladığını biliyorum - nasıl kullanılır?

Görev, mevcut keneleri belirli bir hizmete gönderen özel bir gösterge yazmaktır (bu bir sorun değildir). M1'de değil, kenelerde geçmiş verilerin nasıl alınacağını hiçbir yerde bulamadım.

Test cihazında, bar içi М1 kenelerini Вid alabilirsiniz. Terminal tarafından modellenirler. Ne kadar rastgele? bilmiyorum. MT4'ten bahsediyorum. MT5'te aynı olmalıdır.
 OnTick ()
{ Print ( "Bid=" ,Bid);}

Strateji test cihazının "Günlük" sekmesinde fiyat değerini ve varış zamanını görün.

Dosyalar:
2107.PNG  7 kb
 

MT4/845, Windows 7/64bit. Bir komut dosyası yaptı:

 #property strict
double value= 1 / 2 ;
//---
void OnStart ()
  {
   Print ( "value = " , DoubleToString (value));
  }

Günlüklerde şunu yazdırır:

2015.07.22 10:13:26.134 EURUSD Testi,H1: değer = 0.00000000

ancak 0,50000000 olmalıdır.

 
1.0/2 veya 1/2.0 veya 1.0/2.0 yazmak gerekir, o zaman beklenen olacaktır.
 
Аноним :
1.0/2 veya 1/2.0 veya 1.0/2.0 yazmak gerekir, o zaman beklenen olacaktır.
Evet, tavsiyen yardımcı oldu. .0 olmadan çalışması gerekecek gibi görünse de.
 

Meta alıntılar, satıcının sunucusundan fiyat teklifi indirme işlevini neden devre dışı bıraktı? Artık yalnızca meta alıntılardan indirebilirsiniz.

Ama bu bile yapılamaz, çünkü alıntı olmadığı mesajını verir.

Tabii ki yoklar, çünkü meta alıntılar, son ekleri olan alıntıları nereden alıyor?

Örneğin, döviz çiftlerinin adındaki son ekler fortfs, roboforex, exness vb.

 
Maxim Khrolenko :
Evet, tavsiyen yardımcı oldu. .0 olmadan çalışması gerekecek gibi görünse de.
Double öğesinin int'ye örtük dönüşümü.
 

Farklı sonuç: çok şüpheli sonuç

 #import "Test.ex5"
         void f( uint , uint );
#import
         void f( uint , int  )   { Print ( __FUNCSIG__ ); }
void OnStart ()
{
         uint a = 0 ;
        f( 1 , a ); //вызывается f(uint,int) - что само по себе сомнительно
}
ve bu yüzden normal
         void f( uint , uint )    { Print ( __FUNCSIG__ ); }
         void f( uint , int   )    { Print ( __FUNCSIG__ ); }
void OnStart ()
{
         uint a = 0 ;
        f( 1 , a ); //вызывается f(uint,uint) - нормально
  
}
Fark ne?
 
A100 :
ve böylece - normal fark nedir?
İyi için, eğer doğru anladıysam, derleyici genellikle yemin etmeli ve derlememelidir. Çünkü orada uint uint, uint int orada ve int, uint işleve iletilir, ancak belirsizlik.
 
Аноним :
İyi için, eğer doğru anladıysam, derleyici genellikle yemin etmeli ve derlememelidir. Çünkü orada uint uint, uint int orada ve int, uint işleve iletilir, ancak belirsizlik.

https://www.mql5.com/ru/docs/basis/function/functionoverload

Alıntı: "Bulunan işlev, en az bir argüman için diğer seçenekler arasında en iyi seçim olmalı ve aynı zamanda, argümanların geri kalanı için diğerlerinden daha kötü olmamalıdır ."

Peki burada f(int,uint) çağırmak için en iyi seçim nedir?

İpucu: Bu durumda argümanın geri kalanı ilk

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