Errori, bug, domande - pagina 3126

 
Nikolai Semko #:

Si forma una struttura di dati o una matrice di strutture in un EA o in un indicatore e la si invia a una risorsa.

Kanvas stesso lavora con una risorsa grafica (OBJ_BITMAP_LABEL/ OBJ_BITMAP). Quindi tutto quello che resta da fare è comunicare il nome della risorsa a un'altra applicazione e questa accederà facilmente ai pixel. Dovrà anche passare il formato dei pixel. E puoi leggere i pixel o cambiarli con un altro CCanvas. Ha un metodo, CCanvas::Attach, per attaccarlo ad una risorsa esistente.

 
Nikolai Semko #:

Qual è il problema, Andrei?
Formare una struttura di dati o un array di strutture

Nessun problema! Sono solo i passi in più, è di questo che sto parlando.

Qualsiasi indicatore bufferizzato può essere letto da qualsiasi altro indicatore o Expert Advisor.

Per esempio, ho un EA che ottiene una lista di indicatori in esecuzione e poi li crea su una lista specificata di strumenti/TF e poi raccoglie i segnali da essi (e li invia a telegram). Quindi, qualsiasi indicatore buffer può essere semplicemente eseguito su un grafico e sarà rilevato automaticamente. Ma l'indicatore kanvas dovrà essere collegato manualmente e poi il resto del lavoro dovrà essere fatto manualmente.

Dobbiamo unificare il lavoro con gli indicatori kanvas. Ho paura che questa unificazione si traduca in... indicatori del buffer))

 
Nikolai Semko #:

Qual è il problema, Andrei?

Non ne ho trovato uno e non l'ho nemmeno cercato

 
Andrey Khatimlianskii #:

Non c'è nessun problema! Sono solo gesti inutili, ecco di cosa parlo.

Qualsiasi indicatore buffer può essere letto da qualsiasi altro indicatore o EA, e un kanvas ha bisogno di un livello kastum.

Per esempio, ho un EA che ottiene una lista di indicatori in esecuzione e poi li crea su una lista specificata di strumenti/TF e poi raccoglie i segnali da essi (e li invia a telegram). Quindi, qualsiasi indicatore buffer può essere semplicemente eseguito su un grafico e sarà rilevato automaticamente. Ma l'indicatore kanvas dovrà essere collegato manualmente e poi il resto del lavoro dovrà essere fatto manualmente.

Dobbiamo unificare il lavoro con gli indicatori kanvas. Ho paura che questa unificazione si traduca in... indicatori del buffer)).

Sto parlando di estendere le possibilità, incluso l'uso delle stesse classi per la visualizzazione, sia negli indicatori che negli Expert Advisors. Negli indicatori, naturalmente, c'è sempre un metodo di trasferimento del buffer e nessuno vieta il suo uso in caso di tela pura.
E a proposito, ho già implementato un metodo ibrido di trasferimento, quando un array di strutture viene trasferito in un buffer tramite un'unione. Anche se c'è un'aggiunta aggiuntiva sul lato di ricezione, ma in primo luogo, non è complicato, e in secondo luogo, rende il lavoro con i dati di un altro indicatore più facile e più conveniente per l'utente grazie alle strutture, non agli array di doppi. Agli utenti piacerà sicuramente.
 
Mihail Matkovskij #:

Kanvas stesso lavora con una risorsa grafica (OBJ_BITMAP_LABEL/ OBJ_BITMAP). Quindi rimane da comunicare il nome della risorsa ad un'altra applicazione e questa accederà facilmente ai pixel. Dovrà anche passare il formato dei pixel. E puoi leggere i pixel o cambiarli con un altro CCanvas. Ha un metodo chiamato CCanvas::Attach per attaccarlo a una risorsa esistente.

È improbabile che sia un compito di passaggio dei grafici, dato che spesso sono sincronizzati con le barre e il prezzo dell'altra finestra, e sono integrati con il modello Event.
La finestra dell'indicatore non si forma se non è presente o non è attiva.
Se la finestra dell'indicatore non esiste, c'è solo il modo attraverso iCustom di usare il buffer o i buffer. Ma come ho detto prima, potete mettere una struttura o un array di strutture in questi buffer.
 
Andrei Trukhanovich #:

Non riuscivo a trovarlo e non lo stavo nemmeno cercando.

Grazie per la segnalazione.
Ora sappiamo che non
 
Nikolai Semko #:
Inoltre, penso che la risorsa grafica non sarà nemmeno generata se la finestra dell'indicatore non esiste o non è attiva.

Mi chiedo in quali casi se un indicatore è in esecuzione e la sua finestra non esiste? E quando la finestra è inattiva (l'utente è passato a un altro grafico o l'ha minimizzato), quale risorsa viene scaricata dalla memoria, è semplicemente cancellata?

Nikolai Semko #:
Ma, come ho detto, potete mettere una struttura o un array di strutture in questi buffer.

Credo di essere d'accordo con te. Ho dovuto creare un robot multitasking. La prima istanza dell'applicazione crea compiti e crea grafici per essi, poi applica un modello speciale con lo stesso robot. Poi il primo robot crea i compiti e i robot creati dall'automa li eseguono. Il trasferimento dei dati avviene attraverso le risorse. Le stringhe di numeri e le strutture sono trasferite lì. C'è un esempio di trasferimento di dati via http qui sul sito (se la memoria non mi inganna). Ma i dati sulle strutture, le loro dimensioni e tipi vanno prima lì, e poi i dati stessi. Ho deciso di rendere tutto più facile nel mio Expert Advisor passando le stringhe e i numeri attraverso un array di uchar-types sotto forma di stringhe che semplifica notevolmente il processo di lettura/scrittura. Ma non ho mai scritto byte nei buffer degli indicatori e li ho letti da lì. Ma vedo già uno svantaggio di questo metodo: il numero limitato di byte nelle barre dell'indicatore. Anche se ci sono 8 byte in ogni cella dell'array. Forse non è uno svantaggio così grande. Chi lo sa...

 
Mihail Matkovskij #:

Mi chiedo in quali casi se un indicatore è in esecuzione ma la sua finestra non esiste?

Intendevo dire che usando iCustom

E quando la finestra è inattiva (l'utente è passato a un altro grafico o l'ha minimizzato), quale risorsa viene scaricata dalla memoria, è semplicemente cancellata?

questa era solo la mia supposizione, dato che non c'è un punto speciale nella formazione delle immagini quando la finestra è ridotta a icona. Come è implementato in MT - non ho controllato, ma ho trovato qualcosa di simile. Ho dimenticato tutte le sfumature.
Comunque è improbabile che la risorsa venga cancellata, ma non viene nemmeno aggiornata nel tempo. Cioè CCanvas::Update non funziona

void CCanvas::Update(const bool redraw)
  {
//--- check
   if(m_rcname==NULL)
      return;
//--- update resource and redraw
   if(ResourceCreate(m_rcname,m_pixels,m_width,m_height,0,0,0,m_format) && redraw)
      ChartRedraw(this.m_chart_id);
  }
 
Nikolai Semko #:

Intendevo dire che usando iCustom

Si scopre che è possibile passare valori attraverso la risorsa e i buffer, ma non attraverso la risorsa Kanvas. È un compito interessante, chiamare un indicatore con output a Kanvas usandoiCustom. Non l'ho provato. Mi sembra che in questo caso ci possano essere degli errori. Forse, un tale indicatore caricato attraverso iCustom non funzionerà affatto?

In ogni caso, è improbabile che la risorsa venga cancellata, ma non si aggiorna nemmeno nel tempo. Cioè CCanvas::Update non funziona.

Credo che ResourceCreate funzioni, ma il risultato non viene reso usando ChartRedraw. Le chiamate alla funzione vanno, ma il sistema capisce che il grafico non ha bisogno di essere aggiornato mentre è inattivo. Ma seResourceCreate non funziona,immaginate che l'indicatore abbia aggiornato i dati ad un tick casuale quando il grafico è inattivo, ma la risorsa di Kanvas non è stata aggiornata. E poi l'utente ha deciso di attivare questo grafico inattivo e guardare l'indicatore (Kanwa). E si scopre che c'è stato un tick, ma il Canva rimane lo stesso di prima che l'utente cambiasse il grafico. E se durante il periodo di inattività ci fossero molte zecche? Naturalmente, l'indicatore li elaborerebbe, ma nessuno dei risultati verrebbe mostrato sulla tela.

 
Mihail Matkovskij #:

Credo che ResourceCreate funzioni, ma il risultato non viene visualizzato con ChartRedraw.

Sì, probabilmente hai ragione. È probabile che sia così.
E per risparmiare risorse, sarebbe giusto monitorare l'attività della finestra e non generare una bitmap se la finestra non è attiva.

Vale la pena controllare piuttosto che fare supposizioni.

Motivazione: