Errori, bug, domande - pagina 1904

 
Artyom Trishkin:

Se ci sono più istanze, perché duplicare lo stesso calcolo in altre istanze della stessa classe?

Perché avete bisogno di altre istanze se c'è solo un calcolo?


Artyom Trishkin:
Andrey, potresti essere un po' più specifico? Non capisco bene.

Meglio dare una descrizione più dettagliata del problema, allora la risposta sarà più concreta.

 
Artyom Trishkin:

Il calcolo non è unico - se c'è una sola istanza della classe allora il calcolo dovrebbe esserlo, se ci sono più istanze allora perché duplicare lo stesso calcolo in altre istanze della stessa classe? Ci vogliono risorse.

Allo stesso tempo, fare un altro lungo ciclo nella classe genitore per calcolare questi stessi dati non è ottimale (abbiamo già due lunghi cicli), e la classe figlia non sarà autosufficiente.

Ho suggerito come fare ciò di cui abbiamo bisogno senza duplicazione. Non stiamo parlando di discendenti.
 

Buon pomeriggio!

Dopo 4 anni sono tornato a un EA (comprato nel 2013 e dimenticato). Ho deciso di provare di nuovo. Ma ora il sistema dà un errore in una delle linee di codice. Credo che qualcosa sia cambiato in 4 anni con Metatrader, perché prima funzionava bene. Non ho idea di come programmare, ecco perché ho comprato Expert Advisor). Potete dirmi quale può essere l'errore.

Ecco una parte del codice

extern int Bperiod = 20; // Periodo di mediazione della linea dell'indicatore principale.

extern int Bdeviation = 2; // Deviazione dalla linea di base.

extern int Bshift = 0; // Spostamento dell'indicatore rispetto al grafico del prezzo.

extern int Baprice = 0; // CLOSE=0, OPEN=1, HIGH=2, LOW=3, MEDIAN=4, TYPICAL=5, WEIGHTED=6 .

extern string _6 = "========";

extern bool UseAutoDig = true; // Se=true->le variabili esterne nei punti sono moltiplicate per 10.

extern bool UseECN\NDD = true; // Se=true-> gli ordini sono impostati senza fermate, quindi modificati.

L'errore è visualizzato nell'ultima linea del comando

UseECN\NDD, questo comando è ripetuto molte volte nell'EA e un errore si verifica ad ogni linea con questo comandoEsempi di

errori

'\' - sequenza di escape illegale e_plat2.mq4 49 22

'NDD' - punto e virgola previsto e_plat2.mq4 49 23

'UseECN' - identificatore non

dichiarato

e_plat2.mq4 144 6

'NDD' - identificatore non dichiarato e_plat2.mq4 144 13

'NDD' - qualche operatore atteso e_plat2.mq4 144 13

'UseECN' - identificatore non dichiarato e_plat2.mq4 172 6

'4206' - case value già usato e_plat2.mq4 643 8


Se non ti dispiace, quale potrebbe essere la ragione

?


 
platoshkasexy:

UsaECN\NDD questo comando è ripetuto molte volte nell'Expert Advisor e in ogni linea dove è presente, appare un errore

Sostituire in tutto il codice "UseECN\NDD" con "UseECN_NDD" (Ctrl+H)

 
Andrey Khatimlianskii:

Sostituire in tutto il codice "UseECN\NDD" con "UseECN_NDD" (Ctrl+H)


Grazie mille! Sembra che abbia compilato!

Farò dei test...

 
Andrey Khatimlianskii:

Perché avete bisogno di queste altre istanze se c'è solo un calcolo?


È meglio che tu dia una descrizione più dettagliata del problema, allora la risposta sarà più concreta.

La classe ha un ciclo che raccoglie dati su tutti gli ordini e le posizioni 1) nel conto e 2) solo quelli che corrispondono al filtro m_symbol e m_magic.

Come risultato, una volta che il ciclo è completato, abbiamo dati 1) sull'intero conto e 2) solo sugli ordini e le posizioni appartenenti all'EA.

Tuttavia, se un EA usa diversi simboli o maghi, abbiamo bisogno di creare istanze della classe per raccogliere statistiche per ogni simbolo/magia. È qui che sorge la domanda: perché abbiamo bisogno di raccogliere statistiche (1) in queste nuove istanze che sono già state raccolte nella prima istanza della classe?

Da qui la domanda - come all'interno della classe sapere se la sua istanza è l'unica, e quindi dobbiamo raccogliere la statistica 1, o, se l'istanza non è l'unica, non raccogliere la statistica 1, e darla fuori dalla primissima istanza (anche qui, non è chiaro come all'interno della classe, se non è l'unica istanza, reindirizzare la richiesta alla primissima istanza della classe per dare la statistica 1)

 
Artyom Trishkin:

La classe ha un ciclo che raccoglie dati su tutti gli ordini e le posizioni 1) nel conto e 2) solo quelli che corrispondono al filtro m_symbol e m_magic.

Come risultato, una volta che il ciclo è completato, abbiamo dati 1) sull'intero conto e 2) solo sugli ordini e le posizioni appartenenti all'EA.

Tuttavia, se un EA usa diversi simboli o maghi, abbiamo bisogno di creare istanze della classe per raccogliere statistiche per ogni simbolo/magia. Qui sorge una domanda: perché abbiamo bisogno di raccogliere le statistiche (1) in queste nuove istanze, che sono già state raccolte nella prima istanza della classe?

Da qui la domanda - come all'interno della classe sapere che la sua istanza è l'unica, e quindi la necessità di raccogliere la statistica 1, o, se l'istanza non è l'unica, allora non raccogliere la statistica 1, ed emetterla dalla primissima istanza (inoltre non è ancora chiaro come all'interno della classe, se non è l'unica istanza, reindirizzare la richiesta alla primissima istanza per emettere la statistica 1)

1) Raccogliere statistiche per tutti i maghi/strumenti all'interno di una classe. L'elenco dei maghi deve essere specificato durante l'inizializzazione e messo in un array.

2) Come già consigliato, rendete statici i risultati della statistica #1, e se sono disponibili, non iniziate il ricalcolo.

 
Artyom Trishkin:

La classe ha un ciclo che raccoglie dati su tutti gli ordini e le posizioni 1) nel conto e 2) solo quelli che corrispondono al filtro m_symbol e m_magic.

Come risultato, una volta che il ciclo è completato, abbiamo dati 1) sull'intero conto e 2) solo sugli ordini e le posizioni appartenenti all'EA.

Tuttavia, se un EA usa diversi simboli o maghi, abbiamo bisogno di creare istanze della classe per raccogliere statistiche per ogni simbolo/magia. È qui che sorge la domanda: perché dovremmo raccogliere le statistiche (1) in queste nuove istanze, che sono già state raccolte nella prima istanza della classe?

Da qui la domanda - come all'interno della classe sapere se la sua istanza è l'unica, e quindi dobbiamo raccogliere la statistica 1, o, se l'istanza non è l'unica, non raccogliere la statistica 1, e darla fuori dalla primissima istanza (anche qui, non è chiaro come all'interno della classe, se non è l'unica istanza, reindirizzare la richiesta alla primissima istanza della classe per dare la statistica 1)

Se l'inglese non è un problema - ho pubblicato un esempio di analisi dell'ipercubo nel mio blog. Passare attraverso la storia una volta, poi richiedere informazioni dall'ipercubo nelle fette desiderate (diverse). Ci sono, ovviamente, selettori sia per mago che per simbolo.
 
Artyom Trishkin:

Da qui la domanda - come sapere all'interno della classe che la sua istanza è l'unica, il che significa che è necessario raccogliere la statistica 1, o, se l'istanza non è l'unica, allora non raccogliere la statistica 1, e darla fuori dalla prima istanza

Vi è già stato detto:

Meglio ancora, tutti i calcoli unici dovrebbero essere messi in una classe separata e farne un singleton.

La prima volta che si accede a un singleton, legge le statistiche, poi le recupera soltanto.


 

Sviluppatori, per favore spiegate perché l'evento di tipoOnTesterPass, quando si ottimizza il numero di varianti superiore a8.6e+18, viene chiamato solo quando si crea una nuova generazione?

E perché non c'è una sola parola su questa caratteristica nel file di aiuto?

Perché dovrei scavare nella metà di un Expert Advisor per trovare una risposta, perché questa funzione funziona correttamente in un EA, mentre nell'altro scrive solo i risultati di ottimizzazione nel file su una nuova generazione?


Come posso aggirare questa limitazione?