Индикатор Разные вопросы - страница 7

 

Да, но вы должны закодировать его.

Пример:

Местное времяБрокер AБрокер Б
00:00
(GMT)
01:00
(GMT+1)
02:00
(GMT+2)

Вы не можете использовать PERIOD_D1, потому что

  • Бар D1 брокера A начинается в 23:00 по местному времени (на 1 час раньше)
  • Бар D1 брокера B начинается в 22:00 по местному времени (на 2 часа раньше).

Поэтому вы должны использовать бары H1 с iBarShift и iHighest / iLowest (или CopyHigh/CopyLow), чтобы вручную создать ваш "день", как вы хотите.

----

Вот быстрый скрипт, который может проиллюстрировать суть.

Бросьте его на график, и вы увидите, что он рисует прямоугольник вокруг "дня", начинающегося в 23:00 по времени сервера.

#define strict
#property show_inputs

#define DAY 86400
#define HOUR 3600

extern int time_shift = -1; // Hours to shift server time by

void OnStart()
  {
   time_shift*=HOUR;

   datetime oldest_bar = Time[Bars-1],
            midnight   = oldest_bar-(oldest_bar%DAY);

   while(midnight<=TimeCurrent())
     {
      datetime day_begin = midnight + time_shift,
               day_end   = day_begin + DAY - 1;
      double high[],
             low[];
      int high_cnt = CopyHigh(_Symbol, PERIOD_H1, day_begin, day_end, high),
          low_cnt  = CopyLow (_Symbol, PERIOD_H1, day_begin, day_end, low);
      if(high_cnt>0 && low_cnt>0)
        {
         double day_high = high[ArrayMaximum(high)],
                day_low  = low [ArrayMinimum(low)];
         string obj_name = TimeToString(day_begin,TIME_DATE);
         ObjectCreate(0, obj_name, OBJ_RECTANGLE, 0, day_begin, day_high, day_end, day_low);
        }
      midnight+=DAY;
     }
  }  


 
honest_knave:

Да, но вы должны его закодировать.

Я должен изучить этот пример.

Большое спасибо.

 

Еще раз большое спасибо за ваш замечательный пример.
После вашего комментария я легко решил свой вопрос.

---

Я пробовал что-то для смещения времени, автоматически устанавливаемого для разных брокеров, к сожалению, это не сработало.

Вопрос: Могу ли я написать код для автоматической установки смещения времени для разных брокеров, возможно ли это?
(Я все еще пытаюсь что-то сделать для этого)

Спасибо большое.

 

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

Вопрос: Что не так в приведенном ниже коде? (Я не разобрался)

datetime start=(datetime)SymbolInfoInteger(Symbol(),SYMBOL_START_TIME);

Большое спасибо.

 
Max Enrik:

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

Вопрос: Что не так в приведенном ниже коде? (Я не разобрался)

datetime start=(datetime)SymbolInfoInteger(Symbol(),SYMBOL_START_TIME);

Большое спасибо.

Похоже, не все брокеры настраивают это правильно. Пожалуйста, посмотрите здесь
 
honest_knave:
Похоже, не все брокеры настраивают это правильно. Пожалуйста, посмотрите здесь

Нет никаких шансов!
Я просто думаю, что профессиональные программисты и коды сдались?! Конечно, нет. : / (но я)

Большое спасибо.

( У меня есть идея, я попробую, по крайней мере - позже )
 
Max Enrik:

Нет никаких шансов!
Я вот думаю, неужели профессиональные программисты и коды сдались?! Конечно, нет: / (но это так).

Большое спасибо.

( Есть идея, попробую хотя бы - позже )

Всегда есть обходные пути.

Например, вы можете вернуться назад по барам H1 или M30 в поисках временного разрыва больше, чем 1 бар (т.е. рынок был закрыт во время этого разрыва).

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

 
honest_knave:

Всегда есть обходные пути.
Например, вы можете вернуться назад по барам H1 или M30 в поисках временного разрыва больше, чем 1 бар (т.е. рынок был закрыт во время этого разрыва).
Но нужно быть осторожным с выходными и праздничными днями, а также с неполной историей.

Большое спасибо за ваш полезный комментарий.
 

Мне просто нужно узнать о времени даты, потому что до сих пор, когда я пытался написать код, связанный с временем даты, я всегда тратил много времени на эту часть кодов. (даже я успешно закончил свои скрипты, но я никогда не понимал более четко).
Сейчас я пытаюсь получить данные 1-го бара (первый бар текущего дня 1м, 5м, 15м, 30м, 1ч и так далее) дня, но у меня не получается.

( У меня много и много вкладок в браузере google chrome связано с этим - просто бред )

Так что может кто-нибудь помочь мне, как написать код для первого бара дня (M1, 5M и так далее) с примером и объяснением, пожалуйста.

Конечно, завтра я продолжу исследования по этому вопросу.

Заранее большое спасибо.

 

Первый бар дня должен быть первым баром после того, как TimeHour() начал отсчет заново.

Это будет, конечно, первый бар чего-либо M1, M5, M15 и т.д. Они все начинают новые бары.