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

star603

Новичок форума
Скажите пожалуйста как эффективнее писать так:
Код:
   if(Str==0)
      stgia1s();
   else
      if(Str==1)
         stgia2s();
или так:
Код:
   if(Str==0)
      stgia1s();
   if(Str==1)
      stgia2s();

в чем разница этих написаний? Заранее спасибо.
 

Ugar

Гуру форума
Скажите пожалуйста как эффективнее писать так:
Код:
   if(Str==0)
      stgia1s();
   else
      if(Str==1)
         stgia2s();
или так:
Код:
   if(Str==0)
      stgia1s();
   if(Str==1)
      stgia2s();

в чем разница этих написаний? Заранее спасибо.
В данном примере никакой. Но если будет ещё else, тогда имеет смысл.
Например
Код:
if(i==0) a=x;
else if(i==1)a=y;
else a=z;
Таких else может быть много.

Этот пример только для демонстрации. Конкретно в этой ситуации лучше использовать переключатель switch, он гораздо быстрее чем куча if, else.
 

star603

Новичок форума
я пробывал код получался длиннее. Мне предложили вот такой вариант:
Лучше так
C-подобный:
double Stopi()//Установка стопов
  {
   double _stoploss=0;
   if(Loss==ba){_stoploss=bla bla bla;}
   if(Loss==bc){_stoploss=bla bla bla;}
   if(Loss==bd){_stoploss=bla bla bla;}
   if(Loss==bf){_stoploss=bla bla bla;}
   if(Loss==bs){_stoploss=bla bla bla;}
   if(Loss==bg){_stoploss=bla bla bla;}
   if(Loss==bz){_stoploss=bla bla bla;}
   if(Loss==br){_stoploss=bla bla bla;}
   if(Loss==bt){_stoploss=bla bla bla;}
   return(_stoploss);
  };
 

MakarFX

Элитный участник
я пробывал код получался длиннее. Мне предложили вот такой вариант:
Учитывая разное определение стопа в enum
ты не сможешь получить "double Stopi()" в одной функции,
т.к. одни стопы у тебя в пунктах, а другие цена.
 

MakarFX

Элитный участник
можно на примере?
словами как то трудно понять.
C-подобный:
enum stopi {
    ba,//Фиксированные стопы
    bc,//Торговля без стопов
    bd,//Задаваемые стопы
    bf,//Стопы по МА
    bs,//Стопы по Сар
    bg,//Стопы по теням свечей
    bz,//Стопы по лоу свечам
    br,//Стопы по определенным пунктам
    bt//Торговля в безубыток
    };
"Фиксированные стопы, Задаваемые стопы, Стопы по определенным пунктам"
Если я правильно понял, то это будет расстояние в пунктах для установки стопа.
"Стопы по МА, Стопы по Сар ,Стопы по теням свечей, Стопы по лоу свечам"
Опять таки если я правильно понял, то это будет уже цена для установки стопа
 

star603

Новичок форума
Здравствуйте. Мое последнее сообщение удалили. Я не против просто интересно. Оно что то нарушало? или не по теме. я спрашивал про информационную панель. Заранее спасибо.
 

MakarFX

Элитный участник
Здравствуйте. Мое последнее сообщение удалили. Я не против просто интересно. Оно что то нарушало? или не по теме. я спрашивал про информационную панель. Заранее спасибо.
Ты спрашивал "где прочитать?", а не "как сделать?"
Вопрос подразумевал получение ссылки на сторонний ресурс.
А вообще для таких вопросов есть поисковик.
 

star603

Новичок форума
Код:
extern int Uhr = 23;
//##################################################################################
int Timer()
  {
   int h=TimeHour(TimeCurrent());
   return(h);
  }
//##################################################################################
void VremayTorgovly()
  {
   if(Vremytorg==0)// енум :открытие только одной сделки
     {
      if(OrdersTotal()==0)
        {
         TORGOVLAY();
        }
     }
   if(Vremytorg==1)//енум :открытие только в заданное время
     {
      Timer();
      if(h==Uhr)
         TORGOVLAY();
     }
   if(Vremytorg==2)
     {
     }
  };
//##################################################################################
На сколько рабочая часть может быть? Скажите пожалуйста.
 

MakarFX

Элитный участник
На сколько рабочая часть может быть? Скажите пожалуйста.
Рабочая, но много лишнего
C-подобный:
input int Uhr = 23;
//##################################################################################
void VremayTorgovly()
  {
   if(Vremytorg==0)// енум :открытие только одной сделки
     {
      if(OrdersTotal()==0)
        {
         TORGOVLAY();
        }
     }
   if(Vremytorg==1)//енум :открытие только в заданное время
     {
      if(TimeHour(TimeCurrent())>=Uhr)
         TORGOVLAY();
     }
   if(Vremytorg==2)
     {
     }
  };
//##################################################################################
 

star603

Новичок форума
Рабочая, но много лишнего
C-подобный:
input int Uhr = 23;
//##################################################################################
void VremayTorgovly()
  {
   if(Vremytorg==0)// енум :открытие только одной сделки
     {
      if(OrdersTotal()==0)
        {
         TORGOVLAY();
        }
     }
   if(Vremytorg==1)//енум :открытие только в заданное время
     {
      if(TimeHour(TimeCurrent())>=Uhr)
         TORGOVLAY();
     }
   if(Vremytorg==2)
     {
     }
  };
//##################################################################################
Подскажи что именно лишнего? только то что ты изменил?
 

MakarFX

Элитный участник
Можно просто равно. Тут суть в том что,
при (==) торговля будет только в этот час,
если (>=) торговля будет начиная с этого часа до конца дня
 

star603

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