Script: sChartsSynchroScroll

 

sChartsSynchroScroll:

Lo script fornisce lo scorrimento sincrono di tutti i grafici aperti nel terminale.

sChartsSynchroScroll

Author: Dmitry Fedoseev

[Eliminato]  

Ho capito bene che questo script funziona contemporaneamente con grafici di diversi timeframe (come viene fatto qui)?

Lo stile del codice ricorda MQL4. E questo non è un male. Grazie!

[Eliminato]  

Esiste un problema di mancata sincronizzazione dei grafici a sinistra e a destra della linea temporale totale. Vorrei che le barre fossero sincronizzate per tempo per tutta la larghezza del grafico.

Suggerisco agli sviluppatori di ripensare (magari di metterlo in discussione) alla possibilità di visualizzare il grafico con e senza barre "buche". In questo caso, si tratterebbe solo di visualizzazione, cioè le barre "buche" non sarebbero disponibili in MQL5.

 

Dmitry, probabilmente sarebbe più facile farlo tramite CHARTEVENT_CLICK invece che in loop...

ecco un esempio di sincronizzazione dei grafici di una valuta

//------------------------------------------------------------------ OnChartEvent
void OnChartEvent(const int id, const long& lparam, const double& dparam, const string& sparam)
{
 if (id==CHARTEVENT_CLICK)
 {
   long cid=ChartFirst();
   long fbar=ChartGetInteger(ChartID(), CHART_FIRST_VISIBLE_BAR);
   datetime tm[], tm1[];
   int rez=CopyTime(Symbol(), Period(), 0, fbar, tm); if (rez<fbar) return;
   while (cid!=-1)
   {
    ChartSetInteger(cid, CHART_AUTOSCROLL, false); ChartSetInteger(cid, CHART_SHIFT, false);
    if (cid!=ChartID() && ChartSymbol(cid)==Symbol()) 
    {
     rez=CopyTime(ChartSymbol(cid), ChartPeriod(cid), TimeCurrent(), tm[0], tm1); if (rez<0) break;
     ChartNavigate(cid, CHART_END, rez-ChartGetInteger(cid, CHART_WIDTH_IN_BARS)+2);
     ChartRedraw(cid);
    }
    cid=ChartNext(cid);
   }
 }
}

e questo è tutto!

 
getch:

Ho capito bene che questo script funziona contemporaneamente con grafici di diversi timeframe (come viene fatto qui)?

Lo stile del codice ricorda MQL4. E questo non è un male. Grazie!


Funziona con diversi timeframe.
 
sergeev:

Dimitri, probabilmente sarebbe più facile farlo tramite CHARTEVENT_CLICK invece che in loop...

Ecco un esempio di sincronizzazione dei grafici di una valuta

e questo è tutto!

Non tutto è così semplice. La funzione sincronizza le barre sul bordo sinistro del grafico, il che non è molto comodo per lo studio visivo della storia. Dovreste anche disabilitare l'offset del grafico, anch'esso non molto comodo (anche se è una questione di gusti). Gli sviluppatori dovrebbero aggiungere la possibilità di ottenere e impostare l'indentazione dal bordo destro o la navigazione in base al tempo in generale, molte funzioni sono realizzate in uno stile così universale che è possibile passare il numero di barra o il tempo. Inoltre, l'evento viene elaborato solo per il grafico su cui lavora lo script.

----------------------------------------------------------------------------------------------------------------

OnChartEvent

OnChartEvent() è un gestore del gruppo di eventi ChartEvent:

...

...

La funzione può essere chiamata solo negli EA e deve essere di tipo void e avere 4 parametri:

----------------------------------------------------------------------------------------------------------------

La gestione degli eventi funziona solo negli Expert Advisor. Su un grafico può esserci un solo Expert Advisor, non si può sostituire un Expert Advisor con strumenti ausiliari praticamente inutili. Sono convinto che gli strumenti ausiliari non direttamente collegati all'esecuzione del trading non debbano essere realizzati sotto forma di Expert Advisor, salvo alcune eccezioni di estrema necessità.

 
Integer:

Sull'evento grafico

OnChartEvent() è un gestore per il gruppo di eventi ChartEvent:

...

...

Lafunzione può essere richiamata solo negli Expert Advisor e deve essere di tipo void e avere 4 parametri:

----------------------------------------------------------------------------------------------------------------

L'elaborazione degli eventi funziona solo negli Expert Advisor. Su un grafico può esserci un solo Expert Advisor, non si deve sostituire un Expert Advisor con strumenti ausiliari e praticamente inutili. Sono convinto che gli strumenti ausiliari non direttamente collegati all'esecuzione del trading non debbano essere realizzati sotto forma di Expert Advisor, salvo poche eccezioni di estrema necessità.

Non è più così, tenete d'occhio gli annunci - https://www.mql5.com/ru/forum/23/page4:

Terminale client MetaTrader 5 build 245

  1. Terminale: Corretto l'errore di contabilizzazione dei fondi di margine libero negli asset (nella scheda Esposizione).
  2. Terminale: Corretto il funzionamento della proprietà del grafico "Grafico in primo piano".
  3. Terminale: Corretta e ridisegnata la finestra di anteprima di stampa per il grafico.
  4. Terminale: Corretto un bug nel lavoro con le variabili globali temporanee.
  5. Terminale: Combinate le barre degli strumenti "Standard" e "Grafici".
  6. MQL5: Correzioni sugli arresti anomali e sui messaggi del forum.
  7. MQL5: Modificato il principio di funzionamento delle funzioni Copy* per Expert Advisor e script: ora le funzioni attendono di scaricare e costruire i dati richiesti. Il tempo di attesa per i dati richiesti non supererà i 30 secondi. Una descrizione più dettagliata sarà disponibile nella Guida di MQL5 nel prossimo futuro.
  8. MQL5: Aggiunta la possibilità di elaborare eventi da parte di indicatori personalizzati, in modo simile agli Expert Advisor. Una descrizione più dettagliata sarà disponibile nella Guida di MQL5 nel prossimo futuro.

.

 
Integer писал(а) :

Non è così semplice. La vostra funzione sincronizza le barre sul bordo sinistro del grafico, il che non è molto comodo per lo studio visivo della storia.

Ma è possibile sincronizzare le barre su qualsiasi bordo e fornire al trader dei pulsanti per scegliere: al centro, a destra, a sinistra....

Anche lo spostamento del grafico dovrebbe essere disabilitato, il che non è molto comodo (anche se è una questione di gusti).

Gli sviluppatori dovrebbero aggiungere la possibilità di ottenere e impostare l'indentazione dal bordo destro o la navigazione per tempo in generale, molte funzioni sono realizzate in uno stile universale tale da poter passare il numero di barra o il tempo.

questa funzione è comunque disponibile. DIMENSIONE_DEL_GRAFO

vedere l'esempio ObjChartSample.mq5

 

Sembra che ci sia qualcosa di sbagliato con CHART_FIRST_VISIBLE_BAR.

Se si imposta ChartNavigate() su un numero ovviamente più grande di quello su cui è possibile visualizzare il grafico, allora

ChartGetInteger(ChartID(),CHART_FIRST_VISIBLE_BAR) diventa maggiore di Bars(ChartSymbol(ChartID()),ChartPeriod(ChartID()).

Esempio nello script 2.mq5. Eseguire lo script, attendere un po'.

File:
2.mq5  2 kb
 

qualcosa mi dice che il terminale non è al passo con i tempi.

perché se si esegue subito di nuovo lo script, funziona al primo colpo.

Forse dobbiamo controllare il tempo

Forse SeriesInfoInteger può aiutare?

[Eliminato]  
Integer, sergeev, in base ai vostri post, ho l'impressione estremamente sgradevole che MQL5 e MT5 siano piuttosto grezzi.