Errori, bug, domande - pagina 2996

 
Artyom Trishkin:

È stato molto tempo fa. Il problema è stato risolto da tempo. È necessario accedere ai dati non nativi di timeframe/simbolo almeno una volta ogni due minuti. Nel ciclo principale, se non ci sono ancora dati dal timeframe richiesto, è necessario uscire dal ciclo - basta restituire zero per aspettare il prossimo tick, e l'indicatore sapeva che i dati storici non sono ancora stati calcolati.

Quindi sono calcolati, solo che i valori sono inviati in modo errato. Funziona correttamente solo su minuti.

 
Francuz:

È così che vengono calcolati, è solo che i valori vengono rimandati indietro in modo errato. Funziona correttamente solo su minuti.

Le direzioni di indicizzazione degli array sono le stesse?

 
Artyom Trishkin:

Ledirezioni di indicizzazione degli array sono le stesse?

Copiare un valore. Pensi che invertire la matrice cambierà qualcosa? Ma per sicurezza, ho controllato e mi sono assicurato che l'inversione della numerazione dell'array non cambi l'unico valore. :)

 
Francuz:

Copiare un valore. Pensi che invertire la matrice cambierà qualcosa? Ma per sicurezza, ho controllato e mi sono assicurato che l'inversione della numerazione dell'array non cambi l'unico valore. :)

Beh, non so cosa, come e dove copiate.

 
Artyom Trishkin:

Non so cosa, come o dove stai copiando.

0_о

Il codice indicatore dato ha mostrato tutto:

::CopyBuffer(handle, 0, a, 1, Buffer);
 
Francuz:

Non hai capito il punto. Il codice dovrebbe funzionare solo una volta. Il suo scopo è mostrare chiaramente che l'indicatore chiamato non funziona. Il problema è che l'indicatore chiamato non funziona se esso (e il chiamante) ha un TimeFrame diverso da quello dei minuti. Ho scoperto che è un bugdi MetaTrader che può essere risolto solo con le stampelle. E questo problema è abbastanza vecchio. Potete leggere i dettagli in "Non riesco a ottenere i dati dell'indicatore dal TF 123 superiore".

Cosa intende per evidenziato? Il periodo attuale è impostato nel codice.

   handle = iCustom(_Symbol, PERIOD_CURRENT, "Examples\\ATR.ex5", 14);

Mostra almeno qualcosa, con quali parametri hai corso, cosa hai ottenuto e cosa ti aspetti di ottenere. E sarebbe bello vedere cosa stampa questa linea

   ::Print(__FUNCTION__ + "| PERIOD_CURRENT = ", EnumToString(_Period));
 
Alexey Viktorov:

Evidenziato, di cosa si tratta? Il codice specifica il periodo corrente.

Dovresti almeno mostrarmi qualcosa, con quali parametri hai corso, cosa hai ottenuto e cosa ti aspettavi di ottenere. E sarebbe bello vedere cosa stampa questa linea

1. Per esempio, potete eseguire questo codice con un TimeFrame diverso da un minuto.

2. Esegui ATR sullo stesso simbolo e sullo stesso timeframe.

3. Confronta i valori diATR via codice e direttamente dall'indicatore.

4. Controllare che i valori non coincidano.

Esempio

BS è il valore ATR ricevuto.

 
Francuz:

1. Esegui il codice di cui sopra su un TimeFrame diverso da un minuto.

2. Esegui ATR sullo stesso simbolo e sullo stesso timeframe.

3. Confronta i valori diATR via codice e direttamente dall'indicatore.

4. Verificare che i valori non corrispondano.

Hai provato a incollare il codice che ho evidenziato in giallo e ad eseguire l'indicatore?

 
Francuz:

1. Esegui il codice di cui sopra su un TimeFrame diverso da un minuto.

2. Esegui ATR sullo stesso simbolo e sullo stesso timeframe.

3. Confronta i valori diATR via codice e direttamente dall'indicatore.

4. Controllare che i valori non coincidano.

BS è il valore ATR ricevuto.

Forse gli sci non vanno bene?


e anche RTS-6.21


 
Nikolai Semko:
Hai provato a incollare il codice che ho evidenziato in giallo e ad eseguire l'indicatore?

Sì, l'ho fatto. Il risultato non è cambiato.