Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri - sayfa 56

 
Andrey Khatimliansky :

Performans ölçüldü mü? İşleri ne kadar yavaşlatacağı merak konusu. Özellikle özel göstergeler durumunda.

Ölçmedim ama MT4'ten daha yavaş görünmüyor.

Ölçüm
 #define AMOUNT 1 e7
void OnStart ()
{  
   int handle = iMA ( NULL , PERIOD_CURRENT , 1 , 0 , MODE_SMA , PRICE_CLOSE );
   const ulong StartTime = GetMicrosecondCount ();
  
   for ( int i = 0 ; i < AMOUNT; i++)
    handle = iMA ( NULL , PERIOD_CURRENT , 1 , 0 , MODE_SMA , PRICE_CLOSE );

   Print (( string )(( GetMicrosecondCount () - StartTime) / AMOUNT) + " mcs per iMA" );
   Print (handle);    
}


Sonuç

 0.3383469 mcs per iMA


Kontrol etmek için bir mikrosaniyenin üçte biri. Bu, her 10 milyon tıklama için tek bir koşunun üç saniye yavaşlayacağı anlamına gelir.

 
fxsaber :

Ölçüm

Sapın oluşturulmasını + döngüdeki değeri elde etmeyi orijinal sürümünüzle karşılaştırmamış olmaları garip, ilginç olan bu fark.

 
Andrey Khatimliansky :

Sapın oluşturulmasını + döngüdeki değeri elde etmeyi orijinal sürümünüzle karşılaştırmamış olmaları garip, ilginç olan bu fark.

Çünkü değerler aynı kulptan alınmıştır. Aynı parametrelere sahip iMA her zaman aynı tutamacı döndürür.

 
fxsaber :
MQL5'te bu şekilde yazmak oldukça kabul edilebilir.

Onlar. Her onay işareti için bir tutamaç "oluşturun". Yeni gösterge varlıkları oluşturulmayacak, yalnızca iMA giriş parametrelerinin önceki işaretlerde başlatılan göstergelerle karşılaştırılmasıyla zaman kaybedilecek. Onlar. MT4'te yapılanla tamamen aynı.

İlginç tasarım.

Lütfen bu yaklaşımla OnInit'te tanıtıcı oluşturma hızını kontrol edin.

 
Vitaly Muzichenko :

Lütfen bu yaklaşımla OnInit'te tanıtıcı oluşturma hızını kontrol edin.

Bu seninkiyle karşılaştırıldı.

 

Fonksiyonların platformlar arası olması için standart OrderCalcProfit() ve OrderCalcMargin()'in yerini ne alabilir? Zaten bir yerdeymiş gibi görünüyor, ama burada bulamıyorum - belki uyandım ... Ama bir saatlik aramadan sonra uyanmalıydım :)

 
Artyom Trishkin :

Fonksiyonların platformlar arası olması için standart OrderCalcProfit() ve OrderCalcMargin()'in yerini ne alabilir? Zaten bir yerdeymiş gibi görünüyor, ama burada bulamıyorum - belki uyandım ... Ama bir saatlik aramadan sonra uyanmalıydım :)

https://www.mql5.com/en/search#!keyword=myordercalcmargin&module=mql5_module_forum

MQL5.Community
MQL5.Community
  • www.mql5.com
Поиск выполняется с учетом морфологии и без учета регистра. Все буквы, независимо от того, как они введены, будут рассматриваться как строчные. По умолчанию наш поиск показывает страницы...
 
fxsaber :

https://www.mql5.com/en/search#!keyword=myordercalcmargin&module=mql5_module_forum

:)

SymbolInfoMarginRate() ilk dörtte değil. Ve soru şuydu:

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri

Artyom Trishkin , 2017.10.06 06:36

Fonksiyonların platformlar arası olması için standart OrderCalcProfit() ve OrderCalcMargin()'in yerini ne alabilir? Zaten bir yerdeymiş gibi görünüyor, ama burada bulamıyorum - belki uyandım ... Ama bir saatlik aramadan sonra uyanmalıydım :)

Evet ve OrderCalcProfit() hakkında hiçbir şey yok
 

Doğrudan hediye, dil olasılığı değil

 struct MQLTICK : public MqlTick
{
   bool operator >( const MqlTick &Tick )
  {
     return ( this .bid > Tick.bid);
  }

   bool operator <( const MqlTick &Tick )
  {
     return ( this .ask < Tick.ask);
  }
};

void OnStart ()
{  
   MQLTICK Ticks[];
  
   Print ( CopyTicks ( _Symbol , Ticks ));
  
   Print ( Ticks[ 0 ] < Ticks[ 1 ] );
}
 
fxsaber :

Doğrudan hediye, dil olasılığı değil

Yürütme sırasında ince bir hata şeklinde bir hediye

 struct MqlTick1 : MqlTick {        };
struct MqlTick2 : MqlTick { int i; };
void Copyticks( MqlTick & []) {}
void OnStart ()
{
        MqlTick1 ticks1[];
        MqlTick2 ticks2[];
         int i1 = :: CopyTicks ( _Symbol , ticks1 ); //нормально ??????????????
                   Copyticks(          ticks1 ); //error: 'ticks1' - parameter conversion not allowed
         int i2 = :: CopyTicks ( _Symbol , ticks2 ); //нормально ??????????????
         Print ( "i2=" , i2, ":" , GetLastError ()); //Результат: -1:4006
}

::CopyTicks neden Copyticks'ten daha iyi?

Ve neden sonuç her zaman -1'dir. Bu tür hataların (4006) derleme zamanında bildirilmesi gerekir.