Errori, bug, domande - pagina 758

 
Sì, ora sono avanti di quattro secondi.
 
Perché il punto medio scompare quando la linea di tendenza cambia posizione?
 

Ciao!

Ho bisogno di vedere graficamente come il valore di una certa variabile cambia su ogni barra durante un test visivo, cioè ho bisogno di costruire un grafico separato in una sottofinestra. Per esempio, voglio vedere un grafico delle variazioni del capitale su ogni barra in una finestra separata sotto il grafico.

Cosa devo fare? Devo scrivere un indicatore, attaccarlo al grafico e passargli i valori delle variabili dell'EA attraverso le variabili globali del terminale? O c'è un modo "migliore"?

Grazie in anticipo.

Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Основы языка / Переменные / Глобальные переменные - Документация по MQL5
 
Alex5757000:

Ciao!

Ho bisogno di vedere graficamente come il valore di una certa variabile cambia su ogni barra durante un test visivo, cioè ho bisogno di costruire un grafico separato in una sottofinestra. Per esempio, voglio vedere un grafico delle variazioni del capitale su ogni barra in una finestra separata sotto il grafico.

Cosa devo fare? Devo scrivere un indicatore, attaccarlo al grafico e passargli i valori delle variabili dell'EA attraverso le variabili globali del terminale? O c'è un modo "migliore"?

Grazie in anticipo.

Niente affatto, si possono ottenere i valori del patrimonio netto o del saldo direttamente nell'indicatore.

Definisci i parametri del buffer dell'indicatore che disegna come un grafico a barre.

E scrivere tutti e quattro i valori nei buffer appropriati,

Aperto all'apertura della barra, alto basso e dinamico (l'ultima barra).

si presenta così: nell'allegato

Naturalmente, puoi anche usare il valore assoluto (opzione raccomandata), ma non credo che mostri piccoli incrementi iniziali, quindi penso che la differenza tra i valori iniziali e attuali sia migliore.

ZS, ma no, la scala è dinamica quindi puoi fare la seconda opzione, è abbastanza leggibile.

File:
 
Urain:

Niente affatto, potete ottenere i valori del patrimonio netto o del saldo direttamente nell'indicatore.

Imposta i parametri per disegnare il buffer dell'indicatore come un grafico a barre.

e scrivere tutti e quattro i valori nei buffer corrispondenti,

aperto all'apertura della barra, alto basso e chiusura in modo dinamico (ultima barra).

Valori patrimoniali e di bilancio - sì, ma cosa succede se voglio vedere il valore di una variabile calcolata nell'EA?
 
Alex5757000:
Valori patrimoniali e di bilancio, sì, ma cosa succede se voglio vedere il valore di una variabile calcolata in un EA?

Puoi farlo tramite un evento personalizzato, solo non dimenticare di aggiornare il grafico dopo l'evento,

perché il tick viene prima che l'evento venga elaborato, in ordine di priorità.

Ma è possibile farlo con i globali, ma c'è lo stesso problema - il tick è già arrivato e la variabile è ancora in fase di elaborazione nell'EA (i suoi cambiamenti sono in fase di preparazione), naturalmente, i dati saranno ricevuti, ma ci sarà un ritardo su un tick, è ancora più corretto nel caso, c'è un posto per mettere aggiornare il grafico dopo il fatto, quando si sa già per certo che la variabile ha i dati effettivi.

 

Questo codice non compila con l'errore "'return' - structure has objects and cannot be copied" a causa del"CTest getCopy(void) {CTest res; return res;}" stop.

Questo può essere risolto in 2 modi:

1) cambiare"class" in"struct"

2) decommentare la stopka con un operatore di assegnazione sovraccarico.

Quindi deve essere così che il ruolo di costruttore di copia è eseguito dall'operatore di assegnazione sovraccaricato? Perché allora non è menzionato nel libro di riferimento, tranne che per un esempio di una classe matrice (la cui analisi dettagliata, tra l'altro, mi ha permesso di trovare l'errore nel mio codice)?

class CTest
  {
public:
    CTest(void): cnt(0) {}
   ~CTest(void) {}
    CTest(const CTest& T) {cnt = T.cnt;} // copy constructor
    //------------------------
    CTest getCopy(void) {CTest res; return res;} 
    //------------------------
    //CTest* operator=(const CTest& T) {cnt = T.cnt; return GetPointer(this);}
private:
         int cnt;
  };
Документация по MQL5: Основы языка / Операторы / Оператор-выражение
Документация по MQL5: Основы языка / Операторы / Оператор-выражение
  • www.mql5.com
Основы языка / Операторы / Оператор-выражение - Документация по MQL5
 
WWer:

Questo codice non compila con l'errore "'return' - structure has objects and cannot be copied" a causa del"CTest getCopy(void) {CTest res; return res;}" stop.

Naturalmente, un oggetto non può essere restituito dalle funzioni.(A differenza delle strutture.) È documentato.


Questo può essere risolto in 2 modi:

1) cambiare"class" in"struct"

Vedi sopra.

2) decommentare la stopka con un operatore di assegnazione sovraccarico.

Naturalmente, l'operatore sovraccaricato restituisce un puntatore a maniglia, il che è normale. Ora non è l'oggetto restituito dalla funzione getCopy() ma il puntatore (il ritorno dalla funzione è un'assegnazione implicita) che rende il codice corretto.

// Solo sintatticamente corretto.

// Il ritorno di una variabile non inizializzata dalla funzione getCopy(), spero, serve solo a dimostrare il problema di sintassi e non pretende di essere ragionevole.

Quindi dovrebbe essere così che il ruolo di costruttore di copia è eseguito dall'operatore di assegnazione sovraccaricato?

Ehm... Cosa c'entrano i ruoli? Puoi sovraccaricare l'operatore di assegnazione in qualsiasi modo tu voglia e scrivere correttamente il costruttore di copia. L'errore nel tuo caso sta altrove.


Perché non è menzionato nel libro di riferimento, tranne che per un esempio di una classe matrice (la sua analisi dettagliata, a proposito, mi ha aiutato a trovare l'errore nel mio codice)?

Perché l'11 febbraio 2096785 a.C. il dinosauro Vasya ha accidentalmente calpestato la lucertola Clava, causando una lunga catena di cause e conseguenze che hanno portato alla situazione attuale. Non puoi farci niente.

;)

 
MetaDriver:// Il ritorno di una variabile non inizializzata dalla funzione getCopy(), si spera, serve solo a dimostrare il problema di sintassi, e non pretende di essere ragionevole.

Perché dovrebbe essere inizializzato? È un'istanza di una classe che ha un costruttore proprio per questo scopo.

MetaDriver:
Ehm... Cosa c'entrano i ruoli? Puoi sovraccaricare l'operatore di assegnazione in qualsiasi modo tu voglia e scrivere correttamente il costruttore di copia. Il tuo errore è in un altro posto completamente.

E poi come scrivere un corretto costruttore di copia per questo scopo?

Motivazione: