
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
Nella classe CGraphic, ho sostituito il tipo di colore con uint in tutti i punti, come avete chiesto.
Inoltre, ho aggiunto nuovi metodi alla classe CCanvas, che permettono di disegnare primitive con spessore specificato:
In linea con l'innovazione di CCanvas, ho ampliato le proprietà di CCurve:
Quando si disegna una curva con linee, è ora possibile specificare lo spessore delle linee e lo stile delle sue estremità.
È semplicemente fantastico.
La gestione delle spline (interpolazione con curve di Bézier) è stata rivista. La sua implementazione è stata spostata dalla classe CGraphics direttamente in CCanvas, il che permette di costruire spline al di fuori della libreria Graphics.
Inoltre, è stato aggiunto un algoritmo per il rendering delle spline chiuse.
Di conseguenza, la classe CCanvas ha ora due nuovi metodi pubblici.
Questi metodi permettono di disegnare spline in un dato stile e con un dato spessore.
Dato che le curve di Bezier descrivono cerchi ed ellissi in modo piuttosto preciso, non c'è un'ovvia necessità di aumentare la classe CCanvas con nuovi metodi per rendere queste primitive con un dato spessore.
L'esempio di approssimazione dell'ellisse con curve di Bézier basato sul metodo PolygoneSmooth:
Risultato:
Un altro possibile passo verso la versatilità della libreria Graphics: una modalità di disegno di curve personalizzate CURVE_CUSTOM.
Questa modalità eliminerà la necessità di ereditare la classe CGraphic e di sovraccaricare i metodi ...Plot per disegnare una curva in modo diverso da quello consentito dagli strumenti standard della libreria.
Per implementare questa modalità CURVE_CUSTOM saranno aggiunte nuove proprietà alla classe CCurve.
Si basa su un nuovo puntatore alla funzione PlotFucntion.
Questo approccio apre nuove possibilità per disegnare le trame.
Implementiamo il disegno di candele nella libreria CGraphics come esempio:
1. Creiamo una classe contenitore in cui saranno memorizzati tutti i dati di una singola candela.
Dato che la classe CCandle è una discendente della classe CObject, tutti i candelabri che vogliamo disegnare, possiamo scriverli sequenzialmente nell'oggetto della classe CArrayObj. Questo array entrerà nel nostro metodo di disegno personalizzato come parametro cbdata. Di conseguenza, il metodo di disegno delle candele avrà il seguente aspetto.
3. Per semplicità, tutti i candelieri saranno generati casualmente. E così generiamo sequenzialmente 10 candele e riempiamo l'oggetto di classe CArrayObj con esse. Poi creiamo l'oggetto CGraphics e aggiungiamo una curva in esso, specificando che sarà disegnata usando la nostra funzione PlotCandles. Dobbiamo anche cambiare i valori massimi e minimi dell'asse y, in modo che le nostre candele siano completamente visibili.
Come risultato, otteniamo il seguente grafico:
@Roman Konopelko
c'è un piccolo errore nella funzione CGraphic::SetDefaultParameters
I colori devono essere inizializzati tenendo conto dell'opacità.
@Roman Konopelko
c'è un piccolo errore nella funzione CGraphic::SetDefaultParameters
I colori devono essere inizializzati tenendo conto dell'opacità.
Questo esempio ha causato il blocco del computer. Cosa ho fatto: dopo aver messo l'indicatore sul grafico nell'editor, ho giocato con diverse combinazioni di commentare/non commentare le linee 87 e 88 (quando una alla volta, quando insieme)
Ripetuto il risultato due volte. Non ho registrato la sequenza delle azioni. La terza volta è banale che ho paura di controllare.
Aggiunto: build 1607 x64
Questo esempio ha causato il blocco del computer. Cosa ho fatto: dopo aver messo l'indicatore sul grafico nell'editor, ho giocato con diverse combinazioni di commentare/non commentare le linee 87 e 88 (quando una alla volta, quando insieme)
Ripetuto il risultato due volte. Non ho registrato la sequenza delle azioni. La terza volta è banale che ho paura di controllare.
Aggiunto: build 1607 x64
Ripetuto il record oggi - computer morto si blocca, è riuscito a vedere il consumo di RAM salire da 2GB a 5,5GB. Sembra che sia riuscito a chiudere il programma, ma il computer è rimasto sospeso per cinque minuti.
Questa volta ho messo un limite alla dimensione dell'array - non più di 300 elementi. Come puoi vedere non ha aiutato 🤔
cosa dice il debug?
cosa dice il debug?
Jbug non l'ha capito, ho fatto così: ho passato il mouse su un indicatore e ho scomposto/commentato una o due linee e compilato. Ho finito per scrivere da un tablet, il portatile si è spento...
Il gbug non ce l'ha fatta, ho fatto così: sono passato sopra l'indicatore e ho commentato/commentato una o due righe e compilato. Ho finito per scrivere da un tablet, il portatile si è spento...
Così, il portatile dopo il riavvio duro è tornato in vita, ma non voglio condurre ulteriori esperimenti distruttivi - ci sono diversi Expert Advisors in esecuzione sul portatile, quindi non c'è alcun desiderio di prendere un freeze per un'ora intera.