Hatalar, hatalar, sorular - sayfa 1960

 
DEAL_TIME_MSC'nin sıfır döndürdüğü durum
 // Время в миллисекундах первой балансовой сделки (DEAL_TIME_MSC) в тестере равно нулю
int OnInit ()
{
   if ( HistorySelect ( 0 , TimeCurrent ()) && HistoryDealsTotal ())
  {
     Print (( datetime ) HistoryDealGetInteger ( HistoryDealGetTicket ( 0 ), DEAL_TIME )); // Время балансовой сделки
     Print ( HistoryDealGetInteger ( HistoryDealGetTicket ( 0 ), DEAL_TIME_MSC ));       // Это же время в мс равно нулю
  }

   return ( INIT_FAILED );
}
 

Optimizasyon sırasında Durdur'a basarsanız ve ardından Optimizasyon'u yeniden başlatırsanız çalışmayacaktır, çünkü bir rekor olacak

Core 1   occupied by another terminal
Core 2   occupied by another terminal
 
Test cihazı, Optimize et onay kutusu işaretlenmemiş giriş parametreleri için ParameterSetRange'i çağırmaz . Bu nedenle, ParametersGetRange karşılık gelen Başlat, Adım ve Durdur değerleri için sıfır döndürür. Bu tamamen yanlış. Örneğin, bu nedenle, test cihazının tam teşekküllü bir SET dosyasını kendi başınıza oluşturmak veya kullanıcı tarafından yanlış ayarlanmışsa giriş parametresinin Optimizasyon aralığını ayarlamak mümkün değildir.
 
ParameterGetRange , OnTesterInit'te çalışmıyor.
 sinput int Range = 5 ;

#define PRINT(A) Print ( #A + " = " + ( string )(A));

void PrintParameter( const string Name, const string From )
{
  PRINT(From)
  
   bool Enable;
   long Value, Start, Step, Stop;
  
   if ( ParameterGetRange (Name, Enable, Value, Start, Step, Stop))
  {
    PRINT(Start)
    PRINT(Step)
    PRINT(Stop)
    PRINT(Value)
    PRINT(Enable)
  }   
}

void OnTesterInit ()
{
   ParameterSetRange ( "Range" , true , 5 , 1 , 2 , 3 ); // Задали ненулевыми все значения
  
  PrintParameter( "Range" , __FUNCTION__ ); // Возвращает одни нули
}

void OnTesterDeinit ()
{
  PrintParameter( "Range" , __FUNCTION__ ); // Работает нормально
  
   ChartClose ();
}

void OnTesterPass ()
{
  PrintParameter( "Range" , __FUNCTION__ ); // Работает нормально
}

int OnInit ()
{
   uchar Data[];
  
   FrameAdd ( NULL , 0 , 0 , Data);
  
   return ( INIT_FAILED );
}
 
fxsaber :
Çok sayıda dizi nasıl hızlı bir şekilde eklenir (örneğin, dizide bir ticaret raporu oluşturun)

Sonuç

Kırmızı, hiçbir şekilde açıklanamayan bir gerçeği işaret eder.

Bellek havuzunun özellikleri, SumString2 bellek havuzuna ilk kez çağrıldığında, sistemden gelen belleğe "doyur" ve bir dahaki sefere bellek artık sistemden talep edilmez.

SumString1'i düzeltmenizi öneririm

 ulong SumString1( string TmpStr, const int Amount )
{
   const ulong StartTime = GetMicrosecondCount ();

   string Str;
   StringInit (Str,Amount * StringLen (TmpStr) + 1 );            << обеспечим строке приёмный буфер

   for ( int i = 0 ; i < Amount; i++)
    Str += TmpStr;

   return ( GetMicrosecondCount () - StartTime);
}
 
fxsaber :

editör tarafından

  • Aşağıdaki satırı Metaeditor'a yazarsanız, araç ipucu (veya seçeneklerle birlikte araç ipucunun doğru adı nedir?) GetMicrosecondCount görünmez.
    DoubleToString(GetMicro

Vurgulama akıllıdır, DoubleToString argümanı double ve GetMicrosecondCount ulong olmalıdır.

Şu şekilde çalışacak:

 DoubleToString ( ( double )GetMicro
 
fxsaber :

İsteğe bağlı bir girdi parametresinin adını dize olarak nasıl alacağınıza dair herhangi bir fikriniz var mı?

 input double dParam1 = 1.0 ; // Double
input int iParam2 = 2 ;      // Integer

Print ( InputToString( dParam1 ) ); // "dParam1"
Print ( InputToString( iParam2 ) ); // "iParam2"

template < typename T>
string InputToString(T param)
{
   ???
}
 
Andrey Khatimlianskii :

İsteğe bağlı bir girdi parametresinin adını dize olarak nasıl alacağınıza dair herhangi bir fikriniz var mı?

 input double dParam1 = 1.0 ; // Double
input int iParam2 = 2 ;       // Integer

#define TOSTRING(A) ( #A)

Print ( TOSTRING( dParam1 ) ); // "dParam1"
Print ( TOSTRING( iParam2 ) ); // "iParam2"
 
fxsaber :

Harika teşekkür ederim!

Tek bir test cihazı çalıştırması başlatırken EA girdilerinin bir listesini almaya ne dersiniz? Dll kullanarak ayarlar dosyasını okumadan.
Optimizasyondan sonra (dosya ve ana değişkenler aracılığıyla) testte kullanılan parametrelerin uygun bir görüntüsünü yaptım, bir rahatsızlık kaldı - tüm parametreler manuel olarak listelenmelidir.

 
Andrey Khatimlianskii :

Tek bir test cihazı çalıştırması başlatırken EA girdilerinin bir listesini almaya ne dersiniz?

Hiçbir şekilde, sadece Optimizasyon modunda.

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

Hatalar, hatalar, sorular

fxsaber , 2017.07.25 11:27

En azından tek çalıştırma modunda bir Expert Advisor'ın giriş parametreleri nasıl bulunur?

Göstergeler için IndicatorParameters vardır.

Optimizasyon için - FrameInputs.

Ve danışmanın tek bir çalışması veya normal başlatılması için - hiçbir şey.