Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 193

 
fxsaber:

Assolutamente tutte le regole sono artificiali.

Sono d'accordo. La questione è il livello dell'arte :)

 

Per favore consigliate - se usate un indicatore personalizzato che ha molti (diciamo 50) parametri, quali sono i modi migliori per gestire i parametri dell'indicatore? (tranne il trasferimento diretto di parametri di un indicatore a coppie di esperti, tutto è chiaro qui)

Ho trovato l'uso del caricamento di file *.set nel codice di qualcun altro quando si chiama iCustom, ma non ho trovato niente del genere e sembra che non funzioni nel test.

Forse qualcuno lo sa e ci sono dei trucchi non documentati?

 

L'ultima build di rilascio è la 2650. È normale che uno script come questo non si compili:

struct A_INFO
{
  int a;
};

bool operator<(const A_INFO &First,const A_INFO &Second) //operator< has invalid parameters count
{
  return First.a<Second.a;
}

void OnStart()
{
}

E questo è normale:

struct A_INFO
{
  int a;
};

bool operator<(const A_INFO &First)
{
  return true;
}

void OnStart()
{
}

Si aspetta che confronti 1 valore? O perché l'operatore non può essere reso unastruttura non membro?

 
E una seconda domanda di controllo. Perché ArraySort non può essere applicato a un array di tali strutture? Cosa impedisce di confrontarli usando l'operatore <, che è definito?
 
traveller00:

Si aspetta che confronti 1 valore?

Il secondo valore (quello a sinistra dell'operatore) è questo.

 
fxsaber:

Il secondo valore (quello a sinistra dell'operatore) è questo.

Perché questo se non ho reso l'operatore un membro della struttura, ma globalmente? O non posso renderlo globale? C++ si comporta diversamente.

 
traveller00:

Perché questo, se ho fatto l'operatore globalmente piuttosto che un membro della struttura? O non posso farlo globalmente? C++ si comporta diversamente.

Non so nulla di questi operatori.

 
traveller00:
E la seconda domanda di follow-up. Perché ArraySort non può essere applicato a un array di tali strutture? Cosa impedisce loro di confrontare attraverso l'operatore < , che è definito?

Il built-in ArraySort è solo una funzione, sovraccaricata per tutti i tipi standard.

Le classi e altre OOP sono un aiuto. Se tutti i tipi (strutture) avessero un antenato comune(CObject in SB) e così via...

 
Aleksey Mavrin:

Il built-in ArraySort è solo una funzione, sovraccaricata per tutti i tipi standard.

Le classi e altre OOP sono un aiuto. Se tutti i tipi (strutture) avessero un antenato comune (CObject in SB) e così via...

Sì, ho un'idea approssimativa di come si fa all'interno. La domanda non era piuttosto per una risposta. Ma come suggerimento di prestare attenzione ad altre varianti di implementazione, ad esempio STL, e di gestire i contenitori in modo simile, dove possiamo scrivere cose universali, compresi i sorter.

 
traveller00:

Ho un'idea approssimativa di come è fatto all'interno. La domanda non era per avere una risposta. Ma come suggerimento di prestare attenzione ad altre varianti di implementazione, per esempio STL, e di fare un modo simile di lavorare con i contenitori, dove possiamo scrivere cose universali, compresi i sorter.

Senza dubbio, STL di sicuro) Mentre ArraySort può essere sovraccaricato rendendolo basato su template e poi usandolo, ma non sono uno specialista di template, sono abituato a lavorare con semplici gerarchie di classi.

Motivazione: