Questions des débutants MQL5 MT5 MetaTrader 5 - page 1119

 
pivomoe:
Pouvez-vous me dire comment faire une pause de 1 milliseconde ? Sleep(1) n'est pas une option car il fait une pause de 0 à 50 millisecondes environ. Lors d'un appel avec le paramètre 1.
Dans la documentation, il est écrit qu'en raison de nuances techniques, il est impossible de recevoir une pause inférieure à 16-18 millisecondes. Ceci est lié au matériel, au système d'exploitation, etc.
 
BlackTomcat:
Il est écrit dans la documentation qu'en raison de nuances techniques, il n'est pas réaliste d'obtenir une pause de moins de 16-18 millisecondes. Ceci est lié au matériel, au système d'exploitation, etc.
J'en ai environ 1, parfois 2, 3, en fonction de la charge.
 
Aliaksandr Hryshyn:
J'en ai environ 1, parfois 2, 3, selon la charge de travail.

? google : winds system timer, pour des questions ou des malentendus pourquoi moins de 16ms n'est pas possible, en bref - winds n'est pas un système en temps réel, seul le timer de winds est disponible pour les logiciels.

 
Igor Makanu:

? google : winds system timer, pour des questions ou des malentendus pourquoi moins de 16ms n'est pas possible, en bref - winds n'est pas un système en temps réel, seul le timer de winds est disponible pour les logiciels.

16, c'est beaucoup, mais supportable. Il peut y en avoir plus de 50.
 
pivomoe:
16, c'est beaucoup, mais supportable. Parfois plus de 50.

Encore une fois, le vent n'est pas un système en temps réel, pas assez de ressources OS, votre timer sera retardé mais sera toujours exécuté, utiliser des intervalles de temps logiques, je n'utilise pas moins de 100 ms, et habituellement utiliser 400 ms, même pour un appel dll avec des graphiques et des clics de traitement cases à cocher 400 ms n'est pas du tout perceptible, j'ai vérifié 500 ms - oui il est déjà visible qu'il n'y a pas de réponse

Je ne m'attendrais pas à ce qu'un timer garantisse moins de 100 ms.

 
Moins de 100 ms est une déception. 400 c'est mieux.
 

Pouvez-vous me dire comment afficher un message d'information à l'écran sans attendre que le bouton OK soit pressé ?

Il existe bien sûr une fonction MessageBox, mais elle attend une réaction et arrête l'exécution du programme.

 
pivomoe:

Pouvez-vous me dire comment afficher un message d'information à l'écran sans attendre que le bouton OK soit pressé ?

Il existe bien sûr une fonction MessageBox, mais elle attend une réaction et arrête l'exécution du programme.

Oui, Alerte, je pense. Assurez-vous de lire le dernier paragraphe.

https://www.mql5.com/ru/docs/common/alert

Документация по MQL5: Общие функции / Alert
Документация по MQL5: Общие функции / Alert
  • www.mql5.com
[in]  Любые значения, разделенные запятыми. Для разделения выводимой информации на несколько строк можно использовать символ перевода строки "\n" либо "\r\n". Количество параметров не может превышать 64. Массивы нельзя передавать в функцию Alert(). Массивы должны выводиться поэлементно. Данные типа double выводятся с 8 десятичными цифрами после...
 
BlackTomcat:

Oui, Alerte, je pense. Assurez-vous de lire le dernier paragraphe.

https://www.mql5.com/ru/docs/common/alert

Merci. Juste ce dont j'ai besoin.

 

Bon après-midi. Veuillez me conseiller ou me fournir un lien. Comment organiser un indicateur qui montrerait les changements de solde comme un graphique en chandelier dans une fenêtre séparée. J'ai fait la chose la plus simple, l'indicateur copie les changements de prix, mais maintenant comment remplacer les changements de prix par les changements dans la balance, en d'autres termes, remplacer les tableaux utilisés par l'indicateur.

Si vous avez des idées, merci de les partager, je serai reconnaissant même pour une description générale de l'algorithme, je manque d'expérience, je ne sais pas par où commencer.

//+------------------------------------------------------------------+
//|                                                iBalans_Logic.mq5 |
//|                                              Sergei Voicehovskii |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Sergei Voicehovskii"
#property link      ""
#property version   "1.00"
//------------------------------------------------------------------
#property indicator_separate_window
#property indicator_buffers 6
#property indicator_plots   1
#property indicator_label1  "iBalans_Logic"
#property indicator_type1   DRAW_COLOR_CANDLES
#property indicator_color1  clrGray,clrDodgerBlue,clrSandyBrown
//--- indicator buffers
//--- индикаторный буфер
double opn[],hi[],lo[],cls[],clr[],lot[],type[];
//------------------------------------------------------------------
// Custom indicator initialization function
// Функция инициализации пользовательского индикатора
//------------------------------------------------------------------
int OnInit()
  {
   SetIndexBuffer(0,opn,INDICATOR_DATA);
   SetIndexBuffer(1,hi,INDICATOR_DATA);
   SetIndexBuffer(2,lo,INDICATOR_DATA);
   SetIndexBuffer(3,cls,INDICATOR_DATA);
   SetIndexBuffer(4,clr,INDICATOR_COLOR_INDEX);
   SetIndexBuffer(5,lot,INDICATOR_CALCULATIONS);
   SetIndexBuffer(6,type,INDICATOR_CALCULATIONS);
   IndicatorSetString(INDICATOR_SHORTNAME,"iBalans_Logic ("")");
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function    
//| Функция итерации пользовательского индикатора                          |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
//---
Comment("-------------------------", 
        "\n rates_total        = ",rates_total,
        "\n prev_calculated = ",prev_calculated,
        "\n ---------------------- "
       ); 
//---
int i=(int)MathMax(prev_calculated-1,0);

   for(;i<rates_total && !_StopFlag; i++)
     {
     
       opn[i] = open[i];
       cls[i] = close[i];
        hi[i] = high[i];
        lo[i] = low[i];
       clr[i] = (cls[i]>opn[i])?1:(cls[i]<opn[i])?2:0;
     }
//--- return value of prev_calculated for next call
//--- возвращаемое значение соответствует моменту prev_calculated для следующего вызова
return(rates_total);
}
//+------------------------------------------------------------------+

https://charts.mql5.com/22/192/eurusd-m1-alpari-international-2.png