Вопросы от начинающих 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, в зависимости от загруженности.

? гугл: системный таймер виндовс, чтобы вопросы или недопонимание почему меньше 16 мс нельзя, если кратко - винда не есть система реального времени, программам доступен только таймер от винды

 
Igor Makanu:

? гугл: системный таймер виндовс, чтобы вопросы или недопонимание почему меньше 16 мс нельзя, если кратко - винда не есть система реального времени, программам доступен только таймер от винды

16 это много, но терпимо. Бывает больше 50.
 
pivomoe:
16 это много, но терпимо. Бывает больше 50.

еще раз - винда не есть система реального времени, не хватает ресурсов ОС, Ваш таймер будет отложен, но все равно будет выполнен, используйте логичные временные интервалы, я меньше 100 мс не пользуюсь, да и обычно 400 мс использую, даже для вызова dll с графикой и с обработкой кликов кнопок чекбоксов 400 мс вообще не заметно, проверял 500 мс - да уже видно что нет отклика

имхо, я бы не надеялся меньше 100 мс гарантированно получать от таймера

 
Меньше 100 мс западло. Лучше 400. 
 

Подскажите, как вывести информационное сообщение на экран и не ждать нажатия кнопки OK ?

Есть конечно функция MessageBox, но она ждет реакции и останавливает выполнение программы.

 
pivomoe:

Подскажите, как вывести информационное сообщение на экран и не ждать нажатия кнопки OK ?

Есть конечно функция MessageBox, но она ждет реакции и останавливает выполнение программы.

Да Alert, вроде. Только обязательно читайте последний абзац.

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

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

Да Alert, вроде. Только обязательно читайте последний абзац.

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

Причина обращения: