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

 

Forum sul trading, sistemi di trading automatico e test di strategia

Qualsiasi domanda per i neofiti su MQL4, aiuto e discussione su algoritmi e codici

Taras Slobodyanik, 2018.10.07 09:47

Lo scrivo a titolo di esempio)

se non hai bisogno di ricordare il simbolo, potresti non ricordarlo

Se il nome sarà solo un id del grafico, come posso eliminare le variabili non necessarie?
(con un uso frequente ci saranno molte variabili)

Se nessun prefisso - stessa cosa, come cancellare le variabili non necessarie?


=Loscrivo solo come esempio).

Se volete espandere la mente non sofisticata, è un buon esempio per l'educazione :-)

=Senomino solo l'id del grafico, come faccio a rimuovere le variabili non necessarie?

Perché rimuoverli del tutto? Se per esempio volete memorizzare solo il periodo, allora name = prefix+symbol è sufficiente. Ho un'ipotesi che posso fare con un solo GP a tutti - se eseguo una sola operazione di cambio di frame su un grafico, sarà finita prima che io vada al grafico successivo e lì il periodo viene interrogato di nuovo e il GP viene sovrascritto. Ci sono delle insidie in questo caso?

 
Taras Slobodyanik:

il mio codice, il mio codice funziona, non posso vedere il tuo codice.
per favore)

Quindi ho lanciato il tuo script sul grafico e l'elenco delle variabili globali è 0.
 
inter78:
Quindi ho lanciato il tuo script sul grafico e l'elenco delle variabili globali è 0.

vuoi controllare o vuoi guidare?)
guardare la lista visivamente è guardare i bit lunghi, come i bit per il doppiaggio - c'è abracadabra, o NaN

 
psyman:

Perché rimuoverli del tutto? Se, per esempio, avete bisogno di memorizzare solo un punto, allora name = prefix + symbol è sufficiente. Ho un'ipotesi che posso fare con un solo GP - se eseguo una sola operazione di cambio di frame sul grafico, finisce prima che io passi al grafico successivo, e lì il periodo viene re-inquisito e il GP viene sovrascritto. Non ci sono insidie in questo caso?

tutto dipende dallo scopo

se l'indicatore (o qualsiasi altra cosa), funzionerà in un'istanza, su un simbolo, e nessun altro farà le stesse variabili, allora, naturalmente, non si può preoccupare

 
Taras Slobodyanik:

vuoi controllare o guidare?)
guardare la lista visivamente è guardare i bit longo, come i bit per il doppiaggio - c'è abracadabra, o NaN

Cioè se ora capisco quello che mi hai appena scritto non mi preoccuperei di te. È solo che la mia conoscenza della programmazione tende a zero. Ma se potessi ficcare ChartID nelle variabili globali senza distorsioni sarei felice. Grazie.
 

Forum sul trading, sistemi di trading automatico e test di strategia

Tutte le domande dei neofiti su MQL4, aiuto e discussione su algoritmi e codici

Taras Slobodyanik, 2018.10.06 21:47

      string name=prefix_gv+"Price_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].price);
      

Come faccio a fare in modo che alla variabile name venga assegnato un valore di stringa di testo e poiLine_ALL[i].price venga scritto anche lì, ma come GP?

In teoria il nome dovrebbe semplicemente sovrascriverlo.

UPD

Penso di aver capito - ho bisogno di una semplice variabile per memorizzare il nome del GP. Il nome della variabile può essere lo stesso. Giusto?

 
psyman:

Spiega la parte difficile: al nome viene assegnato un valore di stringa di testo e poiLine_ALL[i].price è scritto lì,ma come GP?

In teoria il nome dovrebbe essere semplicemente sovrascritto.

UPD

Penso di aver capito - ho bisogno di una semplice variabile per memorizzare il nome del GP. Il nome della variabile può essere lo stesso. Giusto?

Nelnome della variabile, si crea un nome (testuale), poi si crea una variabile globale con questo nome e si scrive un valore in questo GP.
cioè viene generato un elenco di GP e una parte dell'array viene memorizzata in essi

1

 
inter78:
Se avessi capito quello che hai appena scritto, non ti disturberei. È solo che la mia conoscenza della programmazione tende a zero. Ma se potessi ficcare ChartID nelle variabili globali senza distorsioni sarei felice. Grazie.

Il mio codice scrive il long-ChartID in una variabile globale temporanea.

Visivamente, se si preme F3, lì viene visualizzato zero (o un altro valore diverso).
Questo succede perché il terminale pensa che sia un valore doppio e cerca di mostrarlo, ma noi lo abbiamo infilato un lungo - che è un formato di numero completamente diverso.

Se questo valore viene riletto come un normale doppio, sarà un casino.
Se viene letto dal mio codice, sarà di nuovo lungo (lo stesso che abbiamo salvato).
Se cliccate manualmente su questa variabile nella finestra del terminale, sarà resettata perché il terminale rileverà lo swap.

 
Taras Slobodyanik:

Si crea un nome nelnome della variabile (testuale), poi si crea una variabile globale con quel nome e si scrive un valore in quel GP.
cioè viene generato un elenco di GP e una parte dell'array viene memorizzata in essi


Ma questa condizione.

GlobalVariableCheck(name) || GlobalVariableTemp(name)

per cosa?

La definizione stessa "GlobalVariableTemp tenta di creare una variabile globale temporanea" non mi è chiara.

Perché cercare di creare quando GlobalVariableSet lo fa?

UPD

Mettetelo in OnInit:

   string   GV_prefix="ZZ_";
   string   ctime=GV_prefix+_Symbol+"_"+ChartID();
   GlobalVariablesDeleteAll(NULL, 0);
    if (GlobalVariableCheck(ctime) || GlobalVariableTemp(ctime))
      GlobalVariableSet(ctime, Period());

Chiamata in OnChartEvent:

if(GlobalVariableGet(ctime)!=Period()) 

La risposta che ottengo è 'ctime' - identificatore non dichiarato


 
psyman:

Ma questa condizione.

Perché?

GlobalVariableCheck()- controlla se tale variabile esiste già, altrimenti
GlobalVariableTemp()- crea una variabile temporanea, che sarà cancellata da sola al prossimo lancio.

psyman:

UPD

L'ho scritto in OnInit:

Lo chiamo in OnChartEvent:

In risposta ottengo 'ctime' - identificatore non dichiarato

la stringa deve essere spostata sopra OnInit, nelle variabili globali del codice.

o aggiungere aOnChartEvent

string   GV_prefix="ZZ_";
string   ctime=GV_prefix+_Symbol+"_"+ChartID();
Motivazione: