A1exPit: Intendevo dire che quando i dati vengono passati in un array, questo si riempie in modo sequenziale, cioè array1[] = x; in quale cella verrà scritto il valore x se il numero della cella non è specificato direttamente?
Se volete scrivere valori diversi, usate il ciclo in modo sequenziale. Se avete bisogno di scrivere in una cella specifica, specificate il suo indirizzo.
Se volete scrivere valori diversi, usate il ciclo in modo sequenziale. Se avete bisogno di scrivere in una cella specifica, specificate il suo indirizzo.
Grazie,
Ecco un'altra domanda: attraverso ArrayCopy, potrò creare un nuovo array con dimensioni pari al numero di celle riempite nel precedente? O devo creare prima un secondo array e solo dopo copiare?
intArrayCopy( void& dst_array[], // куда копируем constvoid& src_array[], // откуда копируем int dst_start=0, // с какого индекса пишем в приемник int src_start=0, // с какого индекса копируем из источника int count=WHOLE_ARRAY// сколько элементов );
Ecco un'altra domanda: con ArrayCopy, posso creare un nuovo array con la stessa dimensione del numero di celle riempite nel precedente? O devo prima creare un secondo array e poi copiare?
intArrayCopy( void& dst_array[], // куда копируем constvoid& src_array[], // откуда копируем int dst_start=0, // с какого индекса пишем в приемник int src_start=0, // с какого индекса копируем из источника int count=WHOLE_ARRAY// сколько элементов );
Spread = MarketInfo(Symbol(),MODE_SPREAD); if ( Spread >= 0 ) ExtSpread [x] = Spread; if ( TimeCurrent() - iTime( NULL, 0, 0) >= 60 ){ int Spread2[x]; ArrayCopy( Spread2[],ExtSpread[],0,0, WHOLE_ARRAY);} x=x+1; if (x > 1000) x = 0;
In questo modo, scrivo il valore di Spread in ExtSpread[] e quando la barra di un minuto è finita, lo sposto in un altro array - che dovrebbe, in teoria, sopravvivere alla prossima barra.
Dimensione ExtSpread[1000]
Un'altra domanda: se l'array è numerato a partire da zero, allora, se la sua dimensione è 1000, la sua ultima cella sarà 999?
Spread = MarketInfo(Symbol(),MODE_SPREAD); if ( Spread >= 0 ) ExtSpread [x] = Spread; if ( TimeCurrent() - iTime( NULL, 0, 0) >= 60 ){ int Spread2[x]; ArrayCopy( Spread2[],ExtSpread[],0,0, WHOLE_ARRAY);} x=x+1; if (x > 1000) x = 0;
In questo modo, scrivo il valore di Spread in ExtSpread[] e quando la barra di un minuto è finita, lo sposto in un altro array - che dovrebbe, in teoria, sopravvivere alla prossima barra.
Dimensione ExtSpread[1000]
Un'altra domanda: se l'array è numerato a partire da zero, allora, se la sua dimensione è 1000, la sua ultima cella sarà 999?
Allora è corretto: x++ e se ( x > 999 ) x=0;
Spread = (int)MarketInfo(Symbol(),MODE_SPREAD); if ( Spread >= 0 ) ExtSpread [x] = Spread; if ( TimeCurrent() - iTime( NULL, 0, 0) >= 60 ){ int Spread2[];ArrayInitialize (Spread2,EMPTY_VALUE); ArrayResize( Spread2,x,0); ArrayCopy( Spread2,ExtSpread,0,0, WHOLE_ARRAY);} x=x+1; if (x > 999) x = 0;
Buon pomeriggio, potreste dirmi, per favore, che ho scaricato la versione mt4 636 su Android, ma non vede la lista dei broker. La versione del terminale non è più supportata?(( Se è così, dove posso scaricarne una funzionante?
Durante la compilazione apparirà un errore. Qual è il problema? Aiutami a risolverlo!
ArrayInitialize(max,0) =>ArrayInitialize(arr,0);
for(int a=1;a<=pr;a++) =>for(int a=1;a<pr;a++)
Questo è un codice molto-molto non-ottimale, il terminale si blocca per alcuni minuti quando lo si lancia, e poi sarà molto lento, e se lo si esegue con diversi grafici, allora non funzionerà affatto
Questo è un codice molto-molto non-ottimale, il terminale si blocca per alcuni minuti quando lo si lancia, e poi sarà molto lento, e se lo si esegue con diversi grafici, allora non funzionerà affatto
Sì, grazie, risolto tutto, nessun errore. Lags, sì, molto. Potresti dirmi in che direzione muovermi per ottimizzare, o dovrò riscrivere tutto?
Intendevo dire che quando i dati vengono passati in un array, questo si riempie in modo sequenziale, cioè array1[] = x; in quale cella verrà scritto il valore x se il numero della cella non è specificato direttamente?
No. Se volete riempire tutte le celle con lo stesso valore , usate ArrayInitialize().
Se volete scrivere valori diversi, usate il ciclo in modo sequenziale. Se avete bisogno di scrivere in una cella specifica, specificate il suo indirizzo.
No. Se volete riempire tutte le celle con lo stesso valore , usate ArrayInitialize().
Se volete scrivere valori diversi, usate il ciclo in modo sequenziale. Se avete bisogno di scrivere in una cella specifica, specificate il suo indirizzo.
Grazie,
Ecco un'altra domanda: attraverso ArrayCopy, potrò creare un nuovo array con dimensioni pari al numero di celle riempite nel precedente? O devo creare prima un secondo array e solo dopo copiare?
void& dst_array[], // куда копируем
const void& src_array[], // откуда копируем
int dst_start=0, // с какого индекса пишем в приемник
int src_start=0, // с какого индекса копируем из источника
int count=WHOLE_ARRAY // сколько элементов
);
Grazie,
Ecco un'altra domanda: con ArrayCopy, posso creare un nuovo array con la stessa dimensione del numero di celle riempite nel precedente? O devo prima creare un secondo array e poi copiare?
void& dst_array[], // куда копируем
const void& src_array[], // откуда копируем
int dst_start=0, // с какого индекса пишем в приемник
int src_start=0, // с какого индекса копируем из источника
int count=WHOLE_ARRAY // сколько элементов
);
Creare prima, ovviamente.
if ( Spread >= 0 ) ExtSpread [x] = Spread;
if ( TimeCurrent() - iTime( NULL, 0, 0) >= 60 ){
int Spread2[x];
ArrayCopy( Spread2[],ExtSpread[],0,0, WHOLE_ARRAY);}
x=x+1;
if (x > 1000) x = 0;
In questo modo, scrivo il valore di Spread in ExtSpread[] e quando la barra di un minuto è finita, lo sposto in un altro array - che dovrebbe, in teoria, sopravvivere alla prossima barra.
Dimensione ExtSpread[1000]
Un'altra domanda: se l'array è numerato a partire da zero, allora, se la sua dimensione è 1000, la sua ultima cella sarà 999?
Allora è corretto: x++ e se ( x > 999 ) x=0;
if ( Spread >= 0 ) ExtSpread [x] = Spread;
if ( TimeCurrent() - iTime( NULL, 0, 0) >= 60 ){
int Spread2[x];
ArrayCopy( Spread2[],ExtSpread[],0,0, WHOLE_ARRAY);}
x=x+1;
if (x > 1000) x = 0;
In questo modo, scrivo il valore di Spread in ExtSpread[] e quando la barra di un minuto è finita, lo sposto in un altro array - che dovrebbe, in teoria, sopravvivere alla prossima barra.
Dimensione ExtSpread[1000]
Un'altra domanda: se l'array è numerato a partire da zero, allora, se la sua dimensione è 1000, la sua ultima cella sarà 999?
Allora è corretto: x++ e se ( x > 999 ) x=0;
if ( Spread >= 0 ) ExtSpread [x] = Spread;
if ( TimeCurrent() - iTime( NULL, 0, 0) >= 60 ){
int Spread2[];ArrayInitialize (Spread2,EMPTY_VALUE); ArrayResize( Spread2,x,0);
ArrayCopy( Spread2,ExtSpread,0,0, WHOLE_ARRAY);}
x=x+1;
if (x > 999) x = 0;
Rinviato:
scomoroh, 2016.12.04 18:58
Appare un errore durante la compilazione. Qual è il problema? Aiuta a risolverlo!Rinviato:
scomoroh, 2016.12.04 18:58
Durante la compilazione apparirà un errore. Qual è il problema? Aiutami a risolverlo!ArrayInitialize(max,0) =>ArrayInitialize(arr,0);
for(int a=1;a<=pr;a++) =>for(int a=1;a<pr;a++)
Questo è un codice molto-molto non-ottimale, il terminale si blocca per alcuni minuti quando lo si lancia, e poi sarà molto lento, e se lo si esegue con diversi grafici, allora non funzionerà affatto
ArrayInitialize(max,0) =>ArrayInitialize(arr,0);
for(int a=1;a<=pr;a++) =>for(int a=1;a<pr;a++)
Questo è un codice molto-molto non-ottimale, il terminale si blocca per alcuni minuti quando lo si lancia, e poi sarà molto lento, e se lo si esegue con diversi grafici, allora non funzionerà affatto