Подскажите в чем проблема?!

 

Всем привет!

Задача: найти high и low прошлого дня.

   int chas=TimeHour(TimeCurrent());            // определение текущего часа
   int BarSutki=chas+24;                        // последний бар для перебора в прошлых сутках
   for(int k=chas+1; k<=BarSutki; k++)          // перебор
      {
       if (High[k]>maxSutki) maxSutki=High[k];  // определение хая
       if (Low[k]<minSutki) minSutki=Low[k];    // определение лоу
      }
   Print("HighSutki ",maxSutki,", LowSutki ",minSutki);
Хай находит, а лоу пишет 0 (EURJPY,H1: HighSutki 98.243 LowSutki 0).

Пожалуйста, подскажите в чем проблема?

 
WindSW:

Задача: найти high и low прошлого дня.

iHigh(Symbol(), PERIOD_D1, 1);
iLow(Symbol(), PERIOD_D1, 1);
 

а чему у вас равен minSutki - ???? нулю чё ли? 

 
sergeev:
iHigh(Symbol(), PERIOD_D1, 1);
iLow(Symbol(), PERIOD_D1, 1);


Думаю топикстартер имеет ввиду за последние 24 часа

2 WindSW задайте int minSutki = 1000000 и будет Вам счастье

 
sergeev:
iHigh(Symbol(), PERIOD_D1, 1);
iLow(Symbol(), PERIOD_D1, 1);

Как обычно все намного проще :)

Спасибо!

А почему в моем коде Low не определяется и равняется 0?

Пожалуйста, подскажите, возможно подобный перебор пригодиться в будущем

Europa:


Думаю топикстартер имеет ввиду за последние 24 часа

2 WindSW задайте int minSutki = 1000000 и будет Вам счастье

А почему тогда High не требуется задавать 1000000?
 
WindSW:
А почему тогда High не требуется задавать 1000000?
потому что знак сравнения другой.
 
WindSW:

А почему тогда High не требуется задавать 1000000?

задайте 100000 и получите его всегда 100000

Проблема в условии

if (Low[k]<minSutki)

если minSutki равно нулю, то оно никогда больше, чем Low цена не станет

 

Спасибо, помогло!

Теперь Print выдает "GBPUSD,H1: HighSutki 1.5469, LowSutki 1.5395"

Возник еще один вопрос: high рисует линию, а low нет. Что снова не так делаю?

   int chas=TimeHour(TimeCurrent());          // определение текущего часа
   int BarSutki=chas+24;                      // последний бар для перебора в прошлых сутках
   minSutki=10000;
   for(int k=chas+1; k<=BarSutki; k++)        // перебор
    {
     if (High[k]>maxSutki) maxSutki=High[k];  // определение хая
     if (Low[k]<minSutki) minSutki=Low[k];    // определение лоу
    }
   Print("HighSutki ",maxSutki,", LowSutki ",minSutki);
   ObjectCreate("SupSutki",OBJ_TREND,0,Time[BarSutki],minSutki,TimeCurrent(),minSutki);
   ObjectSet("SupSutki",OBJPROP_COLOR,ColorSutki);
   ObjectSet("SupSutki",OBJPROP_STYLE,STYLE_DASH);
   ObjectSet("SupSutki",OBJPROP_WIDTH,1);
   ObjectCreate("ResSutki",OBJ_TREND,0,Time[BarSutki],maxSutki,TimeCurrent(),maxSutki);
   ObjectSet("ResSutki",OBJPROP_COLOR,ColorSutki);
   ObjectSet("ResSutki",OBJPROP_STYLE,STYLE_DASH);
   ObjectSet("ResSutki",OBJPROP_WIDTH,1);
 
WindSW:

Возник еще один вопрос: high рисует линию, а low нет. Что снова не так делаю?

у вас уже создан объект с этим именем. ObjectCreate не перемещает объект на новое место.

Используйте Objectset для TIME/PRICE

 
sergeev:

у вас уже создан объект с этим именем. ObjectCreate не перемещает объект на новое место.

Используйте Objectset для TIME/PRICE

У меня ведь разные имена объектов "SupSutki" и "ResSutki". Или вы какое-то другое название имеете ввиду?
 
WindSW:
У меня ведь разные имена объектов "SupSutki" и "ResSutki". Или вы какое-то другое название имеете ввиду?

нажмите Ctrl+B и сами посмотрите.
Причина обращения: