Come fare in modo che gli oggetti disegnati da XY cambino in modo fluido (MT4 vs MT5) - pagina 10

 
Vitaliy Kuznetsov:

Grazie, buon modello, tornerà utile. Molto e interessante imparare dal vostro lavoro.

Dmitry, ti considero ancora un programmatore capace di dimostrare un'alta abilità.

E se ci sono suggerimenti codice, pensieri costruttivi, con piacere (e non solo io) adotterebbe la vostra esperienza.

P.S. È meglio vedere il codice una volta, che sentirne parlare 100 volte.

Sì, in fila, in piedi, in piedi, a braccia aperte... Codice per cosa?

 
Nikolai Semko:

Dubito che si possa fare nel freelance. Quelli che possono farlo sono sovraccarichi di lavoro fino alle orecchie, e quelli che sono liberi probabilmente non sono così bravi con i kanvas come te.

È per questo che non mi piacciono gli oggetti, perché hanno una vita propria nei loro flussi, sulla quale non si ha alcun controllo. Con il kanvas, al contrario, tutto è nelle tue mani. Ecco perché devo scrivere del codice aggiuntivo per il tester con canvas per non rallentare quando si calcolano i frame ad ogni tick più di 30 volte al secondo.
Inoltre, lavorare con i TF e il caricamento della storia è molto irragionevole e inefficiente in MT5. Solo M1 viene caricato, e in una forma spacchettata, mentre gli altri sono solo calcolati da M1. Pertanto, se si abilita MN1 per la prima volta, 100 barre impiegheranno più di 10 secondi per essere caricate. Ho dovuto scrivere io stesso il caricamento della barra e convertire M1 in forma compressa e avere tutti i TF calcolati in memoria. Tutti i miei TF insieme a M1 occupano una frazione dello spazio in RAM rispetto al solo M1 regolare in MT5.

È una penitenza o un piacere?

 
Алексей Тарабанов:

È il pentimento o il rapimento?

Vedete, è il contrario. Tu crei un programma - è un mondo che vive secondo le tue leggi. Si fa qualcosa di orientato agli oggetti: si genera qualcosa come un'ameba, o un refrigeratore, che vive per conto suo.

 
Алексей Тарабанов:

Si tratta di pentimento o di rapimento?

Questa è una sciocchezza basata su un ego inadeguato. E molto lontano dalla realtà del lavoro in MT5.

 
Nikolai Semko:

Bene, per prima cosa fissa il tuo indicatore con gli oggetti secondo questo algoritmo che ti ho dato.

Nikolay, se non è difficile, cosa pensi del fatto che l'indicatore fisso si sposta nel tempo nel tester. Se provate a cambiare la scala con il mouse, è fissa.

È lo stesso con i kanvas. O il grafico non viene spostato o viene spostato in modo errato (dopo un po' di tempo), finché non si cambia manualmente la scala del grafico. I calcoli e gli avvisi stessi sono corretti, ma la grafica...

Sicuramente ci deve essere una soluzione, che non vedo. O forse è qualcosa di sbagliato nel tester?

 
Vitaliy Kuznetsov:

Nikolai, se non ti dispiace, quali sono i tuoi pensieri sullo spostamento dell'indicatore corretto nel tempo nel tester. Se provate a cambiare la scala con il mouse, viene corretta.

Lo stesso vale per i kanvas. O il grafico non viene spostato o viene spostato in modo errato (dopo un po' di tempo), finché non si cambia manualmente la scala del grafico. I calcoli e gli avvisi stessi sono corretti, ma la grafica...

Sicuramente ci deve essere una soluzione, che non vedo. O forse c'è qualcosa di sbagliato nel tester?

Aggiungo una linea in OnChartEvent

if (id == CHARTEVENT_CHART_CHANGE ) Draw (); 
monitorare un evento di cambiamento del grafico (una nuova barra è anche un evento di cambiamento del grafico)
  • Aggiungo a OnCalculate per la modalità tester una linea per ridisegnare ad esempio quando arriva una nuova barra, poiché OnChartEvent non funziona nel tester:
     if(rate_total != prev_calculated ) if (Canvas.tester) {ChartChanged (); Draw ();}
  • Se non funziona in MT4, significa che c'è qualcosa di sbagliato nell'evento CHARTEVENT_CHART_CHANGE. Non posso controllare ora, non ci sono ancora citazioni.



     
    Nikolai Semko:

    Grazie per il suggerimento. Non l'ho ancora fatto, lo proverò oggi