Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Следи за новостями. Заходи на официальный канал нашей компании!
WindSW
269
WindSW 2012.01.10 13:30 

Всем привет!

Задача: найти 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).

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

o_o
Модератор
23712
o_o 2012.01.10 13:35  
WindSW:

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

iHigh(Symbol(), PERIOD_D1, 1);
iLow(Symbol(), PERIOD_D1, 1);
Europa
984
Europa 2012.01.10 13:38  

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

Europa
984
Europa 2012.01.10 13:40  
sergeev:
iHigh(Symbol(), PERIOD_D1, 1);
iLow(Symbol(), PERIOD_D1, 1);


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

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

WindSW
269
WindSW 2012.01.10 13:46  
sergeev:
iHigh(Symbol(), PERIOD_D1, 1);
iLow(Symbol(), PERIOD_D1, 1);

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

Спасибо!

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

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

Europa:


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

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

А почему тогда High не требуется задавать 1000000?
o_o
Модератор
23712
o_o 2012.01.10 13:47  
WindSW:
А почему тогда High не требуется задавать 1000000?
потому что знак сравнения другой.
ilunga
744
ilunga 2012.01.10 13:48  
WindSW:

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

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

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

if (Low[k]<minSutki)

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

WindSW
269
WindSW 2012.01.10 13:55  

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

Теперь 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);
o_o
Модератор
23712
o_o 2012.01.10 14:03  
WindSW:

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

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

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

WindSW
269
WindSW 2012.01.10 14:08  
sergeev:

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

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

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

нажмите Ctrl+B и сами посмотрите.
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий