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

 
MakarFX:

Come posso determinare quanto carico un EA mette sul server?

Ad ogni tick chiede Ask, Bid, Spread, TICKVALUE

Se ho capito bene, il profiler aiuterà. Ma dobbiamo capire che il carico non è la stessa cosa del carico. È il tempo speso per l'esecuzione delle richieste e il carico della CPU. Se c'è un Expert Advisor per simbolo su una finestra, va bene. E se ci sono 120 finestre a 40 simboli e così in 10 terminali in una macchina, la macchina probabilmente si bloccherà).

 
Aleksei Stepanenko:

Non so, si potrebbe provare in battaglia. O forse come opzioneINT_MAX?


Sì, è così che calcolo:

E da una data all'altra, compresi i fine settimana, è un'altra cosa.

Punti al secondo, sì, è leggibile. E su TF più bassi le velocità sono più alte e la portata è minore.

_     ;qstr7_41;_;EURUSD;_TF_;1; Имя файла ;QstrV.csv; Локальное время ;2020.10.23 15:34:25
2020.10.23 14:34:20; [i]= ;13; VTrend[i] = ;25; SumVTrend= ;97; AbsVTrend= ;341; pos= ;8;SumVTrendPos= ;339; neg= ;7; SumVTrendNeg= ;-345
2020.10.23 14:34:20; [i]= ;2; VTrend1[i] = ;272; SumVTrend1= ;17; AbsVTrend1= ;137; pos1= ;2;SumVTrendPos1= ;-84; neg1= ;2; SumVTrendNeg1= ;-84
_     ;qstr7_41;_;EURUSD;_TF_;5; Имя файла ;QstrV.csv; Локальное время ;2020.10.23 15:34:36;
 2020.10.23 14:34:31; [i]= ;15; VTrend[i] = ;414; SumVTrend= ;47; AbsVTrend= ;124; pos= ;9;SumVTrendPos= ;160; neg= ;8; SumVTrendNeg= ;-82
2020.10.23 14:34:31; [i]= ;2; VTrend1[i] = ;-32; SumVTrend1= ;63; AbsVTrend1= ;83; pos1= ;2;SumVTrendPos1= ;37; neg1= ;2; SumVTrendNeg1= ;-32
_     ;qstr7_41;_;EURUSD;_TF_;1440; Имя файла ;QstrV.csv; Локальное время ;2020.10.26 15:42:42;
2020.10.26 14:42:42; [i]= ;14; VTrend[i] = ;-26; SumVTrend= ;3; AbsVTrend= ;9; pos= ;9;SumVTrendPos= ;9; neg= ;7; SumVTrendNeg= ;-11
2020.10.26 14:42:42; [i]= ;1; VTrend1[i] = ;-7; SumVTrend1= ;-7; AbsVTrend1= ;7; pos1= ;1;SumVTrendPos1= ;0; neg1= ;2; SumVTrendNeg1= ;-7
 
Valeriy Yastremskiy:

Se ho capito bene, un profiler vi aiuterà. Ma dovete capire che il carico non è la stessa cosa del carico. Questo è il tempo speso per l'esecuzione della query o il carico della CPU sulla macchina. Se c'è un Expert Advisor per simbolo su una finestra, va bene. E se ci sono 120 finestre a 40 simboli e così in 10 terminali in una macchina, la macchina potrebbe bloccarsi).

Abbiamo già discusso se i dati del terminale da MQL4 devono essere accessibili molte volte, allora OrderSelecthttps://www.mql5.com/ru/forum/342989#comment_16743716

allo stesso modo si può provare a ottenere il prezzo corrente - penso che si possa usare anche 100500 volte per tick, dato che l'output sarà aumentato milioni di volte al secondo


più simboli ci sono nella finestra dell'orologio di mercato, più grande sarà il carico sul terminale stesso, e rispettivamente, se chiamate i dati da molti simboli diversi, allora avrete anche dei ritardi

Cioè, se usate il terminale in modo sensato, non si blocca niente - nella finestra di osservazione del mercato ci sono dieci simboli che usate


Non ho controllato quanti grafici si possono aprire allo stesso tempo, ma penso che se si limita la storia a 1000 barre, allora penso che il terminale probabilmente aprirà un paio di dozzine di finestre di grafici senza problemi

 

Buona giornata a tutti!

Ho iniziato a studiare mql5 (dopo mql4). C'è un gruppo di funzioni in mql4 chiamato data e ora. C'è lo stesso gruppo in cinque. Ma questo gruppo di funzioni in cinque è molto meno che in quattro. Non ci sono funzioni in cinque che restituiscono i valori dell'ora corrente, dei minuti... e altre funzioni.
Per esempio, in quarta c'era la funzione Hour(), che restituiva il valore dell'ora corrente. Il cinque non ha questa funzione.
DOMANDA

Quali funzioni in cinque sono analoghe a Hour() e altre funzioni del gruppo di funzioni Date and Time di quattro che non sono nel gruppo simile in cinque.

Grazie per il vostro aiuto.

 
Igor Makanu:

Abbiamo già discusso se sia necessario accedere ripetutamente ai dati del terminale da MQL4, quindi OrderSelecthttps://www.mql5.com/ru/forum/342989#comment_16743716

Penso che sia possibile usarlo anche 100500 volte per tick, perché l'output sarà aumentato di milioni di volte al secondo


più simboli ci sono nella finestra dell'orologio di mercato, più grande sarà il carico sul terminale stesso, e rispettivamente, se chiamate i dati da molti simboli diversi, allora avrete anche dei ritardi

Cioè, se usate il terminale in modo sensato, non si blocca niente - nella finestra di osservazione del mercato ci sono dieci simboli che usate


Non ho controllato quanti grafici si possono aprire allo stesso tempo, ma penso che se si limita la storia a 1000 barre, allora il terminale probabilmente aprirà un paio di dozzine di finestre di grafici senza problemi

(Grazie per il promemoria)) Voglio dire che con richieste ragionevoli tutto dovrebbe funzionare, cioè richieste a basso costo (in termini di tempo di esecuzione e di carico della CPU).

 
ANDREY:

Buona giornata a tutti!

Ho iniziato a studiare mql5 (dopo mql4). C'è un gruppo di funzioni in mql4 chiamato data e ora. C'è lo stesso gruppo in cinque. Ma questo gruppo di funzioni in cinque è molto meno che in quattro. Non ci sono funzioni in cinque che restituiscono i valori dell'ora corrente, dei minuti... e altre funzioni.
Per esempio, in quarta c'era la funzione Hour(), che restituiva il valore dell'ora corrente. Il cinque non ha questa funzione.
DOMANDA

Quali funzioni in cinque sono analoghe a Hour() e altre funzioni del gruppo di funzioni Date and Time di quattro che non sono nel gruppo simile in cinque.

Grazie per il vostro aiuto.

utilizzarehttps://www.mql5.com/ru/docs/dateandtime/timecurrent

seconda versione della chiamata di funzione

datetime  TimeCurrent(
   MqlDateTime&  dt_struct      // переменная типа структуры
   );
in generale, èhttps://www.mql5.com/ru/docs/dateandtime/timetostruct
 
Un consiglio per un 4k. Come restituire le coordinate del clic del mouse sul grafico, preferibilmente per numero di barra. Posso solo trovare le coordinate dove lo script è stato lanciato.
 
Valeriy Yastremskiy:

Grazie, questo mi ricorda))) Sì, un sacco di cose che non ho capito al momento) Volevo solo dire che con richieste ragionevoli tutto dovrebbe funzionare. Queste sono richieste a basso costo (tempo di esecuzione e carico della CPU).

Se il codice è "sporco", si può rovinare qualsiasi sistema

e se è ragionevolmente utilizzato, dove l'accesso al prezzo Ask/Bid si verifica anche poche decine di volte per tick, allora non influenzerà le prestazioni di EA (massimo 1-2%)

cioè la logica di utilizzo delle risorse (o chiamate di funzioni di sistema / ambiente del terminale) dovrebbe essere, se l'algoritmo implica l'accesso ai prezzi Ask/Bid diverse migliaia di volte per tick, allora.... molto probabilmente si dovrebbe riconsiderare l'algoritmo stesso, o in alternativa, ricordare i valori diAsk/Bid una volta prima di calcolare l'algoritmo




Valeriy Yastremskiy:
Si prega di consigliare per 4k. Coordinate del clic del mouse su un grafico come tornare, preferibilmente con un numero di barra. Trova solo le coordinate dove hanno lanciato lo script.

probabilmente cercareChartXYToTimePrice https://docs.mql4.com/ru/chart_operations/chartxytotimeprice

solo discussohttps://www.mql5.com/ru/forum/353726

Qui c'è un altro thread che discute anche dei clichttps://www.mql5.com/ru/forum/344607

 
Igor Makanu:

se l'algoritmo implica il riferimento ai prezzi Ask/Bid diverse migliaia di volte per tick, allora.... molto probabilmente dovreste riconsiderare l'algoritmo stesso, o in alternativa, ricordare i valori Ask/Bid una volta prima di calcolare l'algoritmo




forse cercareChartXYToTimePrice https://docs.mql4.com/ru/chart_operations/chartxytotimeprice

solo discussohttps://www.mql5.com/ru/forum/353726

Qui c'è un altro thread che discute anche dei clichttps://www.mql5.com/ru/forum/344607

In generale, se abbiamo i prezzi sul tick, possiamo lavorare con loro fino alla fine di OnTick, se non è critico. E limitatori per aiutare a prevenire lo slittamento).

Volevo cliccare su una candela e scrivere il suo valore in un file.

MOVIMENTO DEL MOUSE

 
Valeriy Yastremskiy:

In generale, se abbiamo i prezzi sul tick, possiamo lavorare con loro fino alla fine dell'OnTick, se non è critico. E limitatori per aiutare contro lo slittamento)

Voglio cliccare su una candela e salvare il suo valore in un file.

MOVIMENTO DEL MOUSE

Forse è così che vuoi determinare il prezzo della barra e il tempo:

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
   if(id == CHARTEVENT_CLICK)
   {
      int window = 0;
      datetime time;
      double   price;
      if(ChartXYToTimePrice(0, (int)lparam, (int)dparam, window, time, price))
      {
         Print("time = ", time, " ,price = ", price);
      }
   }
}
ovvero queste sono le coordinate del clic del mouse nei valori tempo + prezzo sul grafico, la barra dovrebbe essere definita tramiteiBarShift()
Motivazione: