Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1283

 
MakarFX:

Comment puis-je déterminer la charge d'une EA sur le serveur?

A chaque tick, il demande Ask, Bid, Spread, TICKVALUE.

Si je comprends bien, le profileur sera utile. Mais nous devons comprendre que la charge n'est pas la même que la charge. Il s'agit du temps consacré à l'exécution des requêtes et à la charge du CPU. S'il y a un conseiller expert par symbole sur une fenêtre, c'est OK. Et s'il y a 120 fenêtres à 40 symboles et ainsi de suite dans 10 terminaux d'une même machine, celle-ci va probablement geler).

 
Aleksei Stepanenko:

Je ne sais pas, tu pourrais l'essayer en combat. Ou peut-être comme optionINT_MAX?


Oui, c'est comme ça que je calcule :

Et d'un rendez-vous à l'autre, week-ends compris, c'est autre chose.

Points par seconde, oui c'est lisible. Et sur les TF inférieures, les vitesses sont plus élevées et la portée est plus faible.

_     ;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:

Si je comprends bien, un profileur sera utile. Mais vous devez comprendre que la charge n'est pas la même chose que la charge. Il s'agit du temps consacré à l'exécution des requêtes ou de la charge CPU de la machine. S'il y a un conseiller expert par symbole sur une fenêtre, c'est OK. Et s'il y a 120 fenêtres à 40 symboles et ainsi de suite dans 10 terminaux d'une même machine, celle-ci risque de se bloquer).

Nous avons déjà discuté du fait que si les données du terminal de MQL4 doivent être accédées plusieurs fois, alors OrderSelecthttps://www.mql5.com/ru/forum/342989#comment_16743716.

de la même manière, vous pouvez tester l'obtention du prix actuel - je pense que vous pouvez également l'utiliser 100500 fois par tick, puisque la sortie sera augmentée des millions de fois par seconde


plus il y a de symboles dans la fenêtre de surveillance du marché, plus la charge du terminal sera importante, et respectivement, si vous appelez des données à partir d'un grand nombre de symboles différents, vous obtiendrez également des décalages.

c'est-à-dire que si vous utilisez le terminal de manière raisonnable, rien ne se figera - dans la fenêtre de surveillance du marché, il y a dix symboles que vous utilisez


je n'ai pas vérifié combien de graphiques vous pouvez ouvrir en même temps, mais je pense que si vous limitez l'historique à 1000 barres, alors je pense que le terminal ouvrira probablement deux douzaines de fenêtres de graphiques sans aucun problème.

 

Bonne journée à tous !

J'ai commencé à étudier le mql5 (après le mql4). Il existe un groupe de fonctions dans mql4 appelé date et heure. Il y a le même groupe en cinq. Mais ce groupe de fonctions à cinq est beaucoup moins important qu'à quatre. Il n'y a pas de fonctions dans five qui renvoient les valeurs de l'heure, des minutes ... et d'autres fonctions.
Par exemple, en quatrième position, il y avait la fonction Hour(), qui renvoyait la valeur de l'heure courante. Le cinq n'a pas cette fonction.
QUESTION

Quelles fonctions de five sont analogues à Hour() et d'autres fonctions du groupe de fonctions Date et heure de four qui ne sont pas dans le groupe similaire de five.

Merci pour votre aide.

 
Igor Makanu:

Nous avons déjà discuté de la nécessité d'accéder de manière répétée aux données du terminal à partir de MQL4, puis de OrderSelecthttps://www.mql5.com/ru/forum/342989#comment_16743716.

je pense qu'il est possible de l'utiliser aussi 100500 fois par tick, car la sortie sera augmentée des millions de fois par seconde


plus il y a de symboles dans la fenêtre de surveillance du marché, plus la charge du terminal sera importante, et respectivement, si vous appelez des données à partir d'un grand nombre de symboles différents, vous obtiendrez également des décalages.

c'est-à-dire que si vous utilisez le terminal de manière raisonnable, rien ne se figera - dans la fenêtre de surveillance du marché, il y a dix symboles que vous utilisez


je n'ai pas vérifié le nombre de graphiques que vous pouvez ouvrir en même temps, mais je pense que si vous limitez l'historique à 1000 barres, alors le terminal ouvrira probablement deux douzaines de fenêtres de graphiques sans aucun problème.

(Merci pour le rappel))) Je veux dire qu'avec des demandes raisonnables, tout devrait fonctionner, c'est-à-dire des demandes peu coûteuses (en termes de temps d'exécution et de charge CPU)).

 
ANDREY:

Bonne journée à tous !

J'ai commencé à étudier le mql5 (après le mql4). Il existe un groupe de fonctions dans mql4 appelé date et heure. Il y a le même groupe en cinq. Mais ce groupe de fonctions à cinq est beaucoup moins important qu'à quatre. Il n'y a pas de fonctions dans five qui renvoient les valeurs de l'heure, des minutes ... et d'autres fonctions.
Par exemple, en quatrième position, il y avait la fonction Hour(), qui renvoyait la valeur de l'heure courante. Le cinq n'a pas cette fonction.
QUESTION

Quelles fonctions de five sont analogues à Hour() et d'autres fonctions du groupe de fonctions Date et heure de four qui ne sont pas dans le groupe similaire de five.

Merci pour votre aide.

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

deuxième version de l'appel de fonction

datetime  TimeCurrent(
   MqlDateTime&  dt_struct      // переменная типа структуры
   );
en général, c'est https://www.mql5.com/ru/docs/dateandtime/timetostruct
 
Un conseil pour un 4k. Comment retourner les coordonnées du clic de la souris sur le graphique, de préférence par numéro de barre. Je ne peux trouver que les coordonnées où le script a été lancé.
 
Valeriy Yastremskiy:

Merci, cela me rappelle))) Oui, beaucoup de choses que je n'avais pas comprises à l'époque) Je voulais juste dire qu'avec des requêtes raisonnables, tout devrait fonctionner. Ce sont des requêtes à faible coût (temps d'exécution et charge CPU).

oui

Si le code est "sale", vous pouvez foutre en l'air n'importe quel système.

et s'il est utilisé raisonnablement, où l'accès au prix Ask/Bid se produit même quelques dizaines de fois par tick, alors il n'affectera pas la performance de l'EA (maximum 1-2%).

c'est-à-dire que la logique d'utilisation des ressources (ou des appels de fonctions système/environnement du terminal) devrait être la suivante : si l'algorithme implique d'accéder aux prix Ask/Bid plusieurs milliers de fois par tick, alors..... Vous devriez probablement reconsidérer l'algorithme lui-même, ou alternativement, vous souvenir des valeurs deAsk/Bid une fois avant de calculer l'algorithme.




Valeriy Yastremskiy:
Veuillez me conseiller pour 4k. Coordonnées du clic de la souris sur un graphique comment revenir, de préférence par un numéro de barre. Trouvez seulement les coordonnées où ils ont jeté le script.

recherchez probablementChartXYToTimePrice https://docs.mql4.com/ru/chart_operations/chartxytotimeprice

seulement discutéhttps://www.mql5.com/ru/forum/353726

Voici un autre fil de discussion sur les clicshttps://www.mql5.com/ru/forum/344607

 
Igor Makanu:

si l'algorithme implique de se référer aux prix Ask/Bid plusieurs milliers de fois par tick, alors..... Vous devriez probablement reconsidérer l'algorithme lui-même, ou bien vous souvenir des valeurs Ask/Bid une fois avant de calculer l'algorithme.




peut-être chercherChartXYToTimePrice https://docs.mql4.com/ru/chart_operations/chartxytotimeprice

seulement discutéhttps://www.mql5.com/ru/forum/353726

Voici un autre fil de discussion sur les clicshttps://www.mql5.com/ru/forum/344607

En général, si nous avons obtenu les prix au tick, nous pouvons travailler avec eux jusqu'à la fin de OnTick, si ce n'est pas critique. Et des limiteurs pour éviter les dérapages).

Je voulais cliquer sur un chandelier et écrire sa valeur dans un fichier.

CHARTEVENT_MOUSE_MOVE

 
Valeriy Yastremskiy:

En général, si nous avons obtenu les prix au tick, nous pouvons travailler avec eux jusqu'à la fin du OnTick si ce n'est pas critique. Et des limiteurs pour aider contre le glissement)

Je veux cliquer sur une bougie et enregistrer sa valeur dans un fichier.

CHARTEVENT_MOUSE_MOVE

C'est peut-être ainsi que vous voulez déterminer le prix et l'heure de la barre :

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);
      }
   }
}
ou plutôt ce sont les coordonnées du clic de la souris dans les valeurs temps + prix sur le graphique, la barre doit être définie viaiBarShift()
Raison: