初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1119

 
pivomoe:
你能告诉我如何使暂停时间为1毫秒吗? Sleep(1)不是一个选项,因为它的暂停时间为0到50毫秒左右。当用参数1调用时。
文件中写道,由于技术上的细微差别,接收到小于16-18毫秒的停顿是不真实的。这与硬件、操作系统等有关。
 
BlackTomcat:
文件中写道,由于技术上的细微差别,要获得小于16-18毫秒的停顿是不现实的。这与硬件、操作系统等有关。
我大约有1个,有时2,3个,取决于负载。
 
Aliaksandr Hryshyn:
我大约有1个,有时2、3个,取决于工作量。

? "谷歌:Winds系统的计时器,对于问题或误解,为什么小于16ms是不可能的,简而言之--Winds不是一个实时系统,只有Winds的计时器可用于软件。

 
Igor Makanu:

? "谷歌:Winds系统的计时器,对于问题或误解,为什么小于16ms是不可能的,简而言之--Winds不是一个实时系统,只有Winds的计时器可用于软件。

16个是很多,但可以承受。它可以超过50。
 
pivomoe:
16个是很多,但可以承受。有时超过50个。

再次,风不是一个实时系统,没有足够的资源操作系统,你的定时器将被延迟,但仍然会被执行,使用逻辑时间间隔,我不使用小于100毫秒,通常使用400毫秒,即使对于一个带有图形和处理点击复选框的调用dll,400毫秒根本不引人注目,选中500毫秒--是的,已经可以看出没有反应了

我认为,我不会指望计时器能保证少于100毫秒。

 
小于100毫秒是一个无奈之举。400是更好的。
 

你能告诉我如何在屏幕上显示信息信息,而不需要等着按下确定按钮吗?

当然也有一个MessageBox函数,但它会等待反应并停止程序的执行

 
pivomoe:

你能告诉我如何在屏幕上显示信息信息,而不需要等着按下确定按钮吗?

当然也有一个MessageBox函数,但它会等待反应并停止程序的执行

是的,警报,我想。请务必阅读最后一段。

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

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

是的,警报,我想。请务必阅读最后一段。

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

谢谢你。正是我所需要的。

 

下午好。请告知或向我提供一个链接。如何组织一个指标,在一个单独的窗口中以蜡烛图的形式显示余额变化。我已经做了最简单的事情,指标复制了价格的变化,但现在如何用余额的变化取代价格的变化,换句话说,取代指标使用的数组。

如果你有什么想法,请分享出来,即使是对算法的一般描述,我也会很感激,我缺乏经验,不知道从哪里开始。

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