ChartNavigate durante l'inizializzazione - pagina 3

 
Dina Paches:

Perché? Ho scritto/portato delle sciocchezze?

Non che sia una sciocchezza... ma è solo che qui stiamo studiando la navigazione e ridisegnare il grafico non ha alcun effetto (dato che all'inizio dell'esperimento era chiaramente indicato che lo scorrimento del grafico doveva essere disabilitato).

Il codice di prova gira per un minuto o due al massimo, i nostri computer sono potenti - quindi il carico è trascurabile.

 
Vladimir Karputov:

Non che sia una sciocchezza... ma è solo che qui stiamo studiando la navigazione e il ridisegno dei grafici non ha alcun effetto (come è stato chiaramente detto all'inizio dell'esperimento che lo scorrimento dei grafici deve essere disabilitato).

Il codice di prova viene eseguito per un minuto o due al massimo, i nostri computer sono potenti - quindi il carico è trascurabile.

I codici di prova possono essere eseguiti frequentemente. /* Ora un minuto qui, poi un minuto là, poi un'ora altrove, ecc.

In questo post mi riferivo alle parole di Renat. Ha, credo, dei computer più potenti dei vostri.

Tu, Vladimir, hai pubblicato questi codici di prova per mostrare il lavoro (risultati di ricerca), per il download. Ridisegnare il grafico su ogni tick in essi non è appropriato

 
P./S.: Nei parametri di input hai l'opzione di disabilitare/abilitare solo il ridisegno del grafico tramiteChartRedraw(). Tuttavia, all'interno dei codici di prova avete un ridisegno del grafico su ogni tick tramite il commento
 
Dina Paches:

I codici di prova possono essere eseguiti frequentemente. /* Ora un minuto qui, poi un minuto là, poi un'ora altrove, ecc.

In questo post mi riferivo a ciò che ha detto Renat. Suppongo che abbia computer più potenti dei vostri.

Tu, Vladimir, hai pubblicato questi codici di prova per mostrare il lavoro (risultati di ricerca), per il download. Ridisegnare i grafici su ogni segno di spunta in essi non è appropriato.

Hai ragione su quello che dici sul ridisegnare. Semplicemente non è appropriato ora ))

 
Ihor Herasko:

Hai ragione sul ridisegno. Semplicemente non è la cosa giusta da fare in questo momento).

Ehm... Non è il posto per ridisegnare ad ogni spunta. Non è il luogo per cercare di convincervi che non vale la pena di prestare attenzione.

E non ha parlato di questo.

Ma ora, a scapito degli sforzi tuoi e di Vladimir per convincere che è fuori luogo e non merita attenzione, l'enfasi si è davvero spostata dall'argomento)

 

Costruire il 1865.

Fatto un cambiamento all'indicatore:

   if(count%12==0/* || count==19*/)

Cioè, ogni 12 tick spostiamo forzatamente il grafico. A cosa serve:

  1. Puoi spostare manualmente il grafico tra 12 tick e vedere il numero della prima barra visibile
  2. Tracciamento visivo del movimento.


Finora abbiamo una teoria: lo spostamento del grafico dipende dalla GRANDEZZA GRAFICA!

File:
 

Indicatore versione 1.002:

rimosso tutti i commenti (ora uscita tramite Stampa)

Predefinito:

//--- input parameters
input bool redraw=false;
input ENUM_CHART_POSITION position=CHART_END;

Chiara dipendenza dalla scala del grafico. E c'è un po' di memoria se si sposta manualmente il grafico una volta.

File:
 
Ihor Herasko:

Mi sono imbattuto in un problema con la funzione ChartNavigate. Faccio qualcosa di sbagliato o c'è davvero un problema con la funzione. Scrivete se l'avete usato abbastanza spesso.

Quindi, l'essenza del problema: ChartNavigate non sposta il grafico Quando si avvia il terminale Se chiamo questa funzione in OnInit(). Ho volutamente letto la documentazione diverse volte. Non c'è scritto da nessuna parte che la funzione non può essere chiamata durante l'inizializzazione.

Codice indicatore per la riproduzione:

Passi per giocare:

  1. Disattiva l'autoplay del grafico.
  2. Attacca l'indicatore al grafico. ChartNavigate si attiva spostando il grafico nella posizione desiderata.
  3. Scaricare il terminale.
  4. Caricare il terminale. ChartNavigate non funzionerà visualizzando il grafico senza un offset.
OK, se la funzione desse un errore. Ma non è così. Tutte le chiamate hanno successo, ma è quando il terminale viene ricaricato che l'offset del grafico non si verifica.

Per favore, ditemi, prima di scaricare il terminale, resettate il grafico ai prezzi più recenti?

Perché lo chiedo:

Sto usando il vostro codice per vedere come funzionerebbe per me in queste condizioni. All'inizio ho pensato che il problema descritto da voi è riprodotto nel mio codice. Più tardi ho capito che non è così. Se il grafico viene ripristinato agli ultimi prezzi prima di essere scaricato, funziona secondo il codice quando il terminale viene caricato. Se non ritorno agli ultimi prezzi prima di scaricare, il grafico rimane dove era prima di scaricare.

 
Vladimir Karputov:

Costruire il 1865.

Fatto un cambiamento all'indicatore:

Cioè, ogni 12 tick spostiamo forzatamente il grafico. A cosa serve:

  1. Puoi spostare manualmente il grafico tra 12 tick e vedere il numero della prima barra visibile
  2. Tracciamento visivo del movimento.


Finora abbiamo una teoria: lo spostamento del grafico dipende dalla GRANDEZZA GRAFICA!

Vladimir Karputov:

Indicatore versione 1.002:

...

C'è una chiara dipendenza dallascala del grafico. E c'è un po' di memoria se si sposta manualmente il grafico una volta.


L'autore di questo argomento lo ha creato sulla base della seguente domanda - ChartNavigate durante l'inizializzazione:

Forum sul trading, sistemi di trading automatico e test di strategie di trading

ChartNavigate all'inizializzazione

Ihor Herasko, 2018.06.25 12:17

...

Quindi, il nocciolo del problema: ChartNavigate non sposta il grafico All'inizio del terminale Se chiamate la funzione in OnInit().


Tu, Vladimir, fai la tua ricerca non in OnInit() ma in OnCalculate(). Non sulla questione descritta dall'autore del thread.

Cioè, state considerando qualcos'altro in questo thread.

Se hai rilevato un problema reale, forse dovresti contattare il Service Desk con la sua descrizione?


P./S.: Secondo l'ultimo codice di prova dell'indicatore qui allegato, non si ha più un re-rendering forzato del grafico su ogni tick. Ma invece ora stampa nel log ad ogni tick. A causa del fatto che non c'è un controllo se il numero della prima barra del grafico è cambiato.

Inoltre, il vostro codice contiene la cancellazione attiva dei commenti. Cioè, se mettete il vostro codice sul grafico, dove qualche altro programma creerà alcuni commenti necessari, il vostro codice di test li rimuoverà

P./S.: Rimosso un duplicato di citazione all'inizio del post, messo citazioni da un altro, interconnesso invece.

 
Dina Paches:


L'autore dell'argomento lo ha creato sulla seguente domanda - ChartNavigate durante l'inizializzazione:


Tu, Vladimir, stai facendo la tua ricerca non in OnInit() ma in OnCalculate(). Non sulla questione descritta dall'autore del thread.

Cioè, state considerando qualcos'altro in questo thread.

Se hai rilevato un problema reale, forse dovresti contattare il Service Desk con la sua descrizione?


P./S.: Secondo l'ultimo codice di prova dell'indicatore qui allegato, non si ha più un re-rendering forzato del grafico su ogni tick. Ma invece ora stampa nel log ad ogni tick. A causa del fatto che non c'è un controllo se il numero della prima barra del grafico è cambiato.

Inoltre, il vostro codice contiene la cancellazione attiva dei commenti. Cioè, se mettete il vostro codice sul grafico, dove qualche altro programma creerà alcuni commenti necessari, il vostro codice di test li rimuoverà

Dina, funziona per te? Sto lottando da 2-3 ore (solo oggi, senza contare i test di ieri) cercando di ottenere una versione non funzionante di OnInit, ma senza successo. Tutto funziona sempre come dovrebbe. Se metto l'indicatore su due grafici e riavvio il terminale, funziona solo sul grafico che era attivo al momento della chiusura e apertura del terminale. Sul secondo, il grafico non attivo non funziona. Ma questo, secondo me, è comprensibile, non c'è il rendering del grafico e non c'è il grafico stesso, nonostante il fatto che i dati siano ricevuti.