Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1131

 
Alexey Viktorov:

Artyom, non hai notato che il tipo è DRAW_COLOR_HISTOGRAM2 e ha due buffer di dati e un terzo buffer di colore.

Sì, proprio così. Non ha prestato attenzione.

 
Artyom Trishkin:

Sì, proprio così.

In generale, sì. Il primo buffer è usato per i calcoli, DRAW_COLOR_HISTOGRAM2 è disegnato usando due coordinate/buffer + ne serve un altro per il colore.


Alexey Viktorov:

Perché questa linea è commentata

Dovrebbe includere altri colori, però. O almeno uno, ma la dichiarazione dovrebbe essere.

Io uso o

#property indicator_color2 GreenC,RedC

o

PlotIndexSetInteger(1,PLOT_LINE_COLOR,0,GreenC);
PlotIndexSetInteger(1,PLOT_LINE_COLOR,1,RedC);

Cioè, è una cosa, e ho supposto che siano intercambiabili come in MQL4, cioè l'assenza di direttiva del preprocessore per l'impostazione del colore è sostituita da PlotIndexSetInteger(). Non è così in MQL5?

 
The_Sheikh:

In generale, sì. Il primo buffer è usato per i calcoli, DRAW_COLOR_HISTOGRAM2 è disegnato usando due coordinate/buffer + ne serve un altro per il colore.


Io uso o

#property indicator_color2 GreenC,RedC

o

PlotIndexSetInteger(1,PLOT_LINE_COLOR,0,GreenC);
PlotIndexSetInteger(1,PLOT_LINE_COLOR,1,RedC);

Cioè, è una cosa, e ho supposto che siano intercambiabili come in MQL4, cioè l'assenza di direttiva del preprocessore per l'impostazione del colore è sostituita da PlotIndexSetInteger(). Non è così in MQL5?

Beh, stai dando frammenti di documentazione. Perché non li studiate a fondo? La direttiva è presente nell'esempio indipendentemente da PlotIndexSetInteger.

 
Alexey Viktorov:

Bene, lei dà degli estratti della documentazione. Perché non lo studiate a fondo? La direttiva è presente nell'esempio indipendentemente da PlotIndexSetInteger.

Sì, ho studiato la documentazione e la direttiva è presente nell'esempio, ma mi dispiace, non ho visto nessun paragrafo in esso che dice che la direttiva deve essere presente, quindi abitualmente escludo la direttiva come in MQL4.

La documentazione dice anche che si possono usare fino a 64 colori per la tracciatura. Ma non ho trovato un modo per assegnare il numero di tali palette senza elencare monotonamente ogni colore dopo la direttiva.

Tuttavia, la questione è risolta.

 
The_Sheikh:

Sì, ho studiato la documentazione, la direttiva è presente nell'esempio, ma mi dispiace, non ho notato un paragrafo che dichiara che la direttiva deve essere presente, quindi per abitudine escludo la direttiva come in MQL4.

La documentazione dice anche che si possono usare fino a 64 colori per la tracciatura. Ma non ho trovato un modo per impostare il numero di tali palette senza una monotona enumerazione di ogni colore dopo la direttiva.

Tuttavia, ho finito con la domanda.

E questo

#define  GreenC 0x00FF00
#define  RedC 0x0000FF

non può essere cambiato nel ciclo? Non lo conosco affatto e quindi non lo so.

Dopo tutto, una matrice di colori può anche essere riempita nel ciclo da un'altra matrice. Nell'esempio, c'è un array color colors = {}; dove sono elencati i colori. E poi questa matrice "di servizio" viene riempita con PlotIndexSetInteger(1,PLOT_LINE_COLOR, index_in_array, colour);

 

Scarico le quotazioni da diversi luoghi e spesso vedo lacune di 1-2 barre, i dati non sono lì

Come si possono riempire con una perdita minima di informazioni? Ci sono degli algoritmi?

Sono sicuro che Metatrader lo fa

 
Roman Sharanov:

Scarico le quotazioni da diversi luoghi e spesso vedo lacune di 1-2 barre, i dati semplicemente non sono lì

Come si possono riempire con una perdita minima di informazioni? Ci sono algoritmi?

Sono sicuro che Metatrader lo fa.

MetaTrader non riempie i buchi - se c'è una barra, sarà disegnata, se non c'è una barra, sarà saltata.

 
Vladimir Karputov:

Ecco l'esaminatore di prova - tutto funziona correttamente:

e il risultato:

Grazie per la risposta dettagliata. Si è scoperto che l'errore si osserva solo quando si testa l'Expert Advisor sulla storia, se lo collego a dati reali- tutto è OK.

Se esegui il tuo esperto sotto debug su dati storici, calcola in modo errato:

2019.10.08 02:10:14.425 2019.01.01 00:00:00 Volume 1.0, profitto -> -50.00

2019.10.08 02:10:16.226 2019.01.01 00:00:00 Volume 0,5, profitto -> -50,00


 
aveshoff:

Grazie per la risposta dettagliata. Si è scoperto che l'errore si osserva solo quando si testa l'Expert Advisor sulla storia, se è collegato a dati reali - tutto è OK.

Se esegui il tuo esperto sotto debug su dati storici, calcola in modo errato:

2019.10.08 02:10:14.425 2019.01.01 00:00:00 Volume 1.0, profitto -> -50.00

2019.10.08 02:10:16.226 2019.01.01 00:00:00 Volume 0,5, profitto -> -50,00


Si prega di fornire informazioni complete: codice completo, simbolo, timeframe, quante posizioni e su quali simboli sono aperte - in generale per essere in grado di riprodurre la situazione.

 

Buon pomeriggio!

Puoi dirmi come scoprire quale esperto è in base all'ID

ID 11032019, non riesci a capire dove trovarlo?

Motivazione: