[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 415

 

Накажи его, в угол поставь. :)

А по существу - излагайте суть проще, фраза построена так, что мозги можно сломать и не понять, что Вы хотите. Никто ведь не знает, чему он от Вас был "научен" до этого.

 
Shniperson:
Господа! как "отучить" советника не торговать ночью ? То есть по терминальному времени с 23 до 02 часов (по Гринвичу).. строчки Hour()>=2&&Hour()<=23 не помогли...

extern int bh = 0; // час начала
extern int bm = 0; // минута начала
extern int eh = 23;// час окончания
extern int em = 2; // минута окончания

int start()
{
   if(TradeTime() && Ваши условия входа) OrderSend(...);
}

bool TradeTime()
  { 
   int TimeNow = 60 * Hour() + Minute();   
   if (60 * bh + bm < TimeNow && TimeNow < 60 * eh + em) return (true);
   return (false);
  }
 

Здравствуйте всем. У меня МТ4 (демо) не связывается с сервером, даже не пытается. Постоянно горит надпись "нет связи". Пробовал "просканировать серверы" - не помогает.

 
Katso:


А прокси по дороге стоит?
 
Vinin:

Нет
 
int start()                         
  {
//--------------------------------------------------------------------
   int
   S1,S2,                                                                 //S1 и S2 площадя следущего и предыдущего прямоугольников соответственно 
   j;                                                                     //значения стороны
//--------------------------------------------------------------------
   for( j=499, int i=1; i<500; i++,j--)                                   //последовательный перебор значений площади
      {
       S2=S1; S1=i*j;                                                     //вычисляем площадь следущую и предыдущую
       if(S2>=S1)                                                         //проверка максимального значения  
         {
          i--; j++;                                                       //возвращаем значения сторон соответствующие максимальной площади
          break;
         }
      }                 
//--------------------------------------------------------------------
Alert("Максимальная площадь равна ",S2,"mm*mm  A=",i,"mm B=",j,"mm");        
return(0);
  }
//--------------------------------------------------------------------

Этот алгоритм работает верно, но если в заголовке оператора for в первом выражение поменять местами операторы присваивания, то программа уже не работает. Почему?

int start()                         
  {
//--------------------------------------------------------------------
   int
   S1,S2,                                                                 //S1 и S2 площадя следущего и предыдущего прямоугольников соответственно 
   j;                                                                     //значения стороны
//--------------------------------------------------------------------
   for(int i=1, j=499; i<500; i++,j--)                                    //последовательный перебор значений площади
      {
       S2=S1; S1=i*j;                                                     //вычисляем площадь следущую и предыдущую
       if(S2>=S1)                                                         //проверка максимального значения  
         {
          i--; j++;                                                       //возвращаем значения соответствующие максимальной площади
          break;
         }
      }                 
//--------------------------------------------------------------------
Alert("Максимальная площадь равна ",S2,"mm*mm  A=",i,"mm B=",j,"mm");        
return(0);
  }
//--------------------------------------------------------------------
 
VladimirR:

Этот алгоритм работает верно, но если в заголовке оператора for в первом выражение поменять местами операторы присваивания, то программа уже не работает. Почему?






for(int i=1, j=499;

объявляете второй раз переменную j

 
ilunga:

объявляете второй раз переменную j

Спасибо)))

 
VladimirR:

Этот алгоритм работает верно, но если в заголовке оператора for в первом выражение поменять местами операторы присваивания, то программа уже не работает. Почему?







Интересно, а зачем менять дважды в цикле значения счетчиков. И почему то нет присваивания (предварительного) S2. Оно же при старте равно 0, и только на второй итерации (точнее на третьей) идет реальное сравнение значений (зависит от того, как считать от нуля, или от единицы)
 

Такой вариант тоже не работает

int start()
{
int S1,S2; //S1 и S2 площадя следущего и предыдущего прямоугольников соответственно
//----
for( int i=1, j=499; i<500; i++,j--) //последовательный перебор значений площади
{
S2=S1; S1=i*j; //вычисляем площадь следущую и предыдущую
if(S2>=S1) //проверка максимального значения
{
i--; j++; //возвращаем значения соответствующие максимальной площади
break;
}
}
//----
Alert("Площадь равна ",S2,"mm*mm A=",i,"mm B=",j,"mm");
return(0);
}
//+------------------------------------------------------------------+