Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
- È difficile con Zoomo. Poiché non ci sono barre di scorrimento. E ad essere onesti, non vorrei che fossero implementati in questa classe. Al momento usa solo CCanvas, e non chiede altri oggetti. E questo è molto buono.
Ho intenzione di implementare lo zoom in modo indipendente per eredità, mettere le barre di scorrimento e ridimensionare come necessario.
Le barre di scorrimento sono il male. Puoi far girare un grafico normale senza barre - con il mouse e la tastiera.
non ci sono eventi del grafico per lo scorrimento, MQL non li invia.
Ma si può semplicemente trascinare con il mouse invece di girare la ruota.
ma si può semplicemente trascinare con il mouse invece di girare la ruota.
@Roman Konopelko
E il numero 36?
E ha trovato un altro zero divide
Posso chiarire (per riprodurre)
è stata aggiunta una curva CurveAdd(arrY, CURVE_HISTOGRAM, "P/L") che ha un array arrY di dimensione 1 o 0 elementi.
e a giudicare da questo costruttore di curve m_xmax=m_xmin=0.
@Roman Konopelko
E il numero 36?
E ha trovato un altro zero divide
Implementato #36 e corretto l'errore di divisione dello zero.
L'unica cosa è che ValuesFunctionFormat non è cambiato in:
void ValuesFunctionFormat(DoubleToStringFunction func, void* cbdata) { m_values_func=func; m_cbdata=cbdata; }
E ha implementato metodi per ottenere/impostare un puntatore a una funzione e un puntatore a un oggetto separatamente:
void ValuesFunctionFormat(DoubleToStringFunction func) { m_values_func=func; }
void *ValuesFunctionFormatCBData(void) const { return(m_values_cbdata); }
void ValuesFunctionFormatCBData(void *cbdata) { m_values_cbdata=cbdata; }
Si prega di sistemare la gestione dei colori in kanvas.
Ora non tiene conto del canale alfa. color invece di uint è ovunque.
A causa di ciò, quando si disegna su tela, ci sono lacune grafiche ovunque (griglie e cornici trasparenti, perché nel colore il canale alfa =0, cioè completamente trasparente)
Solo in alcune funzioni l'hai risolto chiamando costantemente ColorToARGB
ad esempio
{
...
//--- create background
m_canvas.FillRectangle(0,0,m_width,m_up-1,ColorToARGB(m_background.clr,255));
m_canvas.FillRectangle(0,m_height-m_down+1,m_width,m_height,ColorToARGB(m_background.clr,255));
m_canvas.FillRectangle(0,m_up,m_left-1,m_height-m_down,ColorToARGB(m_background.clr,255));
m_canvas.FillRectangle(m_width-m_right+1,m_up,m_width,m_height-m_down,ColorToARGB(m_background.clr,255));
Ma perché? Se volete rendere il colore un tipo uint e impostarlo con il canale alfa
Come qui (e in altre funzioni di colore)
{
...
//--- sets the default values for grid
m_grid.clr_line=ColorToARGB(clrWhiteSmoke);
m_grid.clr_axis_line=ColorToARGB(clrSilver);
m_grid.clr_frame=ColorToARGB(clrBlack);
m_grid.clr_background=ColorToARGB(clrWhite);
----
PS.
Il fatto che la tela stessa abbia COLOR_FORMAT_XRGB_NOALPHA non è importante in questo caso.
ha deciso di controllare le correzioni nell'aggiornamento 1502 del terminale
dove sono stati fatti tutti i miglioramenti?
Nessun ValuesFunctionFormat, nessuna correzione di bug zerodevide
LOL
buone vacanze )
installato 1510.
ValuesFunctionFormat è lì, è OK.
--
@Roman Konopelko vedi la frase #47 per favore.
Nel codice CGraphic sono solo alcune variabili e funzioni. La sostituzione non è difficile.
Ma elimina il problema della trasparenza nel rendering. Perché in colore canale alfa =100% di trasparenza, che è sbagliato.
@Roman Konopelko vedi la frase #47 per favore.
Ci sono solo poche variabili e funzioni nel codice CGraphic. La sostituzione non è difficile.
Ma elimina il problema della trasparenza durante il rendering. Infatti, in colore canale alfa = 100% di trasparenza, che è sbagliato.
Ho anche aggiunto nuovi metodi nella classe CCanvas, che permettono di disegnare primitive con un determinato spessore:
void LineThickHorizontal(const int x1,const int x2,const int y,const int size,const uint clr,const uint style,ENUM_LINE_END end_style);
void LineThick(const int x1,const int y1,const int x2,const int y2,const int size,const uint clr,const uint style,ENUM_LINE_END end_style);
void PolylineThick(const int &x[],const int &y[],const int size,const uint clr,const uint style,ENUM_LINE_END end_style);
void PolygonThick(const int &x[],const int &y[],const int size,const uint clr,const uint style,ENUM_LINE_END end_style);
int LinesWidth(void) const { return(m_lines_width); }
void LinesEndStyle(ENUM_LINE_END end_style) { m_lines_end_style=end_style; }
void LinesWidth(const int width) { m_lines_width=width; }
Esempio:
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
double x[] = { -100, -40, -10, 20, 30, 40, 50, 60, 70, 80, 120 };
double y[] = { -5, 4, -10, 23, 17, 18, -9, 13, 17, 4, 9 };
CGraphic graphic;
graphic.Create(0,"G",0,30,30,780,380);
//--- plot curve
CCurve *curve=graphic.CurveAdd(x,y,CURVE_LINES);
curve.LinesSmooth(true);
curve.LinesStyle(STYLE_DOT);
curve.LinesEndStyle(LINE_END_ROUND);
curve.LinesWidth(10);
graphic.CurvePlotAll();
graphic.Update();
}
L'implementazione di questi metodi è basata sull'algoritmo Fast Prefiltered Lines, in cui il grado di levigatezza delle linee è basato sul filtro selezionato. Se necessario, lo descriverò più dettagliatamente.