int TF(int i) { switch(i) { case 1: return(PERIOD_M1); case 2: return(PERIOD_M5); case 3: return(PERIOD_M15); case 4: return(PERIOD_M30); case 5: return(PERIOD_H1); case 6: return(PERIOD_H4); case 7: return(PERIOD_D1); case 8: return(PERIOD_W1); case 9: return(PERIOD_MN1); } }
Questo non è possibile perché il valore del periodo non è incrementato di uno, dovete organizzare il vostro indice di enumerazione, come questo
- www.mql5.com
Se solo fosse così semplice. I valori non sono distribuiti uniformemente. Diciamo che PERIODO_H1 è 60 e il periodo successivo PERIODO_H2 è 120.
Ci sono probabilmente due funzioni che devono essere inserite: 1 - restituisce il numero di elementi nell'enumerazione, 2 - restituisce l'elemento per numero...
Ci sono probabilmente due funzioni che devono essere inserite: 1 - restituisce il numero di elementi nell'enumerazione, 2 - restituisce l'elemento per numero...
Se solo fosse così semplice. I valori non sono distribuiti uniformemente. Diciamo che PERIODO_H1 è 60 e il periodo successivo PERIODO_H2 è 120.
Il punto è che l'enumerazione è una cosa predefinita e tutti i suoi valori possono essere visualizzati,
Ecco perché il rispettato sergey1294 ti ha consigliato di descrivere la tabella di conversione in una chiamata seriale,
dove se il valore aumenta di 1, sarà chiamato il prossimo valore di enum nella lista.
ENUM_TIMEFRAMES GetPeriodEnumerator(uchar i);
Ora stimiamo quante enumerazioni ci sono e quante funzioni Enumerator ci dovrebbero essere (una per ogni enumerazione).
In generale, c'è una soluzione. Per ogni enumerazione, scrivere una funzione Enumerator speciale. Per esempio, per Timeframes: ora stimiamo quante enumerazioni ci sono in totale e poi quante funzioni Enumerator ci dovrebbero essere (una per ogni enumerazione).
ENUM_TIMEFRAMES GetPeriodEnumerator(uchar i) { switch(i) { case 0 return(PERIOD_M1); case 1 return(PERIOD_M2); case 2 return(PERIOD_M3); case 3 return(PERIOD_M4); case 4 return(PERIOD_M5); case 5 return(PERIOD_M6); case 6 return(PERIOD_M10); case 7 return(PERIOD_M12); case 8 return(PERIOD_M15); case 9 return(PERIOD_M20); case 10 return(PERIOD_M30); case 11 return(PERIOD_H1); case 12 return(PERIOD_H2); case 13 return(PERIOD_H3); case 14 return(PERIOD_H4); case 15 return(PERIOD_H6); case 16 return(PERIOD_H8); case 17 return(PERIOD_H12); case 18 return(PERIOD_D1); case 19 return(PERIOD_W1); case 20 return(PERIOD_MN1); } return(-1); }
Ci sono un totale di 21 timeframes in MT5. La variante finale sarà così
- www.mql5.com
In generale, ci sono due opzioni per l'enumerazione
Prima usando una funzione, ho dimenticato di mettere i due punti nel mio ultimo post
ENUM_TIMEFRAMES GetPeriodEnumerator(uchar i) { switch(i) { case 0: return(PERIOD_M1); case 1: return(PERIOD_M2); case 2: return(PERIOD_M3); case 3: return(PERIOD_M4); case 4: return(PERIOD_M5); case 5: return(PERIOD_M6); case 6: return(PERIOD_M10); case 7: return(PERIOD_M12); case 8: return(PERIOD_M15); case 9: return(PERIOD_M20); case 10: return(PERIOD_M30); case 11: return(PERIOD_H1); case 12: return(PERIOD_H2); case 13: return(PERIOD_H3); case 14: return(PERIOD_H4); case 15: return(PERIOD_H6); case 16: return(PERIOD_H8); case 17: return(PERIOD_H12); case 18: return(PERIOD_D1); case 19: return(PERIOD_W1); case 20: return(PERIOD_MN1); } return(-1); }Il secondo modo è usare un array
ENUM_TIMEFRAMES GetPeriodEnumerator[21]= { PERIOD_M1, PERIOD_M2, PERIOD_M3, PERIOD_M4, PERIOD_M5, PERIOD_M6, PERIOD_M10, PERIOD_M12, PERIOD_M15, PERIOD_M20, PERIOD_M30, PERIOD_H1, PERIOD_H2, PERIOD_H3, PERIOD_H4, PERIOD_H6, PERIOD_H8, PERIOD_H12, PERIOD_D1, PERIOD_W1, PERIOD_MN1 };
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Diciamo che abbiamo un'enumerazione. Come possiamo ottenere tutti i possibili valori di questa enumerazione uno per uno, per esempio in un ciclo?
ENUM_TIMEFRAMES tf1;
Cioè tf1++ deve restituire sequenzialmente PERIODO_M1, PERIODO_M2, PERIODO_M5... Penso che questo non possa essere fatto con gli strumenti linguistici.