Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1119

 
pivomoe:
Pode dizer-me como fazer uma pausa de 1 milissegundo? Dormir(1) não é uma opção porque faz uma pausa de 0 a 50 milissegundos ou assim. Ao telefonar com o parâmetro 1.
Na documentação está escrito, que em relação a nuances técnicas receber uma pausa de menos de 16-18 milissegundos não é real. Isto está relacionado com hardware, SO, etc.
 
BlackTomcat:
Está escrito na documentação que, devido a nuances técnicas, não é realista obter uma pausa de menos de 16-18 milissegundos. Isto está relacionado com hardware, SO, etc.
Tenho cerca de 1, por vezes 2,3, dependendo da carga.
 
Aliaksandr Hryshyn:
Tenho cerca de 1, por vezes 2,3, dependendo da carga de trabalho.

? google: temporizador do sistema de ventos, para perguntas ou mal-entendidos porque é que menos de 16ms não é possível, em suma - ventos não é um sistema em tempo real, apenas o temporizador dos ventos está disponível para o software

 
Igor Makanu:

? google: temporizador do sistema de ventos, para perguntas ou mal-entendidos porque é que menos de 16ms não é possível, em suma - ventos não é um sistema em tempo real, apenas o temporizador dos ventos está disponível para o software

16 é muito, mas suportável. Pode ser mais de 50.
 
pivomoe:
16 é muito, mas suportável. Por vezes mais de 50.

Mais uma vez, o vento não é um sistema em tempo real, o seu SO não tem recursos suficientes, o seu temporizador será atrasado mas será executado, usarei intervalos de tempo lógicos, não uso menos de 100 ms, e normalmente uso 400 ms, mesmo para uma chamada dll com gráficos e processamento de cliques caixas de verificação 400 ms não é perceptível de todo, verifiquei 500 ms - sim já é visível que não há resposta

imho, eu não esperaria menos de 100 ms de garantia de um temporizador

 
Menos de 100 ms é um aborrecimento. 400 é melhor.
 

Pode dizer-me como exibir uma mensagem de informação no ecrã sem esperar que o botão OK seja premido?

Claro que existe uma função MessageBox, mas esta espera por uma reacção e pára a execução do programa.

 
pivomoe:

Pode dizer-me como exibir uma mensagem de informação no ecrã sem esperar que o botão OK seja premido?

Claro que existe uma função MessageBox, mas esta espera por uma reacção e pára a execução do programa.

Sim Alerta, penso eu. Não se esqueça de ler o último parágrafo.

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

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

Sim Alerta, penso eu. Não se esqueça de ler o último parágrafo.

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

Obrigado. Exactamente o que eu preciso.

 

Boa tarde. Por favor, aconselhar-me ou fornecer-me um link. Como organizar um indicador que mostraria as alterações de equilíbrio como um gráfico de velas numa janela separada. Fiz a coisa mais simples, o indicador copia as alterações de preço, mas agora como substituir as alterações de preço pelas alterações no saldo, por outras palavras, para substituir as matrizes utilizadas pelo indicador.

Se tiver alguma ideia, por favor partilhe-a, ficarei grato mesmo por uma descrição geral do algoritmo, falta-me experiência, não sei por onde começar.

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

Razão: