Hatalar, hatalar, sorular - sayfa 2672

 
fxsaber :

Sadece opt dosyasındaki veriler var. Biçim mevcuttur.

Test cihazından bir dosyadan okumak istemiyorum, istediğimi zaten yapmış görünüyorum - benzersiz bir dosya adı - MD5 giriş parametreleri, bunun gibi bir şey:

 string getMD5( const SSaveStruct &inpstr)
{
   const uchar key[ 1 ]= { 0 };
   uchar data[],md5[];
   StructToCharArray (inpstr,data);
   CryptEncode ( CRYPT_HASH_MD5 , data, key, md5);
   string result = "" ;
   for ( int i = 0 ; i < ArraySize (md5); i++)
      result += StringFormat ( "%02x" , md5[i]);
   return (result);
}

void SaveInputParam()
{
   SSaveStruct savestruct;
   FillSaveStruct(savestruct);
   string fname = "EA_TST//" + getMD5(savestruct) + ".bin" ;
   int handle = FileOpen (fname, FILE_WRITE | FILE_COMMON | FILE_BIN );
   FileWriteStruct (handle,savestruct);
}

double OnTester ()
{

   if (!IS_OPTIMIZATION)
   {
      SSaveStruct savestruct;
      FillSaveStruct(savestruct);
       Print ( "fname = " + getMD5(savestruct));
       return ( AccountInfoDouble ( ACCOUNT_BALANCE ));
   }

#define BADTEST() { srand (( int ) TimeCurrent ()); return (-( rand () % 1000 )); }
   if (EA_STOP || TesterStatistics ( STAT_TRADES ) < EA_MIN_TRADEES)  BADTEST();
   SaveInputParam();
   return ( AccountInfoDouble ( ACCOUNT_BALANCE ));
#undef BADTEST
}

dosyalar yazılır ve tek geçişte dosya adını görüyorum: fname = 04a19580d36f0a749143211b57efbebc

kod biraz tekrar ediyor, ancak test başarısız olursa yapıyı optimize edicideki giriş parametreleriyle doldurmamak için .... ama muhtemelen yeniden yazacağım, çirkin kod, o zaman neden yaptığımı anlayamayacağım )))
 
Igor Makanu :

Testi yapan kişinin temsilcisinden geçiş numarasını almak mümkün müdür?


Not: veya bir dosya adını test ederken her geçişten benzersiz bir tanımlayıcıya ihtiyacınız var - Test ederken ilgilenilen EA ayarlarını bir dosyaya kaydetmek istiyorum, ancak ayarlarla bir dosya adı oluşturmak için en azından benzersiz bir şeye ihtiyacınız var

Geçiş numarası 1024 bit olabilir.

Bu satırda zaten bir dizi parametre varsa neden bir geçiş numarasına ihtiyacınız var?

 
Igor Makanu :

Test cihazından bir dosyadan okumak istemiyorum, istediğimi zaten yapmış görünüyorum - benzersiz bir dosya adı - MD5 giriş parametreleri, bunun gibi bir şey:

dosyalar yazılır ve tek geçişte dosya adını görüyorum: fname = 04a19580d36f0a749143211b57efbebc

kod biraz tekrar ediyor, ancak test başarısız olursa yapıyı optimize edicideki giriş parametreleriyle doldurmamak için .... ama muhtemelen yeniden yazacağım, çirkin kod, o zaman neden yaptığımı anlayamayacağım )))

Giriş parametrelerinin MD5'i önceden hesaplanmıştır ve opt dosyasındaki geçiş girişindedir.

 
Slava :

Bu satırda zaten bir dizi parametre varsa neden bir geçiş numarasına ihtiyacınız var?

Optimize edicinin başarılı geçişlerini doğrudan EA ayar dosyasına sıfırlamak ve EA'yı başlatırken .set yerine .bin dosyasını otomatik olarak yüklemek istiyorum - birkaç aracın aynı anda çalışması için gerekli

Slava :

Giriş parametrelerinin MD5'i önceden hesaplanmıştır ve opt dosyasındaki geçiş girişindedir.

Optimizasyon hızı için neredeyse 3 ay uğraştım, bunu başardığımı düşünüyorum, yani bir karşı soru:

hangisi daha hızlı:

1. opt-dosyasını MD5 ile okumak için optimize ediciden?

2. veya MD5 kodumla hesaplayın


Hesaplamanın daha hızlı olduğundan şüpheleniyorum, kodun içindeki tüm girdi parametrelerini bir yapı dizisi olarak ne kadar çok kullanırsam (yaklaşık 40 parametreyi optimize ederim)

 
Igor Makanu :

Optimize edicinin başarılı geçişlerini doğrudan EA ayar dosyasına sıfırlamak ve EA'yı başlatırken .set yerine .bin dosyasını otomatik olarak yüklemek istiyorum - birkaç aracın aynı anda çalışması için gerekli

Optimizasyon hızı için neredeyse 3 ay uğraştım, bunu başardığımı düşünüyorum, yani bir karşı soru:

hangisi daha hızlı:

1. opt-dosyasını MD5 ile okumak için optimize ediciden?

2. veya MD5 kodumla hesaplayın


Hesaplamanın daha hızlı olduğundan şüpheleniyorum, kodun içindeki tüm girdi parametrelerini bir yapı dizisi olarak ne kadar çok kullanırsam (yaklaşık 40 parametreyi optimize ederim)

MD5 daha hızlıdır.

Gelecekte opt dosyasını kullanmayacaksanız, MD5'i okuyun.

Kullanacaksanız, önceden hesaplanmış MD5'i kullanmak daha iyidir, çünkü hesaplamanız bizimkiyle çakışmayabilir (ve büyük olasılıkla çakışmayacaktır).

 
Slava :

MD5 daha hızlıdır.

Gelecekte opt dosyasını kullanmayacaksanız, MD5'i okuyun.

Kullanacaksanız, önceden hesaplanmış MD5'i kullanmak daha iyidir, çünkü hesaplamanız bizimkiyle çakışmayabilir (ve büyük olasılıkla çakışmayacaktır).

Teşekkür ederim!

opt dosyasını kullanmayacağım

Not: birkaç hafta önce MathSrand()'ı test cihazından başlatma olasılığını arıyordum https://www.mql5.com/ru/forum/1111/page2657#comment_15165819

test aracısında MD5 (kuyu veya dize) ile uchar[] almak kötü olmaz - bu benzersiz bir değerdir, MathSrand()'ı da başlatabilirsiniz ve şimdi benzersiz bir dosya adı istiyorum, MD5'inizi TesterStatistics'e verin ()

 
Sergey Dzyublik :
Hata MT5(build 2323), aynı şablon nesnesi B<int>, B<void*> sınıfının nesnesinden sonra oluşturulabilir, ancak bunu daha önce yaparsanız, bir derleme hatası oluşur.
Belki de nedeni, şablon sınıfı oluşturucu önbelleğinin çalışmasıdır.

Gönderdiğiniz için teşekkürler, düzeltildi

 

Makroları nasıl kullanıyorsunuz?

Korku. Derleme sırasında hata.

Küçük komut dosyası:

 void OnStart ()
  {
   #define m 1000 ;
   ulong n_yes= 3 *m;  //Тут всё хорошо
   ulong n_no=( 3 *m); //Тут ошибка: ';' - unexpected token	test2.mq5	27	18
  }
Şimdilik en son 2361'i oluşturun.
 
Aliaksandr Hryshyn :

Makroları nasıl kullanıyorsunuz?

bu yüzden kullanıyoruz
 #define m 1000 ;
 
Igor Makanu :
bu yüzden kullanıyoruz

Parantezlerin varlığında bir fark var.