Artyom Trishkin: Questo non va bene. Probabilmente hai ricevuto degli avvertimenti in fase di compilazione? È necessario sbarazzarsi delle cause degli avvertimenti in questi casi, non della #proprietà rigorosa
Quando è stato scritto #property strict, il compilatore ha dato errori in ogni ciclo for() che le variabili devono avere un tipo, quindi ho dovuto scrivere int i e int p in ogni ciclo. Dopo di che il compilatore non ha generato errori, ma la linea non ha costruito. Quando ho rimosso #property strict, il compilatore non ha più richiesto di dichiarare il tipo in ogni ciclo, e la linea è stata costruita.
Timur1988: Quando #property strict era scritto, il compilatore generava errori in ogni ciclo for() che le variabili devono avere un tipo, così ho dovuto scrivere int i e int p in ogni ciclo. Dopo di che il compilatore non ha generato errori, ma la linea non ha costruito. Quando ho rimosso #property strict, il compilatore non ha richiesto di dichiarare il tipo in ogni ciclo, e la linea è stata costruita.
Un tipico caso di sfruttamento di errori impliciti nella logica. Una volta che il compilatore è diventato più "severo", l'auto-inganno sta lentamente scomparendo.
Mi chiedevo perché ci fossero così tanti anelli identici?
E perché non si preoccupa in alcun modo dell'errore "out of array" quando esegue l'indicatore sul grafico?
Ho ricaricato il mio saldo e ora non riesco a trovare il terminale con il conto reale.
Il terminale è lo stesso, devi solo rifare il login con un account reale. Come fare: File - Connect to trading account - specificare il numero di conto, la password e il server nella finestra che appare. Tutti questi dati sono stati dati dal DC, in caso di qualsiasi cosa chiedere loro.
Timur1988: Quando #property strict era scritto, il compilatore dava errori in ogni ciclo for() che le variabili devono avere un tipo, e così ho dovuto scrivere int i e int p in ogni ciclo. Dopo di che il compilatore non ha generato errori, ma la linea non ha costruito. Quando ho rimosso #property strict, il compilatore non ha più richiesto di dichiarare il tipo in ogni ciclo, e la linea è stata costruita.
la risposta è molto semplice - avete un banale overrun dell'array - e il vostro indicatore smette di funzionare a causa di questo errore
Un tipico caso di sfruttamento di errori impliciti nella logica. Una volta che il compilatore è diventato più "severo", l'auto-inganno sta lentamente scomparendo.
Continuavo a chiedermi: perché ci sono così tanti anelli identici?
E perché non si preoccupa in alcun modo dell'errore "out of array" quando esegue l'indicatore sul grafico?
Come calcolare la somma dei prezzi di chiusura in ogni dimensione? Per quanto riguarda gli stessi cicli, io, a causa della mia limitata conoscenza della programmazione e degli algoritmi, non ho pensato a niente di meglio per selezionare l'elemento dell'array dalla dimensione richiesta, che era necessario per la sostituzione nella formula.
Timur1988: Allora come si calcola la somma dei prezzi di chiusura di ogni dimensione? Per quanto riguarda gli stessi cicli, a causa della mia limitata conoscenza della programmazione e degli algoritmi, non ho potuto pensare a niente di meglio per selezionare quell'elemento dell'array dalla dimensione desiderata che era necessario per sostituire nella formula.
Questo non va bene. Probabilmente hai ricevuto degli avvertimenti in fase di compilazione? È necessario sbarazzarsi delle cause degli avvertimenti in questi casi, non della #proprietà rigorosa
Ho ricaricato il mio saldo e ora non riesco a trovare il terminale con il conto reale.
Quando #property strict era scritto, il compilatore generava errori in ogni ciclo for() che le variabili devono avere un tipo, così ho dovuto scrivere int i e int p in ogni ciclo. Dopo di che il compilatore non ha generato errori, ma la linea non ha costruito. Quando ho rimosso #property strict, il compilatore non ha richiesto di dichiarare il tipo in ogni ciclo, e la linea è stata costruita.
Un tipico caso di sfruttamento di errori impliciti nella logica. Una volta che il compilatore è diventato più "severo", l'auto-inganno sta lentamente scomparendo.
Mi chiedevo perché ci fossero così tanti anelli identici?
E perché non si preoccupa in alcun modo dell'errore "out of array" quando esegue l'indicatore sul grafico?
Per esempio, qui:
{
for(int p=0; p<m; p++)
{
sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p];
}
}
Ho ricaricato il mio saldo e ora non riesco a trovare il terminale con il conto reale.
Quando #property strict era scritto, il compilatore dava errori in ogni ciclo for() che le variabili devono avere un tipo, e così ho dovuto scrivere int i e int p in ogni ciclo. Dopo di che il compilatore non ha generato errori, ma la linea non ha costruito. Quando ho rimosso #property strict, il compilatore non ha più richiesto di dichiarare il tipo in ogni ciclo, e la linea è stata costruita.
la risposta è molto semplice - avete un banale overrun dell'array - e il vostro indicatore smette di funzionare a causa di questo errore
{
for(int p=0; p<m; p++)
{
sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p];
}
}
for(int i=1; i<n; i++)
{
for(int p=0; p<m; p++)
{
Mx[i][p]=sum_x[p+1][m-1]/(n-1);
My[i][p]=sum_y[p+1][m-1]/(n-1);
puoi vedere questo errore in fase di esecuzione - avvia l'indicatore e guarda il file di log sul Terminale - scheda Esperti:
Questo è un tipico caso di sfruttamento di errori logici impliciti. ...
Un tipico caso di sfruttamento di errori impliciti nella logica. Una volta che il compilatore è diventato più "severo", l'auto-inganno sta lentamente scomparendo.
Continuavo a chiedermi: perché ci sono così tanti anelli identici?
E perché non si preoccupa in alcun modo dell'errore "out of array" quando esegue l'indicatore sul grafico?
Per esempio, qui:
{
for(int p=0; p<m; p++)
{
sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p];
}
}
Per quanto riguarda gli stessi cicli, io, a causa della mia limitata conoscenza della programmazione e degli algoritmi, non ho pensato a niente di meglio per selezionare l'elemento dell'array dalla dimensione richiesta, che era necessario per la sostituzione nella formula.
la risposta è molto semplice - avete un banale overrun dell'array - e il vostro indicatore smette di funzionare a causa di questo errore
{
for(int p=0; p<m; p++)
{
sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p];
}
}
for(int i=1; i<n; i++)
{
for(int p=0; p<m; p++)
{
Mx[i][p]=sum_x[p+1][m-1]/(n-1);
My[i][p]=sum_y[p+1][m-1]/(n-1);
puoi vedere questo errore in fase di esecuzione - avvia l'indicatore e guarda il file di log nella scheda Terminale - Esperti:
Allora come si calcola la somma dei prezzi di chiusura di ogni dimensione?
Per quanto riguarda gli stessi cicli, a causa della mia limitata conoscenza della programmazione e degli algoritmi, non ho potuto pensare a niente di meglio per selezionare quell'elemento dell'array dalla dimensione desiderata che era necessario per sostituire nella formula.
Per esempio, così:
for(int i=1; i<n; i++)
{for(int p=1; p<m; p++)
{
sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p];
}
}
Potete dirmi per favore come risolvere questo errore?
Per correggere questo errore, dovete capire la vostra formula - cosa, perché e come state contando.
E solo allora sarete in grado di elaborare il vostro algoritmo ed eliminare l'errore al di fuori dell 'array.
Con il metodo "gut feeling" e non capendo la vostra formula - eliminerete l'errore, ma farete un calcolo sbagliato.
p.s. Spiega in dettaglio cosa stai calcolando - commenta il tuo codice in dettaglio - e poi capiremo come risolvere l'errore.