Ваши вопросы по языку MQL4

star603

Новичок форума
void OnTick()
{
if(f_IsNewBar()==true)
{
for(int i= 1; i<400; i++)
{
if(candle.Dodgi(i)==1)
Print("i_1=",i," ","data=",Time," ",Close," ","body=",candle.Candle_body(i));
Comment(candle.Candle_body(i));
}
}
}

Почему выводяться на печать свечи больше 10 телом
 

Вложения

  • S3.mq4
    19,1 КБ · Просмотры: 2

star603

Новичок форума
void OnTick()
{
if(f_IsNewBar()==true)
{
for(int i= 1; i<10; i++)
if(candle.Candle_body(i)<10)
Print("i=",i," ",candle.Dodgi(i)," ",candle.Candle_body(i)," ",Time);
}
}
Сейчас работает как надо только вот на каждом тике. Не знаю почему так.
 
Последнее редактирование модератором:

ИванМН

Местный знаток
Не надо ничего искать, всё найдено до нас. Объявляете статическую datetime-переменную и на каждом тике сравниваете её с Time[0]. Обновилась - встречайте новый бар. Присваиваете ей новое значение Time[0].
 

star603

Новичок форума
Не надо ничего искать, всё найдено до нас. Объявляете статическую datetime-переменную и на каждом тике сравниваете её с Time[0]. Обновилась - встречайте новый бар. Присваиваете ей новое значение Time[0].

Как я ей присвою если она не динамическая а статическая.

PHP:
Локальные переменные, объявленные с ключевым словом static, сохраняют свои значения в течение всего времени существования функции. При каждом следующем вызове функции такие локальные переменные содержат те значения, которые они имели при предыдущем вызове.

Таким образом если я правильно понимаю один раз присвоив ей значения потом не изменить ее. (При каждом следующем вызове функции такие локальные переменные содержат те значения, которые они имели при предыдущем вызове.)
 

AlexeyVik

Программист mql4 mql5
Как я ей присвою если она не динамическая а статическая.

PHP:
Локальные переменные, объявленные с ключевым словом static, сохраняют свои значения в течение всего времени существования функции. При каждом следующем вызове функции такие локальные переменные содержат те значения, которые они имели при предыдущем вызове.

Таким образом если я правильно понимаю один раз присвоив ей значения потом не изменить ее. (При каждом следующем вызове функции такие локальные переменные содержат те значения, которые они имели при предыдущем вызове.)
Не верь глазам своим. Верь моей совести.
Статичная переменная отличается от обычной тем, что обычная переменная инициализируется при каждом вызове функции, а статичная только один раз. Изменение значения переменной не отличается ничем.
Не путайте статичные переменные с константными.
 

star603

Новичок форума
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
if(New_bar()==true)
{
for(int i=1; i<12; i++)
{
Print(i);
}
}
}
//+------------------------------------------------------------------+
//| Новый бар |
//+------------------------------------------------------------------+
bool New_bar()
{
bool n_bar=false;
static datetime Data = D'01.01.2004';
if(Data != Time[0])
n_bar=true;
else
n_bar=false;
return(n_bar);
}
//+------------------------------------------------------------------+
 

ИванМН

Местный знаток
C-подобный:
bool New_bar()
{
   static datetime Data;
   if (Data < Time[0])
   {
      Data = Time[0];
      return true;
   }
   return false;
}
 
Последнее редактирование:
Верх