Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1119

 
pivomoe:
Können Sie mir sagen, wie man eine Pause von 1 Millisekunde macht? Sleep(1) ist keine Option, weil es von 0 bis 50 Millisekunden oder so pausiert. Beim Aufruf mit Parameter 1.
In der Dokumentation heißt es, dass in Verbindung mit technischen Nuancen eine Pause von weniger als 16-18 Millisekunden nicht realistisch ist. Dies hängt mit der Hardware, dem Betriebssystem usw. zusammen.
 
BlackTomcat:
In der Dokumentation heißt es, dass es aufgrund technischer Feinheiten nicht realistisch ist, eine Pause von weniger als 16-18 Millisekunden zu erreichen. Dies hängt mit der Hardware, dem Betriebssystem usw. zusammen.
Ich habe etwa 1, manchmal 2, 3, je nach Belastung.
 
Aliaksandr Hryshyn:
Ich habe etwa 1, manchmal 2, 3, je nach Arbeitsaufkommen.

? google: winds system timer, für Fragen oder Missverständnisse, warum weniger als 16ms nicht möglich ist, kurz gesagt - winds ist kein Echtzeitsystem, nur der Timer von winds ist für Software verfügbar

 
Igor Makanu:

? google: winds system timer, für Fragen oder Missverständnisse, warum weniger als 16ms nicht möglich ist, kurz gesagt - winds ist kein Echtzeitsystem, nur der Timer von winds ist für Software verfügbar

16 ist viel, aber erträglich. Es können mehr als 50 sein.
 
pivomoe:
16 ist viel, aber erträglich. Manchmal mehr als 50.

Wieder einmal ist der Wind nicht ein Echtzeit-System, nicht genug Ressourcen OS, wird Ihr Timer verzögert werden, aber immer noch ausgeführt werden, verwenden Sie logische Zeitintervalle, ich benutze nicht weniger als 100 ms, und in der Regel verwenden 400 ms, auch für einen Anruf dll mit Grafiken und Verarbeitung klickt Checkboxen 400 ms ist überhaupt nicht bemerkbar, überprüft 500 ms - ja, es ist schon sichtbar, dass keine Antwort

Imho würde ich nicht erwarten, dass weniger als 100 ms von einem Timer garantiert werden.

 
Weniger als 100 ms sind eine Katastrophe. 400 ist besser.
 

Können Sie mir sagen, wie ich eine Informationsmeldung auf dem Bildschirm anzeigen kann, ohne darauf zu warten, dass die OK-Taste gedrückt wird?

Natürlich gibt es eine MessageBox-Funktion, aber sie wartet auf eine Reaktion und stoppt die Ausführung des Programms.

 
pivomoe:

Können Sie mir sagen, wie ich eine Informationsmeldung auf dem Bildschirm anzeigen kann, ohne darauf zu warten, dass die OK-Taste gedrückt wird?

Natürlich gibt es eine MessageBox-Funktion, aber sie wartet auf eine Reaktion und stoppt die Ausführung des Programms.

Ja, Alert, denke ich. Bitte lesen Sie unbedingt den letzten Absatz.

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

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

Ja, Alert, denke ich. Bitte lesen Sie unbedingt den letzten Absatz.

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

Ich danke Ihnen. Genau das, was ich brauche.

 

Guten Tag. Bitte beraten Sie mich oder stellen Sie mir einen Link zur Verfügung. Wie kann man einen Indikator organisieren, der die Veränderungen des Saldos als Candlestick-Chart in einem separaten Fenster anzeigt? Ich habe das Einfachste getan, der Indikator kopiert die Preisänderungen, aber wie kann man nun die Preisänderungen durch die Änderungen in der Bilanz ersetzen, mit anderen Worten, die vom Indikator verwendeten Arrays ersetzen.

Wenn Sie irgendwelche Ideen haben, teilen Sie sie bitte, ich werde auch für eine allgemeine Beschreibung des Algorithmus dankbar sein, mir fehlt Erfahrung, ich weiß nicht, wo ich anfangen soll.

//+------------------------------------------------------------------+
//|                                                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

Grund der Beschwerde: