Пишите что нужно добавить в терминал для его улучшения - страница 3

 
А вот такой пробуйте, скрипт

for (int n=0 ; n<100;n++)
{
if (iTime(Symbol(),PERIOD_D1,0)<iTime(Symbol(),PERIOD_M15,n))
Comment(TimeToStr(iTime(Symbol(),PERIOD_M15,n)));
}
 
zhuki >>:
А вот такой пробуйте, скрипт



Если Вы не заметили, то это тема пожеланий работы терминала. Внести изменения в терминал может только разработчик.
Спасибо за Ваше участие, но я знаю MQL практически наизусть. У меня есть вариант как обойти недоразумение, с которым я столкнулся. Мне не нужны советы пользователей, даже если это супер-программеры. В том числе и Ваши. Мне нужен ответ разработчиков.
 
drknn >>:
Ну вот и всё. Код работает как часики. И всё бы хорошо, если бы советник не нужно было бы использовать на акциях. Например, котировки по некой акции начинаются не в ноль часов, как на валютных парах, а, скажем, в 8 утра.

#define DAY_SECONDS 86400

int GetBeginSessionBar( string Symb, int TimeFrame )
{
  int T = MarketInfo(Symb, MODE_TIME);
  
  T -= T % DAY_SECONDS;
  
  int Pos = iBarShift(Symb, TimeFrame, T);
  
  if (iTime(Symb, TimeFrame, Pos) < T)
    Pos--;
    
  return(Pos);
}

void start()
{
  Print(TimeToStr(Time[GetBeginSessionBar(Symbol(), Period())]));
  
  return;
}
 
getch, спасибо за предложенное решение как обойти проблему. Я и сам знаю как обойти - несколько способов знаю. Выбрал себе самый простой и осуществил это в коде. Но это не снимает проблемы - терминал по-прежнему не верно выдаёт время старта дня для не-форекс инструментов - для тех, которые стартуют не в ноль часов.
Да и тестер, который цены бид и аск берёт из окна реалтайма для того же дакса... короче, мне нужно не решение, как обойти проблему, а её устранение.
 
drknn >>:

Прогнал вышеприведенный скрипт по десятку торговых инструментов в нескольких ДЦ. Вроде, время старта для не-форекс инструментов показывает правильно.
Со стороны терминала описание ошибки не понял.

 
Пишем простой скрипт:
int start(){
  Alert("Сегодняшний день по инструменту  ",Symbol(),"  начался в  ",iTime(Symbol(),PERIOD_D1,0),"  секунд");
  return(0);
}
Компилируем, кидаем на разные инструменты. Вот результаты его сегодняшней работы:

Сегодняшний день по инструменту EURUSD начался в 1269561600 секунд
Сегодняшний день по инструменту EURGBP начался в 1269561600 секунд
Сегодняшний день по инструменту GBPUSD начался в 1269561600 секунд
  

.....

Это на валютных парах. Теперь кидаем на CFD:

Сегодняшний день по инструменту FDAXM0 начался в 1269561600 секунд
Сегодняшний день по инструменту ESM0 начался в 1269561600 секунд

На акции:

Сегодняшний день по инструменту #AAPL начался в 1269561600 секунд
Сегодняшний день по инструменту #CSCO начался в 1269561600 секунд

Этот эксперимент показывает, что код iTime(Symbol(),PERIOD_D1,0) выдаёт одинаковое время открытия дневной свечи как для форекс, так и для не-форекс инструментов. То есть. для не-форекс-инструментов выдаётся ошибочное время открытия дня.

Зачем же "изобретать велосипед", выдумывапть всякие способы обхода проблемы, если в справочнике метаэдитора чётко сказано:
datetime iTime( string symbol, int timeframe, int shift) 
Возвращает значение времени открытия указанного параметром shift бара с соответствующего графика (symbol, timeframe). В случае ошибки функция возвращает 0.
Я в параметры этой функции указал текущий символ, период D1 и смещение = нулю. То есть, указал, что это нулевая дневная свеча. Если в справке языка написано, что функция "Возвращает значение времени открытия указанного бара", то я должен получить значение времени открытия указанного бара, а не чёрти чего, относящееся к другому инструменту. Не форекс инструмент открывается не в ноль часов и соответственно время открытия его нового бара на D1 не долджно соответсововать нулю часов текущих суток. А функция как раз и возвращает время открытия некорректное, понимаете?

Тема этой ветки форума "Пишите что нужно добавить в терминал для его улучшения". Предлагаю добавить в терминал устранение некорректности работы функции  iTime() для таймфрейма D1 не-форекс инструментов.
Остановимся пока на этом.
 
drknn >>:
Пишем простой скрипт:
Компилируем, кидаем на разные инструменты. Вот результаты его сегодняшней работы:

Сегодняшний день по инструменту EURUSD начался в 1269561600 секунд
Сегодняшний день по инструменту EURGBP начался в 1269561600 секунд
Сегодняшний день по инструменту GBPUSD начался в 1269561600 секунд


.....

Это на валютных парах. Теперь кидаем на CFD:

Сегодняшний день по инструменту FDAXM0 начался в 1269561600 секунд
Сегодняшний день по инструменту ESM0 начался в 1269561600 секунд

На акции:

Сегодняшний день по инструменту #AAPL начался в 1269561600 секунд
Сегодняшний день по инструменту #CSCO начался в 1269561600 секунд

Этот эксперимент показывает, что код iTime(Symbol(),PERIOD_D1,0) выдаёт одинаковое время открытия дневной свечи как для форекс, так и для не-форекс инструментов. То есть. для не-форекс-инструментов выдаётся ошибочное время открытия дня.

Зачем же "изобретать велосипед", выдумывапть всякие способы обхода проблемы, если в справочнике метаэдитора чётко сказано:
Я в параметры этой функции указал текущий символ, период D1 и смещение = нулю. То есть, указал, что это нулевая дневная свеча. Если в справке языка написано, что функция "Возвращает значение времени открытия указанного бара", то я должен получить значение времени открытия указанного бара, а не чёрти чего, относящееся к другому инструменту. Не форекс инструмент открывается не в ноль часов и соответственно время открытия его нового бара на D1 не долджно соответсововать нулю часов текущих суток. А функция как раз и возвращает время открытия некорректное, понимаете?

Тема этой ветки форума "Пишите что нужно добавить в терминал для его улучшения". Предлагаю добавить в терминал устранение некорректности работы функции iTime() для таймфрейма D1 не-форекс инструментов.
Остановимся пока на этом.

а на мой взгляд все правильно, день начинается в 00:00 )))))

 
datetime iTime( string symbol, int timeframe, int shift) 
Возвращает значение времени открытия указанного параметром shift бара
Время открытия бара, понимаете, БАРА, а не время начала суток.
 
Тогда надо бы добавить ещё 3 параметра: на время закрытия, время максимума и минимума свечи.
И да будет полный бардак в таймсериях!
 
Zhunko >>:
Тогда надо бы добавить ещё 3 параметра: на время закрытия, время максимума и минимума свечи.
И да будет полный бардак в таймсериях!


Это зачем такой бардак вносить? Может лучше навести порядок в том, что уже имеется?