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

star603

Новичок форума
Код:
     if(fmod(iBars(NULL,PERIOD_CURRENT),5)==1.0)
        Print("ok");
Хотел чтобы на каждом 5ом баре работал. Реализация не удачна?
 

star603

Новичок форума
Покажи куда ты это вставил.
Код:
void VremayTorgovly()
  {
   if(Vremytorg==0)// енум :открытие только одной сделки
     {
      if(OrdersTotal()==0)
        {
         TORGOVLAY();
        }
     }
   if(Vremytorg==1)//енум :открытие только в заданное время
     {
      if(TimeHour(TimeCurrent())==Uhr)
         TORGOVLAY();
     }
   if(Vremytorg==2)//енум открытие на новом баре
     {
      if(f_IsNewBar()==true)
         TORGOVLAY();
     }
   if(Vremytorg==3)//енум открытие на ном баре
     {
     datetime newbar=0;
      int cnt=0;

      if(newbar!=time[i])
        {
         newbar=time[i];
         cnt++;
        }
      if(cnt==5)
        {
         TORGOVLAY();
         Print("Ok");
         cnt=0;
        }
     };
 

MakarFX

Элитный участник
Как-то так
C-подобный:
//--- global parameters
datetime newbar=0;
int cnt=0;
//+------------------------------------------------------------------+
void OnTick()
  {
   if(newbar!=time[0])
     {
      newbar=time[0]; cnt++;
     }
  }
//+------------------------------------------------------------------+
void VremayTorgovly()
  {
   if(Vremytorg==0)// енум :открытие только одной сделки
     {
      if(OrdersTotal()==0)
        {
         TORGOVLAY();
        }
     }
   if(Vremytorg==1)//енум :открытие только в заданное время
     {
      if(TimeHour(TimeCurrent())==Uhr)
         TORGOVLAY();
     }
   if(Vremytorg==2)//енум открытие на новом баре
     {
      if(f_IsNewBar()==true)
         TORGOVLAY();
     }
   if(Vremytorg==3&&cnt==5)//енум открытие на ном баре
     {
      TORGOVLAY();
      cnt=0;
     }
С полным кодом было бы точнее
 

star603

Новичок форума
Как-то так
C-подобный:
//--- global parameters
datetime newbar=0;
int cnt=0;
//+------------------------------------------------------------------+
void OnTick()
  {
   if(newbar!=time[0])
     {
      newbar=time[0]; cnt++;
     }
  }
//+------------------------------------------------------------------+
void VremayTorgovly()
  {
   if(Vremytorg==0)// енум :открытие только одной сделки
     {
      if(OrdersTotal()==0)
        {
         TORGOVLAY();
        }
     }
   if(Vremytorg==1)//енум :открытие только в заданное время
     {
      if(TimeHour(TimeCurrent())==Uhr)
         TORGOVLAY();
     }
   if(Vremytorg==2)//енум открытие на новом баре
     {
      if(f_IsNewBar()==true)
         TORGOVLAY();
     }
   if(Vremytorg==3&&cnt==5)//енум открытие на ном баре
     {
      TORGOVLAY();
      cnt=0;
     }
С полным кодом было бы точнее
Код:
extern int N =5;//На этом баре открывать сделки

   if(Vremytorg==3)//енум открытие на ном баре
     {
      datetime newbar=0;
      int cnt=0;
      if(newbar!=Time[0])
        {
         newbar=Time[0];
         cnt++;
        }
      if(cnt==5)
        {
         TORGOVLAY();
         Print("Ok");
         cnt=0;
        }
     }

Принты не поялвяются
 

MakarFX

Элитный участник
"Print("Ok");" находится внутри "void VremayTorgovly()"
добавь "VremayTorgovly();" в "OnTick()"
C-подобный:
//+------------------------------------------------------------------+
void OnTick()
  {
   if(newbar!=time[0])
     {
      newbar=time[0]; cnt++;
     }
  VremayTorgovly();
}
//+------------------------------------------------------------------+
 

star603

Новичок форума
"Print("Ok");" находится внутри "void VremayTorgovly()"
добавь "VremayTorgovly();" в "OnTick()"
C-подобный:
//+------------------------------------------------------------------+
void OnTick()
  {
   if(newbar!=time[0])
     {
      newbar=time[0]; cnt++;
     }
  VremayTorgovly();
}
//+------------------------------------------------------------------+
в онтике вс работает
 

star603

Новичок форума
Код:
int Nbar()
  {
   if(newbar!=Time[0])
     {
      newbar=Time[0];
      cnt++;
     }
   return(cnt);
  };
Это работает. Боюсь если я добавлю вторую часть будет возвращать мне 0:
 

star603

Новичок форума
Здесь правильно, а "int Nbar()" не нужно делать.
Почему не нужно? У меня по другому не работало. Мне нужно было реализация через пользовательскую функцию. Мне казалось что так менее громоздки код будет и быстрее.
 
Верх