[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 701
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
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[])
È 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?
Bene, fate un interruttore o qualcosa del genere e scrivete i vostri possibili indicatori assegnando loro degli indici.
È 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:
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à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!
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...
Grazie! Funziona tutto!
Controllare l'apertura di una nuova candela. Se nuovo, si apre, se vecchio, no...
Controlla l'apertura di una nuova candela. Se nuovo, si apre, se vecchio, no...
static int time = Time[0];
se (tempo < Tempo[0]){
// vecchia candela
} else {
// nuova candela
tempo = Tempo[0];
}