[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 701

 
IgorM:


il vostro cane nel passare i parametri alla funzione, se lo passate come SaveDataIND(double TempIND[])

double TempIND[ ] è in realtà un nuovo array per la funzione, ma senza il diritto di cambiare i parametri, prova SaveDataIND(double & TempIND[])

No, non lo è!!! Sembra che il cane abbia mangiato un pezzo di carne dopo tutto... Grazie, Igor.
 

È possibile rendere possibile passare in una funzione quale indicatore utilizzare, in modo che nella stringa

TempIND[j]=iAD(NULL,PERIOD_M5,j);     

non un indicatore specifico ma passato come parametro di una funzione?

 
Bene, fate un interruttore o qualcosa del genere e scrivete i vostri possibili indicatori assegnando loro degli indici.
 
Mathemat:
Bene, fate un interruttore o qualcosa del genere e scrivete i vostri possibili indicatori assegnando loro degli indici.
Grazie, Alexey, questo pensiero è venuto prima a me... Ho pensato che forse qualcuno avrebbe suggerito qualcosa di più estremo... :)
 
artmedia70:

È possibile rendere possibile passare in una funzione quale indicatore utilizzare, in modo che nella stringa

non un indicatore specifico, ma passato come parametro di una funzione?



Ma a che serve? Di solito queste azioni non vengono eseguite - di solito i dati vengono inviati alla funzione, e la funzione chiamante prepara i dati/array

sembra che la tua costruzione ArrayResize(TempIND,nBars); non è corretta, almeno in altri linguaggi di programmazione, il compilatore non lo mancherebbe poiché hai doppio TempIND[50]; - cioè l'array è dichiarato come statico e dovrebbe essere dinamico (cioè senza dimensioni) - doppio TempIND[];

ZS: e la confusione con i nomi delle variabili nella funzione - non dimenticare che se c'è una variabile globale (globale nel corpo dell'EA), la variabile dichiarata all'interno della funzione con lo stesso nome sarà completamente diversa:

int my_int = 100;

///////////
int my_func(){

int my_int = 123;
Print("my_func my_int = ",my_int);
return(0);
}

int start(){
Print("start_func my_int = ",my_int);
return(0);
}
questo di solito è chiamato l'ambito delle variabili - rinominare ciò che è nella funzione il suo nome cioè void SaveDataIND(double myTempIND[], int nBars) - meno confusione sarà
 
artmedia70:

Dove viene inizializzato Lot?

Poi solo dopo aver controllato i lotti o cambiare Lots_New come scritto prima, o assegnargli il valore = Lot;



Grazie! Funziona tutto!
 
IgorM:


Ma qual è il punto? Queste azioni di solito non vengono eseguite - i dati vengono solitamente inviati alla funzione, e la funzione chiamante prepara i dati/array

Sembra che tu abbia la costruzione ArrayResize(TempIND,nBars); sbagliata, almeno in altri linguaggi di programmazione il compilatore non lo mancherebbe perché hai double TempIND[50]; - cioè l'array è dichiarato come statico, mentre dovrebbe essere dinamico (cioè senza dimensionalità) - double TempIND[];

ZS: e la confusione con i nomi delle variabili nella funzione - non dimenticare che se c'è una variabile globale (globale nel corpo dell'EA), la variabile dichiarata all'interno della funzione con lo stesso nome sarà completamente diversa:

questo di solito è chiamato ambito delle variabili - rinominare le cose in funzione i loro nomi, cioè void SaveDataIND(double myTempIND[], int nBars) - meno confusione sarà

1. Quindi, Igor, dovrei scrivere la mia funzione assolutamente identica per ogni indicatore?

2. Grazie, l'ho aggiustato per sicurezza...

3. non mi confonde - posso vedere quale array viene usato e dove, è in qualche modo più facile per me invertirlo, ma quando ho molti nomi, mi confonderò sicuramente... Anche se... Probabilmente dovrei abituarmi a scriverlo bene...

 
cyclik33:

Grazie! Funziona tutto!
Non c'è di che, tornate... :)
 
T-G 13.07.2010 22:56 am Correzione | cancellazione
artmedia70:
Controllare l'apertura di una nuova candela. Se nuovo, si apre, se vecchio, no...
qual è il modo migliore per farlo?
 
T-G:
T-G 13.07.2010 22:56 modificato | cancellare
artmedia70:
Controlla l'apertura di una nuova candela. Se nuovo, si apre, se vecchio, no...
Qual è il modo migliore per farlo?

static int time = Time[0];

se (tempo < Tempo[0]){

// vecchia candela

} else {

// nuova candela

tempo = Tempo[0];

}

Motivazione: