Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1119

 
pivomoe:
Potete dirmi come fare una pausa di 1 millisecondo? Sleep(1) non è un'opzione perché fa una pausa da 0 a 50 millisecondi circa. Quando si chiama con il parametro 1.
Nella documentazione è scritto che, in relazione alle sfumature tecniche, ricevere una pausa inferiore a 16-18 millisecondi non è reale. Questo è legato all'hardware, al sistema operativo, ecc.
 
BlackTomcat:
È scritto nella documentazione che a causa di sfumature tecniche non è realistico ottenere una pausa inferiore a 16-18 millisecondi. Questo è legato all'hardware, al sistema operativo, ecc.
Ne ho circa 1, a volte 2, 3, a seconda del carico.
 
Aliaksandr Hryshyn:
Ne ho circa 1, a volte 2, 3, a seconda del carico di lavoro.

google: winds system timer, per domande o incomprensioni perché meno di 16ms non è possibile, in breve - winds non è un sistema in tempo reale, solo il timer da winds è disponibile al software

 
Igor Makanu:

google: winds system timer, per domande o incomprensioni perché meno di 16ms non è possibile, in breve - winds non è un sistema in tempo reale, solo il timer da winds è disponibile al software

16 è molto, ma sopportabile. Può essere più di 50.
 
pivomoe:
16 è molto, ma sopportabile. A volte più di 50.

Ancora una volta, il vento non è un sistema in tempo reale, non abbastanza risorse OS, il vostro timer sarà ritardato ma sarà ancora eseguito, utilizzare intervalli di tempo logici, io non uso meno di 100 ms, e di solito uso 400 ms, anche per una chiamata dll con grafica e l'elaborazione clicca caselle di controllo 400 ms non è evidente a tutti, controllato 500 ms - sì è già visibile che nessuna risposta

imho, non mi aspetterei che meno di 100 ms siano garantiti da un timer

 
Meno di 100 ms è un peccato. 400 è meglio.
 

Potete dirmi come visualizzare un messaggio informativo sullo schermo senza aspettare che venga premuto il pulsante OK?

C'è naturalmente una funzione MessageBox, ma aspetta una reazione e ferma l'esecuzione del programma.

 
pivomoe:

Potete dirmi come visualizzare un messaggio informativo sullo schermo senza aspettare che venga premuto il pulsante OK?

C'è naturalmente una funzione MessageBox, ma aspetta una reazione e ferma l'esecuzione del programma.

Sì Allarme, credo. Assicuratevi di leggere l'ultimo paragrafo.

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

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

Sì Allarme, credo. Assicuratevi di leggere l'ultimo paragrafo.

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

Grazie. Proprio quello di cui ho bisogno.

 

Buon pomeriggio. Per favore, consigliatemi o fornitemi un link. Come organizzare un indicatore che mostri i cambiamenti di equilibrio come un grafico a candele in una finestra separata. Ho fatto la cosa più semplice, l'indicatore copia le variazioni di prezzo, ma ora come sostituire le variazioni di prezzo con le variazioni del saldo, in altre parole, sostituire gli array utilizzati dall'indicatore.

Se avete qualche idea, per favore condividetela, vi sarò grato anche per una descrizione generale dell'algoritmo, non ho esperienza, non so da dove cominciare.

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