Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 927

 
Artyom Trishkin:

Cartella di memorizzazione: File --> Open Data Folder --> MQL4Experts\Here.ex4

Se questo è il caso, ma EA non è visibile nel navigatore, allora ... congratulazioni - avete esaurito i programmi possibili nel navigatore. Devi cancellare qualcosa. Sfortunatamente, MetaTrader4 ha un limite sul numero di programmi che il Navigatore può vedere. Ho affrontato questo problema quando ho creato un gran numero di indicatori. Per non cancellarne molti ho semplicemente copiato il codice in un file di test e l'ho compilato ed eseguito - è così che ho sempre testato gli indicatori di cui avevo bisogno in un file - cancellato il contenuto del file, messo un nuovo codice, compilato e testato - finito. Poi il prossimo - cancellato il contenuto del file, inserito nuovo codice in esso ..., e così via in un cerchio ...

Grazie, darò un'occhiata... Scriverò qui... Non c'è molto in termini di software...
 
Artyom Trishkin:

Cartella del file: File --> Open Data Folder --> MQL4Experts\Here.ex4

Se tutto è lo stesso, ma l'EA non è visibile nel navigatore, allora... congratulazioni - avete esaurito i programmi possibili nel navigatore. Devi cancellare qualcosa. Sfortunatamente, MetaTrader4 ha un limite al numero di programmi che il Navigatore può vedere. Ho affrontato questo problema quando ho creato un gran numero di indicatori. Per non cancellarne molti ho semplicemente copiato il codice in un file di test e l'ho compilato ed eseguito - è così che ho sempre testato gli indicatori di cui avevo bisogno in un file - cancellato il contenuto del file, messo un nuovo codice, compilato e testato - finito. Poi il prossimo - cancellato il contenuto del file, inserito nuovo codice in esso ..., e così via in un cerchio ...

copiato nella directory dei dati - exps, indicatori, scripts - non abbastanza. Nel NAVIGATOR ...luglio - no.

Anche nella cartella da cui avvio il terminale è presente. Non in NAVIGATOR.




ARTEM - GRAZIE. HO RIAVVIATO IL TERMINALE - È LÌ.



 

Voglio creare un array e mettere dei valori nell'array creato, ma voglio alimentare i valori attraverso variabili di funzione, ecc.

int q=8,w=9;

int mas[2]={q,w}. Quello che dovremmo fare è mas[0]=q, mas[1]=w. C'è un modo per sostituire le variabili che già memorizzano i calcoli necessari e metterli in un array? È possibile farlo con le macro?

 
Seric29:

Voglio creare un array e mettere dei valori nell'array creato, ma voglio alimentare i valori attraverso variabili di funzione, ecc.

int q=8,w=9;

int mas[2]={q,w}. Quello che dovremmo fare è mas[0]=q, mas[1]=w. È possibile creare un array sostituendo le variabili che già memorizzano i calcoli necessari e metterli nell'array? È possibile farlo con le macro?

Non si può. All'inizio di questa settimana, qualcuno ne ha discusso nel thread "bug, errori, domande"- il risultato è impossibile.

 
Igor Makanu:

Non si può, all'inizio della settimana nel thread "bugs, bugs, questions" qualcuno ne ha discusso - il risultato è no

Capisco. Ho visto qualcuno usare una macro per assegnare il numero di colonne quando si dichiara un array, anche se passare valori di colonne o righe quando si inizializza un array tramite una variabile è vietato in mql, ma qualcuno lo ha fatto tramite una macro. Ecco il soggettohttps://www.mql5.com/ru/forum/95351.

#define ODD 5

doppio Max_D1[ODD];

doppio Low_D1[ODD];

 
Seric29:

Capisco. Ho visto qualcuno usare una macro per assegnare il numero di colonne quando si dichiara un array, anche se passare colonne o righe quando si inizializza un array tramite una variabile è vietato in mql, ma qualcuno ha usato una macro per farlo. Ecco il soggetto https://www.mql5.com/ru/forum/95351.

#define ODD 5

doppio Max_D1[ODD];

doppio Low_D1[ODD];

e qual è lo scopo di questa azione? Un array può essere inizializzato con variabili invece che con costanti? - la risposta è no.

La vostra macro farà il lavoro manuale di assegnare un valore variabile ad ogni elemento dell'array, ma il punto non è cambiato da questo

 
Igor Makanu:

e il senso di questa azione? come ha fatto a porre la domanda? un array può essere inizializzato con variabili piuttosto che con costanti? - la risposta è no.

La vostra macro farà il lavoro manuale di assegnare un valore variabile ad ogni elemento dell'array, ma l'essenza non cambierà.

Beh, ho pensato che sarebbe stato possibile farci qualcosa.

 
Igor Makanu:

e il senso di questa azione? come ha fatto a porre la domanda? un array può essere inizializzato con variabili piuttosto che con costanti? - la risposta è no.

La vostra macro farà il lavoro manuale di assegnare un valore variabile ad ogni elemento dell'array, ma il punto non è cambiato da questo.

Puoi creare una funzione che restituisca un valore costante per risolvere questo problema?

 
Seric29:

Si può creare una funzione che restituisca un valore costante per risolvere questo problema?

No, non puoi

Confondi le nozioni di inizializzazione e di assegnazione di un valore - l'essenza è la stessa, ma i momenti (quando) di utilizzo sono diversi. L'inizializzazione è nella stringa in cui descrivi un array - lì lo inizializzi con delle costanti e l'assegnazione, quando assegni valori arbitrari a un array(elementi di array) in qualsiasi posto dopo averlo descritto

Non so come spiegare quello che mi stai chiedendo e perché sto scrivendo che non puoi

Quando si usano gli array non c'è il problema che sollevi, apparentemente dall'inizio della scrittura del codice non hai presupposto l'uso di un array, e ora devi solo riscrivere il codice o assegnare manualmente un valore variabile a ogni elemento dell'array

A volte, per non "moltiplicare" le variabili, posso usare un array se l'array ha più di 3-4 elementi, il pericolo di confondere il numero di elementi dell'array mentre si scrive il programma è alto; uso valori costanti impostati con #define - il codice è leggibile e non si può proprio fare un errore, qualcosa del genere:

#define  open   0
#define  take   1
#define  loss   2
#define  profit 3
void OnStart()
  {
  double order[4];
  order[open] =  OrderOpenPrice();
  order[take] =  OrderTakeProfit();
  order[loss] =  OrderStopLoss();
  order[profit]= OrderProfit();
  }

Forse non capisco l'univocità della sua domanda:
Seric29:

Tale domanda voglio creare un array e mettere immediatamente i valori nell'array creato, ma i valori che voglio alimentare attraverso le funzioni variabili, ecc.

int q=8,w=9;

int mas[2]={q,w}. Quello che dovremmo fare è mas[0]=q, mas[1]=w. È possibile creare un array sostituendo le variabili che già memorizzano i calcoli necessari, e metterlo in un array? È possibile farlo con le macro?

quando si descrive un array? - devono essere inizializzati con delle variabili? - ha risposto 2 volte sopra

o assegnare valori di variabili multiple a un array? - anche la risposta non è possibile, ma a causa di una sintassi non valida:

non potete applicare variabili tra parentesi graffe, cioè {1,2,3} - questo sarà saltato dal compilatore, ma {a,b,c} - non potete farlo, perché il compilatore si aspetta o un'operazione aritmetica (logica) o un operatore = (lvalue, rvalue) ... Quindi, dovreste studiare la sintassi del linguaggio, ma potrebbe non riguardare le capacità del linguaggio.

 
Igor Makanu:

No, non puoi.

Confondi i concetti di inizializzazione e assegnazione di valori - l'essenza è la stessa, ma i momenti (quando) di utilizzo sono diversi; l'inizializzazione è nella stringa dove descrivi un array - lì lo inizializzi con delle costanti e l'assegnazione è, dopo aver descritto un array, assegni qualsiasi valore a un array (elementi di array) in qualsiasi posto tu voglia.

Non so come spiegare quello che mi stai chiedendo e perché sto scrivendo che non puoi

Quando si usano gli array non c'è il problema che sollevi, apparentemente dall'inizio della scrittura del codice non hai presupposto l'uso di un array, e ora devi solo riscrivere il codice o assegnare manualmente un valore variabile a ogni elemento dell'array

A volte, per non "moltiplicare" le variabili, posso usare un array se l'array ha più di 3-4 elementi, il pericolo di confondere il numero di elementi dell'array mentre si scrive il programma è alto; uso valori costanti impostati con #define - il codice è leggibile e non si può proprio fare un errore, qualcosa del genere:

Beh, sì, c'è un uso ibrido degli elementi dichiarati nel programma. Per esempio dichiaro i parametri di input e da questi parametri ho bisogno di prendere le variabili globali e guardare attraverso di loro, ma c'è un problema i parametri di input non possono essere un array, il 2 ° esempio scrivo una funzione e inizia l'elaborazione attraverso i loop, qui è anche meglio usare un array, inizio gli argomenti di un array e di nuovo l'array di variabili è impossibile e devono come hai scritto sopra un valore in ogni cella, il 3 ° esempio sarebbe bello essere in grado di utilizzare come argomenti funzione utilizzando un array (qui è in erba) Per quanto riguarda l'uso degli array al posto delle variabili, sì, rende i programmi compatti e anch'io faccio così. Si può scrivere nelle variabili al momento dell'inizializzazione in C++, forse non si può nella versione 12 sotto, e qui l'hanno reso più economico, il che ha portato a tali conseguenze. In generale, capisco e vi ringrazio per le risposte.

Motivazione: