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

 
Puoi dirmi come riassumere tutti i valori nel testo?
void Hmin(){datetime   h = iBars(NULL,PERIOD_H1); 
       ObjectCreate(0,"Hmin"+h,OBJ_TEXT,1,TimeCurrent(),0);     
       double Hmin=ObjectDescription("Hmin"+h);     
       ObjectSetText("Hmin"+h,MathMin(Hmin,AccountEquity()-AccountBalance()),15,"Arial",clrWhite);
       ObjectSetInteger(0,"Hmin"+h,OBJPROP_ANCHOR,ANCHOR_RIGHT);  
           }
Questo codice li crea solo
 
Дмитрий:

Buon pomeriggio, per favore aiutatemi a capire...

MathMax restituisce il massimo di due valori numerici, cioè restituisce il massimo valore numerico da due array identici high[rates_total] con una differenza di -1 e -2 barre?

In parole semplici: nella prima matrice 12345 e nella seconda 1234, questa funzione restituirà 5?

No. La funzione restituisce 12345.

 
Дмитрий:

Buon pomeriggio, per favore aiutatemi a capire...

MathMax restituisce il massimo di due valori numerici, cioè restituisce il massimo valore numerico da due array identici high[rates_total] con una differenza di -1 e -2 barre?

In parole povere: il primo array ha 12345 e il secondo ha 1234, questa funzione restituirà 5?

Restituirà il valore massimo dei due, che sono high[rates_total-1] e high[rates_total-2].

Se l'indirizzo high[rates_total-1] contiene il valore 12345, e l'indirizzo high[rates_total-2] contiene il valore 1234, quale di questi due valori è maggiore?

12345 è chiaramente superiore a 1234 di un ordine di grandezza. Il valore 12345 di high[rates_total-1] sarà restituito.

 
Artyom Trishkin:

Il valore massimo dei due a high[rates_total-1] e high[rates_total-2] sarà restituito.

Se high[rates_total-1] contiene il valore 12345, e high[rates_total-2] contiene il valore 1234, quale di questi due valori è maggiore?

12345 è chiaramente superiore a 1234 di un ordine di grandezza. Il valore 12345 di high[rates_total-1] sarà restituito.

Grazie... Ma c'è una questione di razionalità della stringa se high[rates_total-1] è già una barra maggiore di high[rates_total-2]

O c'è un altro significato qui?

Grazie.

 
Дмитрий:

Grazie... ma questo solleva una questione sulla razionalità della stringa se high[rates_total-1] è già una barra in più di high[rates_total-2]

O c'è qualcos'altro che ha senso qui?

Grazie.

Cosa c'entrano le barre?

State confrontando valori alti su due barre della stessa matrice. I tassi_totale-1 e tassi_totale-2 indicano quali valori delle due barre si stanno confrontando.

Stai confrontando i valori alti delle barre situate su rates_total-1 e rates_total-2, non i valori degli indici.

Quello a cui stai pensando assomiglierebbe a questo: MathMax(rates_total-1, rates_total-2) - qui è dove rates_total-1 sarà sempre restituito.

 
Rustam Bikbulatov:
Puoi dirmi come sommare tutti i valori nel testo? Questo codice crea solo

volete ottenere il saldo meno i valori del patrimonio netto?

 
Artyom Trishkin:

Cosa c'entrano le barre?

State confrontando i valori di High, che sono su...

Grazie... Per il chiarimento)
 

Buona giornata a tutti!

In MT4, sul modello ALL TIKES, sui candelieri minuti, provo l'Expert Advisor. Il mio compito è quello di fare in modo che il programma impieghi meno tempo possibile nell'esecuzione del codice. Ma quello che mi ha sorpreso!!!!

In questo codice, il programma controlla ogni tick e spende 6 secondi per l'esecuzione del codice. 375 millisecondi.

void OnTick()
{
Tick++;
if (Tick!=x3)
{
Print("---------------------КАЖДЫЙ ТИК ----------Tick-----=",Tick);
x3=Tick;
}
}

Mi è sembrato che il programma dovrebbe controllare non ogni tick, ma solo il primo tick di ogni minuto di candela e spendere molto meno tempo nell'esecuzione del codice.

 
void OnTick()
{
Tick++;

if (Minute()!=x3)//&&Seconds()==0

{
Print("---------------------КАЖДЫЙ ТИК ----------Tick-----=",Tick, "  Bid  ",   Bid, "  LoY  ",   LoY);
x3=Minute();
}
}



Ma il programma ha speso 6 sec. 219 msec. Da questo sono arrivato alla conclusione che anche se il codice dice al programma di controllare l'espressione tra parentesi solo una volta ogni 60 secondi, controlla comunque questa espressione ad ogni tick e spende quasi tanto tempo per l'esecuzione come nel codice precedente.
Poi ho cambiato il modello in VALORI VAL IDI e ho eseguito la seconda variante. Ma il programma ha impiegato gli stessi6 secondi per eseguirlo.219 millisecondi.


DOMANDA . È possibile fare il programma in MT4 sul modello ALL TICK, controllare non ogni tick, e solo il primo tick di una nuova candela minuto, che spenderebbe molto meno tempo per l'esecuzione del codice. Se è possibile, quale funzione o costrutto linguistico può essere usato?
Grazie.

 
datetime current, last;

void OnTick()
   {
   current=iTime(symbol,frame,0);
   if(last==current) return;
   last=current;

   } 
 
Aleksei Stepanenko:

Ho cambiato il mio codice per farlo corrispondere al tuo

datetime current, last;
void OnTick()
{
Tick++;
current=iTime( NULL,0,0);
if(last==current) return;
last=current;
{
Print("---------------------КАЖДЫЙ ТИК ----------Tick-----=",Tick);
}
}


Tempo impiegato dal programma per eseguire il codice.... 6 , 235, cioè meno che con il mio codice (6,375), ma non diverse volte meno
. Mi sembra che dovrebbe essere diverse volte meno, perché il programma deve controllare il valore del tick solo una volta all'apertura di ogni candela minuto.

Chi di noi ha torto..... mi sembra.


Motivazione: