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

Раздел: Язык программирования MQL4
Автор темы: chocolate
Создана: 2011-11-07 10:37
Ответов: 9576 | Просмотров: 1107227
Страница 473 из 479
Источник: https://forexsystemru.com/threads/65289/page-473

---

## ИванМН — 2024-09-05 21:59

> Цитата (star603):
> mqh

Не надо.

## star603 — 2024-09-06 09:22

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 телом*

## star603 — 2024-09-06 14:24

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*);      
     }
  }
Сейчас работает как надо только вот на каждом тике. Не знаю почему так.*

## ИванМН — 2024-09-06 22:22

Функция f_IsNewBar() работает некорректно - как вариант.

## star603 — 2024-09-07 14:23

> Цитата (ИванМН):
> Функция f_IsNewBar() работает некорректно - как вариант.

попробую написать свое или поискать что то другое

## ИванМН — 2024-09-07 23:11

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

## star603 — 2024-09-08 21:17

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

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

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

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

## AlexeyVik — 2024-09-08 22:19

> Цитата (star603):
> Как я ей присвою если она не динамическая а статическая.
>
> 
> Локальные переменные, объявленные с ключевым словом static, сохраняют свои значения в течение всего времени существования функции. При каждом следующем вызове функции такие локальные переменные содержат те значения, которые они имели при предыдущем вызове.
> 
>
> Таким образом если я правильно понимаю один раз присвоив ей значения потом не изменить ее. (При каждом следующем вызове функции такие локальные переменные содержат те значения, которые они имели при предыдущем вызове.)

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

## star603 — 2024-09-09 19:49

//+------------------------------------------------------------------+
//| 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)
      n_bar=true;
   else
      n_bar=false;
   return(n_bar);
  }
//+------------------------------------------------------------------+

## ИванМН — 2024-09-09 22:26

```
bool New_bar()
{
   static datetime Data;
   if (Data < Time)
   {
      Data = Time;
      return true;
   }
   return false;
}
```

## star603 — 2024-09-09 23:43

> Цитата (ИванМН):
> 
```
bool New_bar()
> {
>    static datetime Data;
>    if (Data < Time)
>    {
>       Data = Time;
>       return true;
>    }
>    return false;
> }
```

почему мой не подойдет?

## AlexeyVik — 2024-09-10 08:15

> Цитата (star603):
> почему мой не подойдет?

Постарайся описать словами последовательность выполнения своей функции и этой. Может поймёшь логику…

## star603 — 2024-09-24 17:00

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

   if(New_bar()==true)
     {
      for(int i=1; i<250; i++)
        {
         if(candle.Candle_body(i)<10)
            Print("i=",i," ","Data=",Time[i+1],"   ","Body=",candle.Candle_body(i));
        }
     }
[PHP/]

А так работает.

## star603 — 2024-10-02 21:14

double ma31_1 = iMA(_Symbol,PERIOD_CURRENT,31,0,MODE_EMA,PRICE_CLOSE,1);
   double OC = Open-Close;
   Comment(ma31_1);
   if(OrdersTotal()==0)
     {
      if(Open<ma31_1 && Close>ma31_1 && OC<0)
         int ticket=OrderSend(Symbol(),OP_BUY,0.01,Ask,30,0.0,0.0,"My order",magik,0,clrGreen);
      if(Open>ma31_1 && Close>ma31_1 && OC>0)
         int ticket=OrderSend(Symbol(),OP_SELL,0.01,Bid,30,0.0,0.0,"My order",magik,0,clrYellow);
     }
[php\]

Почему используется простая вместо экспотенциальной?

## star603 — 2024-10-12 16:28

Почему 6-ой тип лота не рассчитывается?

## ZenFX — 2024-10-12 23:29

> Цитата (star603):
> Почему 6-ой тип лота не рассчитывается?

Потому что не надо бежать впереди ПАРОВОЗА ))).

## star603 — 2024-10-13 12:38

> Цитата (ZenFX):
> Потому что не надо бежать впереди ПАРОВОЗА ))).

можно подробнее

## star603 — 2024-11-17 15:10

Скажите пожалуйста почему когда указываешь на  новый бар он открывает только  1 сделку и все. А без этого условия открывает и бай и сел и то несколько раз пока условия для открытия сделки выполняется. спасибо.

## star603 — 2024-11-18 20:00

Подскажите пожалуйста почему на новом баре открывается 1 сделка только?

## MakarFX — 2024-11-18 20:04

> Цитата (star603):
> Подскажите пожалуйста почему на новом баре открывается 1 сделка только?

f_IsNewBar() не позволяет

---

Следующая страница: https://forexsystemru.com/threads/65289/page-474
