Errori, bug, domande - pagina 738

 
MetaDriver:

Domanda:

Dovete passare un array di puntatori a oggetti a una funzione. Per riferimento, ovviamente (un array).

Quale sintassi usare?

O dovrei usarlo in qualche altro modo?

Dichiarazione del puntatore (tipo, tipo di variabile): MyObject* hobject

Dichiarazione diun array di puntatori (tipo, array di variabili di tipo): MyObject* hobject[].

Si scopre che quando viene passato per riferimento (tipo, array di variabili di tipo passato): MyObject* &hobject[]

Quello che mi confonde è che non ho trovato informazioni sul passaggio di puntatori e array di puntatori come parametri di funzioni. Ma non è nemmeno una domanda, solo un disclaimer.

 
Karlson:
Ho affrontato una tale necessità. Storto e brutale, ma il risultato corretto è ottenuto. I flag sono abilitati su tutti e tre i dati di input.E poi bloccati a false.

Non sono un grande spiegatore. Lasciatemi provare di nuovo. Il compito è quello di formare un portafoglio di valute, ogni valuta con i propri parametri. In un portafoglio ottimizzato una valuta può non partecipare. Ho calcolato sei valute in 21 passi di ottimizzazione per ogni valuta, e la somma totale è in miliardi.

Ora la domanda. Se vietiamo a una valuta di commerciare con una bandiera, allora non ha senso ottimizzare i suoi parametri, in ogni caso non influiranno in alcun modo sul risultato, ma l'ottimizzatore continuerà a cercare di adattare i parametri che non influiscono sul risultato. Un po' come io so che non si può, ma la speranza è ancora accesa.

 
ivandurak:

Non sono un grande spiegatore. Lasciatemi provare di nuovo. Il compito è quello di formare un portafoglio di valute, ogni valuta con i propri parametri. In un portafoglio ottimizzato una valuta può non partecipare. Ho calcolato sei valute in 21 passi di ottimizzazione per ogni valuta, e la somma totale è in miliardi.

Ora la domanda. Se vietiamo a una valuta di commerciare con una bandiera, allora non ha senso ottimizzare i suoi parametri, in ogni caso non influiranno in alcun modo sul risultato, ma l'ottimizzatore continuerà a cercare di adattare i parametri che non influiscono sul risultato. Come me so che non si può, ma la speranza è ancora fiorente.

Quindi vi ho detto lo stesso bene la prima volta.

Non dovreste controllare questi parametri nel tester.

Affinché i parametri siano coinvolti nell'ottimizzazione, è necessario spuntare queste caselle di controllo. Se le caselle non sono selezionate, questi parametri non saranno ottimizzati.

P.S. Oppure potete eseguire l'ottimizzazione separatamente per ogni strumento. Ora capisco cosa vuoi dire. :) E dopo tutte le ottimizzazioni, accendere tutti gli strumenti e vedere il risultato cumulativo.

 
tol64:

Quindi ho fatto bene la prima volta, dopotutto.

No, non l'hai fatto. A giudicare da ulteriori spiegazioni, l'autore inizia l'ottimizzazione da tutti i suoi parametri di input in una volta sola, e allo stesso tempo si chiede se può in qualche modo saltare alcuni dei passaggi se trpair2==false. Qui non ci sono "caselle di controllo nel tester" manuali.
 
Yedelkin:
No, non lo è. A giudicare da ulteriori spiegazioni, l'autore inizia l'ottimizzazione per tutti i suoi parametri di input in una volta sola, e si chiede se alcuni dei passaggi possono in qualche modo essere saltati se trpair2==false. Non è possibile impostare manualmente "caselle di controllo nel tester" qui.
Bene, allora io stesso sono curioso di sapere se esiste una tale soluzione. Ricordo di aver inviato una richiesta al Service Desk per i parametri programmabili. Cioè, a seconda di quale parametro è selezionato (per esempio, nell'elenco a discesa) è un elenco comune di tutti i parametri esterni. Non c'è stata alcuna risposta, quindi non è così semplice. E questa domanda viene dallo stesso thread. A seconda del parametro selezionato per l'ottimizzazione, una lista (caselle di controllo) di parametri ottimizzati è impostata nella lista generale.
 
tol64:
Bene, allora io stesso sono curioso di sapere se esiste una tale soluzione.
Non ho trovato nessuna soluzione neanche per questa situazione. Naturalmente, è possibile avvitare nell'int OnInit() qualche blocco che memorizzerebbe il valore dei parametri ottimizzabili per altri simboli quando si imposta il parametro trpair2 a false, e in caso di riesecuzione con trpair2==false e con 'valori memorizzati dei parametri ottimizzabili per altri simboli' genererebbe un codice di ritorno non nullo (cioè genererebbe l'evento Deinit con il codice motivo REAS_INIT).genererebbe l'evento Deinit con il codice di motivo della deinizializzazione REASON_INITFAILED). Ma tutto questo sembra un po' macchinoso.
 
Yedelkin:
No, non lo è. A giudicare da ulteriori spiegazioni, l'autore inizia l'ottimizzazione per tutti i suoi parametri di input in una volta sola, e si chiede se alcuni dei passaggi possono in qualche modo essere saltati se trpair2==false. Non ci sono "caselle di controllo nel tester" manuali.
Esattamente così. Solo tu hai dimenticato di scrivere il verdetto se è possibile o no.
 
Yedelkin:
Non ho trovato nessuna soluzione neanche per questa situazione. Naturalmente, è possibile combinare in int OnInit() qualche blocco che memorizzerebbe il valore dei parametri ottimizzabili da altri simboli quando si assegna al parametro trpair2 false, e in caso di secondo passaggio con trpair2==false e con 'valori memorizzati dei parametri ottimizzabili da altri simboli' genererebbe un codice di ritorno non nullo (cioè genererebbe l'evento Deinit con il codice del motivo della deinizializzazione.cioè genererebbe l'evento Deinit con il codice del motivo della deinizializzazione REASON_INITFAILED). Ma tutto questo sembra piuttosto noioso.
È molto più semplice. Quando una condizione viene eseguita, l'Expert Advisor può semplicemente cancellarla - ExpertRemove(). L'ho implementato nel caso di un drawdown. Se il drawdown ha raggiunto il valore impostato, per esempio, durante l'ottimizzazione, lo rimuoviamo e iniziamo il prossimo passaggio.
 
ivandurak:
Esattamente. Solo tu hai dimenticato di scrivere il verdetto se puoi o non puoi.
È possibile. Come nel post precedente provate.
 
tol64:
È molto più semplice. Quando una condizione viene eseguita, si può semplicemente cancellare l'Expert Advisor - ExpertRemove(). L'ho implementato nel caso di un drawdown. Se il drawdown ha raggiunto il valore impostato, per esempio, durante l'ottimizzazione, lo rimuoviamo e iniziamo il prossimo passaggio.

Come può essere "più facile"? :) Le condizioni per cancellare un EA o per REASON_INITFAILED devono ancora essere tracciate. Questo è ciò che è così fastidioso.