Errori, bug, domande - pagina 2474

 
fxsaber:

Come si fa a scegliere tra l'uso di template e void*?

Non c'è un approccio speciale, è solo una questione di intuizione

 
Sfortunatamente, al momento i tipi di puntatori a funzione in MT4/MT5 sono molto limitati e non pratici a causa di alcuni difetti:
#(non corretto in MT5(build 2060))"Errore di compilazione quando si usa la stessa firma di funzione ripetutamente all'interno di typedef".
#(non corretto in MT5(build 2060))"Quando si lavora con typedef, usare una funzione template con specializzazione esplicita non genera codice per quella funzione template".


In vista dell'implementazione dello spazio dei nomi in sospeso, si prega di considerare l'implementazione del supporto per questo comportamento come parte delle correzioni dei difetti nel prossimo C++:
//#include <iostream>

template<typename T>
class A{
public:
    typedef void (*callback)(T&);   //class namespace for function pointer type
    callback f_ptr;
    T data;
};

template<typename T>
class B{
public:
    typedef void (*callback)(T&);   //class namespace for function pointer type
    callback f_ptr;
};

template<typename T>
void func(T& value){
    ++value;
}


void OnStart(){
//int main(){
    A<int> a;
    B<int> b;
    
    a.f_ptr = func<int>;      // automatic code generation of templates functions
    b.f_ptr = a.f_ptr;        // assignment operation for function pointers with the same function signatures and different function pointer types.
    
    int x = 1;
    b.f_ptr(x);
    printf("%d\r\n", x);                  //2
    printf("%d\r\n", b.f_ptr == a.f_ptr); //1     // equal operation for function pointers with the same function signatures and different function pointer types.
}
 

Ciao! Si prega di prestare attenzione all'argomento

https://www.mql5.com/ru/forum/314275

In poche parole, il tester calcola un margine che non corrisponde a quello impostato nelle impostazioni del simbolo
[bug] Неправильная Margin при тестировании на custom symbol
[bug] Неправильная Margin при тестировании на custom symbol
  • 2019.05.25
  • www.mql5.com
Привет! Создал кастомный символ с параметрами, скопированными из реального Si-3.19. См. скриншоты. Загрузил для него историю...
 

Forum sul trading, sistemi di trading automatico e test di strategia

Nuova versione della piattaforma MetaTrader 4 build 1170

fxsaber, 2019.05.28 12:10

È un bug nel compilatore MT4?
#property strict

void Func( int &[] ) {}
void Func( int &[][2] ) {} // 'Func' - function already defined and has body

void OnStart()
{
  int Array1[];
  int Array2[][2];
  
  Func(Array1);
  Func(Array2); // 'Array2' - invalid array access
}


Non c'è nessun problema con questo in MT5. In MT4 non c'è modo di sovraccaricare la funzione.

 

Piccolo contrattempo in MT 4 in MT 5 non controllato...


 

Forum sul trading, sistemi di trading automatico e test di strategia

Nuova versione della piattaforma MetaTrader 4 build 1170

fxsaber, 2019.05.28 14:24

Ha colto una differenza sconosciuta tra MT4 e MT5. È un bug in MT4?
#property strict

bool Print2( const string Str )
{
  Print(Str);
  
  return(true);
}

void Func()
{
  static bool b = Print2(__FUNCSIG__); // MT4 - вызывается, MT5 - нет.
}

void OnStart() {}
 
fxsaber:

Cinque ha fatto una corretta inizializzazione della statica. Al primo accesso.

Quattro non l'hanno fatto. E non si sa quando lo faremo.

 

build 2062: errore 5305 durante la creazione di un simbolo personalizzato.

Nel 2060 tutto va bene.

Ricordo che in MT4 c'era una chiave da linea di comando /skipupdate

C'è qualcosa di simile in MT5? Come posso disabilitare gli aggiornamenti?

 

fxsaber:

MT4 si chiama, MT5 no.

Sembra che tu stia compilando con un vecchio compilatore, compila con uno moderno (incluso in MT5) e tutto andrà bene.
 
Alexey Navoykov:
Sembra che tu stia compilando con un vecchio compilatore. Compila con uno moderno (in arrivo con MT5) e tutto andrà bene.

Compilato fino al 1966. Provato 2062 in MT4 - funziona correttamente. Grazie!

È un peccato che non ci sia un modo per batterlo.