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

star603

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

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

Ugar

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

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

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

star603

Новичок форума
я пробывал код получался длиннее. Мне предложили вот такой вариант:
Лучше так
C-подобный:
Expand Collapse Copy
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-подобный:
Expand Collapse Copy
enum stopi {
    ba,//Фиксированные стопы
    bc,//Торговля без стопов
    bd,//Задаваемые стопы
    bf,//Стопы по МА
    bs,//Стопы по Сар
    bg,//Стопы по теням свечей
    bz,//Стопы по лоу свечам
    br,//Стопы по определенным пунктам
    bt//Торговля в безубыток
    };
"Фиксированные стопы, Задаваемые стопы, Стопы по определенным пунктам"
Если я правильно понял, то это будет расстояние в пунктах для установки стопа.
"Стопы по МА, Стопы по Сар ,Стопы по теням свечей, Стопы по лоу свечам"
Опять таки если я правильно понял, то это будет уже цена для установки стопа
 

MakarFX

Элитный участник
можно на примере?
Если Стопы по определенным пунктам
C-подобный:
Expand Collapse Copy
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+ПУНКТЫ*_Point,OrderTakeProfit(),0)
если Стопы по МА
C-подобный:
Expand Collapse Copy
OrderModify(OrderTicket(),OrderOpenPrice(),Stopi(),OrderTakeProfit(),0)
 

star603

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

MakarFX

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

star603

Новичок форума
Код:
Expand Collapse Copy
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-подобный:
Expand Collapse Copy
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-подобный:
Expand Collapse Copy
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 определение деления должно получиться целое число, но как там же везде дабл. Не пойму. изначально для вычисления будут использоваться целые числа.
 
Верх