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
Un esempio potrebbe essere...
Come questo (non la struttura, ma la classe, ovviamente):
Cosa mettere dove, credo sia chiaro.
Non dimenticare alla fine:
Permettetemi di riformulare. Vi state chiedendo se è possibile, quando si definisce una funzione
specificare solo una variabile del tipo di struttura come suo parametro formale, ignorando il nome della struttura stessa? Cioè specificare, per esempio, non void funcName(MqlTradeRequest & req), ma solo void funcName(& req)?
Sì. Avete bisogno di una funzione universale per qualsiasi struttura semplice --- Nessun metodo, din. array. ecc. --- puramente una sequenza di tipi di dati specifici.
Poiché la composizione dello script è predeterminata da me, posso specificare esplicitamente il numero di strutture da trattare.
Ma per passare una qualsiasi di queste strutture inuna funzione con un nome, devo usare l'overloading.
Ci sono alcune difficoltà qui.
1. Il numero di strutture è limitato, perché il sovraccarico rallenta se si hanno più elementi.
2. Io stesso posso fare un errore quando copio le funzioni di sovraccarico.
PS// La funzionefunWrite() esegue certi calcoli ed esegueFileWriteArray() con una certa sequenza e parametri calcolati (da quale indice scrivere, quanti leggere).
Sì. Avete bisogno di una funzione universale per qualsiasi struttura semplice --- Nessun metodo, din. array. ecc. --- puramente una sequenza di tipi di dati specifici.
Poiché la composizione dello script è predeterminata da me, posso specificare esplicitamente il numero di strutture da trattare.
Ma per passare una qualsiasi di queste strutture a una funzione con un nome, devo usare l'overloading.
Capisco. Qualche tempo fa ho fatto una domanda simile sulla possibilità di non specificare il tipo di array quando si definisce una funzione. Appena sotto, Roche ha consigliato il sovraccarico.
Così sono arrivato alla conclusione che le funzioni "built-in" comeFileWriteArray(), chehanno alcuni parametri specificati con tipo void, sono esse stesse funzioni sovraccaricate. Solo che non vediamo la loro attuazione.
Capisco. Ho già fatto una domanda simile una volta per sapere se era possibile non specificare il tipo di array quando si definisce una funzione. Appena sotto, Roche ha consigliato il sovraccarico.
Così sono arrivato alla conclusione che le funzioni "built-in" comeFileWriteArray(), chehanno alcuni parametri specificati con tipo void, sono esse stesse funzioni sovraccaricate. Solo che non possiamo vedere la loro attuazione.
Le funzioni integrate sono scritte in un linguaggio di programmazione completo.
In C, per esempio, si può passare qualsiasi numero di variabili, e già nella funzione ottenere una lista di parametri passati ed esaminarli.
void fun(...) { }
In MQL5, non c'è questa possibilità. In particolare, mancano collegamenti e puntatori a tipi di dati e strutture semplici...
Deve avere qualcosa a che fare con la sicurezza. Accesso ai dati. Uscire dalla scatola di sabbia.
Ma voglio ancora che queste caratteristiche siano implementate in MQL5
Deve avere qualcosa a che fare con la sicurezza. Accesso ai dati. Uscire dalla scatola di sabbia.
Ma vorrei ancora che queste caratteristiche fossero implementate in MQL5
Come questo (non la struttura, ma la classe, ovviamente):
Penso che sia chiaro cosa mettere dove.
Alla fine, non dimenticare:
Questo è quello che io chiamo aiuto: reale e abbastanza concreto. Grazie. Dov'è il segno più?
A proposito... Ho pensato che per me va bene così. Ma non voglio rimanere formalista... ... così per curiosità ho deciso che non sarebbe stato male provare a organizzare un array bidimensionale. MQL mi ricorda qualcosa di C/C++, che ho dimenticato negli ultimi dodici anni circa. Ora ho provato a farlo in questo modo (senza loop - l'ho intenzionalmente semplificato):
Il compilatore genera l'errore: "'MABuffer' - la conversione dei parametri non è consentita".
Mi chiedo cosa sto sbagliando. Se non mi sbaglio, quando si dichiara una classe con array multidimensionale è necessario specificare numericamente una delle misure, rendendola statica?ArrayResize, nel frattempo, impostala nuova dimensione per la prima dimensione.
x100intraday:
Mi chiedo cosa sto sbagliando?
1) SetIndexBuffer funziona con un array di doppi della stessa dimensione.
2) Non è chiaro perché stai usando TBuffer*, cioè usi la dinamica dove non è necessaria?
3) (CONSIGLIO) Nell'esempio, si sarebbe potuto fare con una struttura invece di una classe, per risparmiare un po' di memoria e un paio di centinaia di cicli di clock.
mql5:
3) (CONSIGLIO) Nell'esempio, si sarebbe potuto fare con una struttura piuttosto che una classe, per risparmiare un po' di memoria e un paio di centinaia di cicli di clock.
L'expert advisor usa l'indicatore su un diverso timeframe. Sui test l'EA mostra dati errati dall'indicatore.
L'EA stesso funziona su M5, e l'indicatore su H4. Gli indicatori chiamati sullo stesso timeframe (M5) restituiscono i valori corretti.
I valori restituiti sono simili ai valori dell'indicatore, ma sono diversi dai valori reali che sono visibili quando l'indicatore è applicato alla finestra del grafico dei prezzi.
Qual è il problema?
Esempio di codice di chiamata dell'indicatore: