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

 
VladimirR:

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



Интересно, и что вы ищете. Для нахождения максимальной площади есть и другие варианты. Например аналитический
 
Vinin:

Интересно, а зачем менять дважды в цикле значения счетчиков. И почему то нет присваивания (предварительного) S2. Оно же при старте равно 0, и только на второй итерации (точнее на третьей) идет реальное сравнение значений (зависит от того, как считать от нуля, или от единицы)
Присваивания нет потому что перебор начинается с минимального значения площади оно строго положительно, поэтому 0 вполне устраивает. А где второй раз меняются значения счетчиков?
 
Vinin:

Интересно, и что вы ищете. Для нахождения максимальной площади есть и другие варианты. Например аналитический
Вообще не в задаче дело. Это простенькая задача использована в качестве примера работы оператора break. Мне необходимо знать почему нельзя писать так for(int i=1, j=499; i<500; i++,j--), если при этом не обявлять до цикла переменные i,j чтобы в дальнейшем писать правильные программы!
 
VladimirR:
Вообще не в задаче дело. Это простенькая задача использована в качестве примера работы оператора break. Мне необходимо знать почему нельзя писать так for(int i=1, j=499; i<500; i++,j--), если при этом не обявлять до цикла переменные i,j чтобы в дальнейшем писать правильные программы!

Вероятно, это - ошибка в компиляторе.

Так не компилируется:

for( int i=1, j=499; i<500; i++,j--) //последовательный перебор значений площади

А так компилируется:

int i, j;
for( i=1, j=499; i<500; i++,j--) //последовательный перебор значений площади

И так компилируется:

int i=1, j=499;
for( ; i<500; i++,j--) //последовательный перебор значений площади
 

Всем здрасте!!!

Прошу помочь вытащить из индюка циферку RiskReward. Никак не получается чтоб в советник ее всунуть.

Файлы:
 
demlin:

Всем здрасте!!!

Прошу помочь вытащить из индюка циферку RiskReward. Никак не получается чтоб в советник ее всунуть.


А где исходник?
 

Народ ну что так сложно мне ответить или просто нехотите? Вы же такую шнягу здесь разгребаете, а помоч написать часть кода вам лень. Попробую ещё раз обратиться к вам, если не поможете, пойду на курсы, надоело вас здесь упрашивать.


Ещё раз: После присоединения эксперта на график с первым тиком он фиксирует цену Ask, затем в процессе торгов как только цена возрастёт скажем на 10% (понятно что это быть не может, это образно) эксперт должен уведомить об этом трейдера сообщением «Цена возрсла на 10%»

 
demlin:

Всем здрасте!!!

Прошу помочь вытащить из индюка циферку RiskReward. Никак не получается чтоб в советник ее всунуть.

Перебираете все объекты на чарте, находите объект с именем lbl, вынимаете из него строку FXRanger: Risk:Reward=х.ххх, парсите ее и преобразовываете х.ххх в double.
 

Помогите исправить, если ордера открываются с SL, и если есть два противоположенных ордера, для второго удаляет SL....но этого не надо

Спасибо

void Trailing()
{
//-----
  double Up = iCustom(NULL,0,"NLO",TrailPeriod,0,1);
  double Dn = iCustom(NULL,0,"NLO",TrailPeriod,1,1);
//-----
  int Orders = OrdersTotal();
  for (int i=0; i<Orders; i++)
  {
    if(!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
    if(OrderSymbol() != Symbol()) continue;
    {
      if(OrderType() == OP_BUY && OrderMagicNumber()==Magic && Up > OrderOpenPrice()
      && OrderStopLoss() != Up && (OrderStopLoss() == 0 || Up > OrderStopLoss()))
      {
        OrderModify(OrderTicket(),OrderOpenPrice(),Up,OrderTakeProfit(),0,CLR_NONE);
      }
      if(OrderType() == OP_SELL && OrderMagicNumber()==Magic && Dn < OrderOpenPrice()
      && OrderStopLoss() != Dn && (OrderStopLoss() == 0 || Dn < OrderStopLoss()))
      {
        OrderModify(OrderTicket(),OrderOpenPrice(),Dn,OrderTakeProfit(),0,CLR_NONE);
      }
    }
  }
}
 

Здравствуйте. Я снова не могу справится с примером из учебника.

Задача 17. На первой ферме имеется 1000 овец. Ежедневно количество овец на первой ферме увеличивается на 1%. В тот день, когда количество овец на первой ферме достигает 50 000, 10% овец переводят на вторую ферму. Через какое время количество овец на второй ферме достигнет численности 35 000? (Считать, что в месяце 30 рабочих дней.)

//--------------------------------------------------------------------
// othersheep.mq4
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------------
int start()                               // Специальная ф-ия start()
  {
//--------------------------------------------------------------------
   int
   day,                                   // Текущий день месяца
   Mons;                                  // Искомое количест. месяцев
   double
   One_Farm    =1000.0,                   // Количество на 1 ферме
   Perc_day    =1,                        // Ежедневный подъём, %
   One_Farm_max=50000.0,                  // Пороговое значение
   Perc_exit   =10,                       // Разовый вывод, %
   Purpose     =35000.0,                  // Необх. колич. на 2 ферме
   Two_Farm;                              // Количество на 2 ферме
//--------------------------------------------------------------------
   while(Two_Farm < Purpose)              // До достижения цели
     {                                    // Начало тела внешн. цикла
      //--------------------------------------------------------------
      for(day=1; day<=30 && Two_Farm < Purpose; day++)// Цикл по дням 
        {
         One_Farm=One_Farm*(1+Perc_day/100);//Накопл. на 1 ферме
         if (One_Farm < One_Farm_max)     // Если меньше допустимого,.
            continue;                     // .. то овец не переводим
         Two_Farm=Two_Farm+One_Farm*Perc_exit/100;//Накопл. на 2 ферме
         One_Farm=One_Farm*(1-Perc_exit/100);     //Остаток на 1 ферме
        }
      //--------------------------------------------------------------
      if (Two_Farm>=Purpose)              // Если цель достигнута,..
         continue;                        // .. то месяцы не считаем
      Mons++;                             // Считаем месяцы
     }                                    // Конец тела внешнего цикла
//--------------------------------------------------------------------
   Alert("Цель будет достигнута через ",Mons," мес. и ",day," дн.");
   return;                                // Выход из функции start()
  }
//-------------------------------------------------------------------

В данном примере выход из цикла

 for(day=1; day<=30 && Two_Farm < Purpose; day++)// Цикл по дням 

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

всякий раз когда управление возвращается к нему отчет дней ведется заново, поэтому это не существенно. Но когда происходит выход из цикла

while(Two_Farm < Purpose)              // До достижения цели

"лишний день" остается. И в итоге будет распечатан не верный ответ.

Подскажите, мои рассуждения верны или я что-то не так понял?

Причина обращения: