Hatalar, hatalar, sorular - sayfa 1962

 
Andrey Khatimlianskii :

Nasıl yardımcı olacak?

Optimizasyon geçti, yinelenen tüm parametreleri değer aralıklarıyla kaydettik.

Ardından tek bir test yapıyoruz, parametre listesini okuyoruz ve ekranda görüntülüyoruz: parametre = değer. Aynı zamanda değerini de bilmiyoruz çünkü bir girdi değişkenine adıyla başvuramayız.

Giriş parametresini bool Optim yapın. OnInit'te, Optim == true ise INIT_FAILED döndürün. Aynı zamanda, OnTesterPass'ta, FrameInputs ve ParameterGetRange (veya global sınıf nesnesinin yıkıcısında) aracılığıyla, aslında Optimization SET dosyasını yazarsınız.

Ardından, Optim = false olarak ayarlayın. Ve başka bir sinput int Range parametresi alın, onu ParameterSetRange aracılığıyla sıfırdan bire değiştirecek şekilde ayarlayın. OnTesterInit'te SET dosyasını okursunuz ve ParameterSetRange içindeki dosyadan tüm parametrelerin değerlerini ayarlarsınız. OnInit'te Range == 0 ile INIT_FAILED döndürürsünüz.

Herşey! Tek bir optimizasyon yerine, tek bir optimizasyondan daha hızlı olacak hayali bir Optimizasyonunuz var .... Ayrıca giriş parametrelerini okuma / yazma.

 

konu dışı bir soru, ancak MQL5 referans kitabını algoritmaların uygulanmasına ilişkin ek örneklerle daha açık bir şekilde tamamlamanın mümkün olup olmadığını soracağım veya soracağım

 
fxsaber :

Giriş parametresini bool Optim yapın. OnInit'te, Optim == true ise INIT_FAILED döndürün. Aynı zamanda, OnTesterPass'ta, FrameInputs ve ParameterGetRange (veya global sınıf nesnesinin yıkıcısında) aracılığıyla, aslında Optimization SET dosyasını yazarsınız.

Ardından, Optim = false olarak ayarlayın. Ve başka bir sinput int Range parametresi alın, onu ParameterSetRange aracılığıyla sıfırdan bire değiştirecek şekilde ayarlayın. OnTesterInit'te SET dosyasını okursunuz ve ParameterSetRange içindeki dosyadan tüm parametrelerin değerlerini ayarlarsınız. OnInit'te Aralık == 0 ile INIT_FAILED döndürürsünüz.

Herşey! Tek bir optimizasyon yerine, tek bir optimizasyondan daha hızlı olacak hayali bir Optimizasyonunuz var .... Ayrıca giriş parametrelerini okuma / yazma.

Ayrıntılı algoritma için teşekkürler.

 
1643'te derleme zamanı
'TesterBenchmark_Example.mq5'   TesterBenchmark_Example.mq5     1       1
'TesterBenchmark.mqh'   TesterBenchmark.mqh     1       1
0 error(s), 0 warning(s), compile time: 3113 msec                1       1

1648'de derleme zamanı

'TesterBenchmark_Example.mq5'   TesterBenchmark_Example.mq5     1       1
'TesterBenchmark.mqh'   TesterBenchmark.mqh     1       1
0 error(s), 0 warning(s), compile time: 219 msec                 1       1

Serin bir şey bükülmüş!

 

Derleme sırasında hata

 typedef void (*fn)( int );
struct A {
                 void f() { return   ; } //(*)
         static    void f( int ) {}
};
void g( fn ) {}
void OnStart ()
{
        g( A::f ); //error: 'f' - cannot resolve function address
}

ve (*) satırını ile değiştirirseniz

                 int   f() { return 0 ; } //(*)
sorun yok. Fark ne?

https://www.mql5.com/ru/forum/1111/page1977#comment_5595772 ile benzer ancak farklı hata kodu


Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2017.08.11
  • www.mql5.com
Форум алго-трейдеров MQL5
 

Derleme sırasında hata

 template < typename T>
void g( T ) {}
void f() {}
void OnStart ()
{
        g( f ); //error: 'g' - cannot to apply function template
}

ve bunun gibi:


template < typename T>
void g( T ) {}
void f() {}
typedef void (*fn)();
void OnStart ()
{
        fn ff = f;
        g( ff ); //нормально
}

iyi. Fark ne?
 
A100 :

Derlerken hata

ve bunun gibi:

iyi. Fark ne?

Fark çok büyük. g(f) çağrıldığında, derleyici f tipinin ne olduğu hakkında hiçbir fikre sahip değildir, çünkü sadece şablon kayıtlıdır. Şablonu aşırı yüklerseniz, sorun olmaz

 typedef void (*fn)();

template < typename T>
void g( T Value ) { Print ( typename (Value)); }
void f() {}

void g( fn Value ) { Print ( typename (Value)); }
void OnStart ()
{
        g( f ); // void(*fn)()
}
 
fxsaber :
1643'te derleme zamanı

1648'de derleme zamanı


Serin bir şey bükülmüş!

Olduğu gibi oldum ve ayrıldım, derleme hızlanmadı

 
Vitaly Muzichenko :

Olduğu gibi yaptım ve ayrıldım, derleme hızlanmadı

Belki de TesterBenchmark.mqh'de daha önce yavaşlamış bir şey kullanmıyorsunuzdur.

 
fxsaber :

Fark çok büyük. g(f) çağrıldığında, derleyici f tipinin ne olduğu hakkında hiçbir fikre sahip değildir, çünkü sadece şablon kayıtlıdır. Şablonu aşırı yüklerseniz, sorun olmaz

Fark çok büyükse, neden her iki sürüm de normal olarak C++ ile derleniyor?