Errori, bug, domande - pagina 930

 
kPVT
Grazie per il suggerimento.
Per favore, condividete le vostre esperienze. In particolare:
1. Meccanismo per generare nomi unici. Enumerazione diretta di nomi esistenti con auto-incremento?
2. Meccanismo di controllo dell'autenticità degli oggetti. Cioè non solo controllare se c'è un oggetto con questo nome, ma tutti i suoi parametri, per esempio dimensioni, tipi, testo, ecc. Con il risparmio delle risorse in mente. È piuttosto laborioso eseguire un numero colossale di controlli per ogni proprietà di ogni oggetto ad ogni tick. Naturalmente, se ci fosse il blocco dell'oggetto da qualsiasi modifica dall'esterno (eccetto il creatore di EA), o il calcolo dell'hash dell'oggetto a FAST (in un "se") controllare l'oggetto per l'autenticità.
 

Si prega di confermare la riproduzione della situazione con la mancanza di ridisegno del grafico.

In allegato c'è un semplice esperto. Condizioni:

1. Dal 2013.01.07 al 2013.02.11. Molto probabilmente non è interessato.

2. test in modalità visiva.

3. Durante la prima corsa, rallentare la velocità al minimo:

4. Alla prossima esecuzione dopo l'inizializzazione, premete F12 (generate one tick).

Un'altra condizione molto importante è che il terminale deve funzionare in modalità offline. Per un esperimento pulito provate a scollegare il computer dalla rete (scollegate tutte le schede di rete).

Osservare.

1. Visualizzazione tardiva dei valori di spread sul grafico.

La funzione ChartRedraw funziona male o ho fatto qualcosa di sbagliato? Se si sposta il grafico con il mouse (spostarlo orizzontalmente (tempo), viene ridisegnato correttamente.

File:
1.mq5  4 kb
 
voix_kas:
kPVT
Grazie per il suggerimento.
Per favore, condividi la tua esperienza. In particolare:
1. Meccanismo di generazione di nomi unici. Enumerazione diretta di nomi esistenti con auto-incremento?
2. Meccanismo di controllo dell'autenticità degli oggetti. Cioè non solo controllare se c'è un oggetto con questo nome, ma tutti i suoi parametri, per esempio dimensioni, tipi, testo, ecc. Con il risparmio delle risorse in mente. È piuttosto laborioso eseguire un numero colossale di controlli per ogni proprietà di ogni oggetto ad ogni tick. Naturalmente, se ci fosse il blocco dell'oggetto da qualsiasi modifica dall'esterno (eccetto il consulente-creatore), o il calcolo dell'hash dell'oggetto per controllare l'autenticità dell'oggetto FAST (in un "se").

Senza pretendere di essere vero o ottimale.

1.potete usare la libreria standard che usa un numero casuale + nome per il nome dell'oggetto, ad esempio 18467RadioGroupItem0Button, 06334ClientBack. E non è necessario cancellare gli oggetti da soli.

Non ho ancora fatto amicizia con la biblio standard e lo sto facendo in questo modo, senza problemi.

int nOBJ=0;//счетчик однотипных объектов
int OnInit()
  {
   //уникальное имя на основе текущего времени в момент инициализации (в 36 системе для краткости, пример: MI7E9G)
   basedName=ULongTo36Base(TimeLocal());
   leftName="LeftBorder "+basedName;//имя для единичного объекта
   ObjectCreate(0,leftName,OBJ_VLINE,0,time,0);
   for(nOBJ=1;nOBJ<=100;nOBJ++)//создание 100 однотипных объектов
    ObjectCreate(0,(string)nOBJ+basedName,OBJ_TREND,0,time,price);
   return(0);
  }
void OnDeinit(const int reason)
  {
   for(int del=1; del<=nOBJ; del++)
      ObjectDelete(0,(string)del+basedName);
   ObjectDelete(0,leftName);
   return;
  }

Qui la discrezione sarà di 1 secondo. Se aggiungete diversi indicatori identici dal template, si verificheranno delle collisioni. In questo caso, potete aggiungere i parametri dell'indicatore a basedName, o forse i millisecondi a TimeLocal(), un numero casuale o qualcos'altro. In generale, ci sono delle varianti.

2. autenticità dell'oggetto - il suo nome unico. Due oggetti, anche di tipo diverso con lo stesso nome, non possono stare in una finestra del grafico. Perché dovreste controllare tutte le proprietà dell'oggetto? Spiegare.

Vuoi controllare la modifica manuale delle proprietà dell'oggetto? C'è l'eventoCHARTEVENT_OBJECT_CHANGE.

Per controllare la cancellazione accidentale, quando si accede a un oggetto, è necessario controllare la sua esistenza e ripristinarlo se necessario (a proposito, c'è un evento di cancellazione dell'oggetto - io non lo uso).


Se volete ancora usare Comment per emettere informazioni formattate, potete, per esempio, specificare la lunghezza richiesta della stringa e, conoscendo questa lunghezza, inserire la descrizione e il valore del parametro (definendo le loro lunghezze) nei posti giusti.

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 
voix_kas:
kPVT
Grazie per il suggerimento.
Per favore, condividete le vostre esperienze. In particolare:
1. Meccanismo per generare nomi unici. Enumerazione diretta di nomi esistenti con auto-incremento?
2. Meccanismo di controllo dell'autenticità degli oggetti. Cioè non solo controllare se c'è un oggetto con questo nome, ma tutti i suoi parametri, per esempio dimensioni, tipi, testo, ecc. Con il risparmio delle risorse in mente. È piuttosto laborioso eseguire un numero colossale di controlli per ogni proprietà di ogni oggetto ad ogni tick. Naturalmente, se ci fosse il blocco dell'oggetto da qualsiasi modifica dall'esterno (tranne il creatore EA), o il calcolo dell'hash dell'oggetto a FAST (in un "se") controllare l'oggetto per l'autenticità.
Forse questo potrebbe aiutare: guardare il mercato attraverso classi già pronte
 

kPVT

Grazie per il suggerimento. Cercherò di usare CHARTEVENT_OBJECT_CHANGE per controllarlo.

Dima_S

Grazie. Ma non vedo la necessità di usare classi standard.

Molto gentilmente, prova la funzione ChartRedraw usando un semplice Expert Advisor già pronto nel mio post precedente. Sfortunatamente, per qualche motivo dà un tick di ritardo. Cioè nell'esempio mostra che il valore di spread è mostrato per il tick precedente, mentre l'elaborazione e l'uscita è al tick corrente.

 
voix_kas:

kPVT

Grazie per il suggerimento. Cercherò di usare CHARTEVENT_OBJECT_CHANGE per controllarlo.

Dima_S

Grazie. Ma non vedo la necessità di usare classi standard.

Molto gentilmente, prova la funzione ChartRedraw usando un semplice Expert Advisor già pronto nel mio post precedente. Sfortunatamente, per qualche motivo dà un tick di ritardo. Cioè nell'esempio mostra che il valore di spread è mostrato per il tick precedente, mentre l'elaborazione e l'uscita è al tick corrente.

Non c'è di che. Se avessi letto l'articolo, avresti trovato le risposte alle due domande))
 

I programmi di grandi dimensioni non possono essere scaricati e installati dal Market. Per favore, fate attenzione. La ragione è sconosciuta.

Ci possono essere alcune restrizioni. Non ci sono informazioni ufficiali su di loro.

 

Puoi darmi un suggerimento?

1. un indicatore chiamato da risorse non può ricevere parametri di input?
2. Se no, c'è una possibilità e come aggirarla (con le stampelle)?
 

È possibile. È lo stesso di iCustom().

handle=iCustom(_Symbol,_Period,"::Indicators\\Examples\\ZigZag.EX5",12,5,3);
 
Karlson:

È possibile. È lo stesso di iCustom().

Esattamente, può. Ho fatto un errore nel codice.

Grazie.