Errori, bug, domande - pagina 1088

 
MoneyJinn:

Dopo aver ricompilato l'indicatore, l'errore "array out of range" ha iniziato a verificarsi quando si lavora con gli array dinamici.

Non è successo prima. Cosa fare?

Se avete righe simili all'inizio del file

#include <File.mqh> , questi file include sono stati molto probabilmente cambiati dalla tua precedente compilazione, da te o da qualcun altro

 
Olegts:

Se avete righe simili all'inizio del vostro file

#include <File.mqh>, è probabile che questi file include siano stati cambiati dalla tua ultima compilazione, da te o da qualcun altro.

Non ci sono file di inclusione.

 
MoneyJinn:

Non ci sono file di plug-in.

allora dovresti postare l'indicatore, forse qualcuno ci darà un'occhiata a suo piacimento)
 

Perché dovrebbe verificarsi un errore"array out of range" quando si cerca di mettere qualcosa in un array dinamico? È una matrice dinamica.

Array B1[] impostato come buffer dell'indicatore corrispondente

SetIndexBuffer(0,B1,INDICATOR_DATA); ArraySetAsSeries(B1,true);

La dimensione dell'array non è chiaramente controllata dall'utente in questo caso.

 
MoneyJinn:
Perché dovrebbe verificarsi un errore"array out of range" quando si cerca di mettere qualcosa in un array dinamico? È una matrice dinamica.
Questo non significa che aumenta la sua dimensione da solo, la funzione ArrayResize fa questo e poi si possono aggiungere dati, ma non più della nuova dimensione dell'array
 
MoneyJinn:
Perché dovrebbe verificarsi un errore"array out of range" quando si cerca di mettere qualcosa in un array dinamico? È dinamico.
(fcplm)
 
TheXpert:
(fcplm)

Chi lo metterà in prigione? È un monumento!

 

Errore di piattaforma.

Se quando si riempie la matrice B1 del buffer dell'indicatore la procedura SetIndexBuffer(0,B1,INDICATOR_DATA) viene chiamata ripetutamente,

Ad esempio, quando si inizializza l'indicatore, il successivo tentativo di scrivere qualcosa nell'array B1 causa l'errore"array out of range".

Quando si chiama la procedura SetIndexBuffer(0,B1,INDICATOR_DATA) una volta, tutto funziona bene.

Prima non esisteva una cosa del genere.

Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.
 
MoneyJinn:

Errore di piattaforma.

Se quando si riempie la matrice B1 del buffer dell'indicatore la procedura SetIndexBuffer(0,B1,INDICATOR_DATA) viene chiamata ripetutamente,

Per esempio, quando si inizializza l'indicatore, il successivo tentativo di scrivere qualcosa nell'array B1 causa l'errore"array out of range".

Quando si verifica una singola chiamata della procedura SetIndexBuffer(0,B1,INDICATOR_DATA), tutto funziona bene.

Non è successo prima.

Ma perché lo fa ripetutamente?

Vincolare un buffer significa svuotarlo e prepararlo per il collegamento dinamico per i calcoli successivi. Se lo chiamate una seconda volta, il buffer precedente sarà cancellato e sarà riempito solo alla prossima chiamata del ricalcolo dell'indicatore.

 
Renat:

Perché lo fa ripetutamente?

Legare il buffer significa la sua pulizia e la preparazione per il legame dinamico per i calcoli successivi. Se lo chiamate una seconda volta, il buffer precedente sarà cancellato e sarà riempito solo alla prossima chiamata del ricalcolo dell'indicatore.

Questa era l'inizializzazione standard completa dell'indicatore, che ha luogo quando l'indicatore viene avviato per la prima volta e viene fatta tramite Oninit().

A volte, quando si aggiorna la cronologia, ecc.

Nessuno ha mai pensato che l'inizializzazione ripetuta dell'indicatore tramite Oninit() avrebbe causato l'arresto degli array.

Motivazione: