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

 
Artyom Trishkin:

2. Cosa significa "più di zero"?

Significa che c'è qualche prezzo nel buffer, altrimenti non c'è nessun prezzo nel buffer.

Artyom Trishkin:

Cosa viene mostrato nei valori del buffer di questo indicatore nella finestra dei dati?

Prezzo o niente.
 
Ghabo:

Significa che c'è qualche prezzo nel buffer, altrimenti non c'è nessun prezzo nel buffer.

EMPTY_VALUE è un valore di buffer "vuoto", che molti indicatori usano per default, ha un valore di DBL_MAX - e questo è molto maggiore di zero. Ecco perché lo chiedo.

Prova a controllare if(M_A > 0 && M_A < EMPTY_VALUE)

 
Artyom Trishkin:

Il valore EMPTY_VALUE, il valore del buffer "vuoto" che molti indicatori usano per default, ha un valore di DBL_MAX - che è molto maggiore di zero. Ecco perché lo chiedo.

Prova a controllare se(M_A > 0 && M_A < EMPTY_VALUE)

I segnali sono così presenti. È questo?

void OnInit() {
  time=Time[0];
}
//////////////////////////////
if(М_А>0 && M_A < EMPTY_VALUE)  
{
if(time!=Time[0])
   {
    time=Time[0]; 
    AL(Symbol()+" "+Period()+" УХ ТЫ",2);//
   }
 }

Quindi non ci sarà nessun avviso all'avvio ma ci sarà all'apparizione del segnale sulla barra durante la quale l'indicatore è stato collegato?

Ne dubito, all'inizializzazioneil tempo è già uguale al tempo di apertura della barra.

Come decidere?

 
Ghabo:

I segnali sono così presenti. È tutto?

Quindi non ci sarà nessun avviso all'avvio ma ci sarà quando il segnale appare sulla barra durante la quale l'indicatore è stato collegato?

Ne dubito, all'inizializzazione, iltempo è già uguale al tempo di apertura della barra.

Come risolvere?

Rimuovere il tempo di inizializzazione in OnInit()

void OnCalculate()
  {
   static datetime time=0;
//---
   if(М_А>0 && M_A < EMPTY_VALUE)  
     {
      if(time!=Time[0])
        {
         time=Time[0]; 
         AL(Symbol()+" "+Period()+" УХ ТЫ",2);//
        }
     }
  }
 
Taras Slobodyanik:

quindi è tutto pronto, bisogna solo aggiungere la scrittura/lettura

Questo codice funziona o dovrebbe funzionare? Ho una divergenza dopo aver recuperato dalla variabile globale con ID reale. E se potete, un esempio sotto forma di indicatore. Grazie.
 
inter78:
Questo codice funziona o dovrebbe funzionare? Ho una divergenza dopo aver recuperato da una variabile globale con un ID reale. E se possibile un esempio sotto forma di indicatore. Grazie.

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

 

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.05 11:01

Beh, non c'è niente di complicato nelle variabili globali:
- il nome della variabile sarà prefisso+simbolo+periodo, valore = id del grafico
- Quando iniziate, cercate le variabili con il vostro prefisso e confrontate gli aidi
- Se un grafico non è nostro, controlliamo se un tale grafico esiste; se non esiste già, cancelliamo la variabile
- Se un grafico è nostro, prendiamo un simbolo e un punto dal nome e cancelliamo anche la variabile (o la riscriviamo)



Sto cercando di aiutare i miei lettori a capire il significato del prefisso variabile e il suo uso. Per favore, datemi un esempio di come creare una tale variabile globale.

Dice che i GPT sono conservati per 4 settimane, questo anche se il terminale è spento?

 
psyman:

Non riesco a trovare nulla nell'aiuto su cosa sia un prefisso di variabile o perché sia necessario. Per favore, datemi un esempio di come creare una tale variabile globale.

Dice che i GPT sono conservati per 4 settimane, anche se il terminale è spento?

Intendevo il prefisso nel nome per essere in grado di identificare dove una variabile è propria e dove è di qualcun altro, e il prefisso può cancellare tutte le variabili in una volta:

int  GlobalVariablesDeleteAll( 
   string     prefix_name=NULL,     // все глобальные переменные, чьи имена начинаются с префикса 
   datetime   limit_data=0          // все глобальные переменные, которые изменялись ранее ранее указанной даты 
   );

per esempio:

string   GV_prefix="ZZ_";                                               //префикс имени для всех своих
string   prefix_gv=GV_prefix+_Symbol+"_"+TFtoStr(ind_period)+"_";       //префикс имени для конкретного символа и периода

GlobalVariablesDeleteAll(prefix_gv); //удалить все переменные со своим префиксом


   //создание и запись глобальных переменных в цикле
   int num=0;
   for(int i=lines_all-1;i>=end;i--)
      {
      string name=prefix_gv+"Price_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].price);
      
      name=prefix_gv+"TimeBeg_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].time_start);
      
      name=prefix_gv+"TimeEnd_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].time_end);
      
      name=prefix_gv+"Visible_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].visible);
      
      name=prefix_gv+"Direction_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].direct);
      
      num++;
      }


ps. si possono anche memorizzare/estrarre informazioni nel nome

 

Ora sappiamo di cosa stiamo parlando.

=nome della variabile è prefisso+simbolo+periodo, valore = id del grafico

Perché così complicato? Se volete memorizzare solo il periodo, potete nominarlo con l'id del grafico.

 
psyman:

Ora sappiamo di cosa stiamo parlando.

=nome della variabile è prefisso+simbolo+periodo, valore = id del grafico

Perché è così complicato? Se volete memorizzare solo un periodo, potete nominareun id del grafico.

Lo scrivo solo come esempio)

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

Se il nome è solo un id del grafico, come si fa a cancellare le variabili non necessarie?
(se usato spesso, ci saranno molte variabili)

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